11.2. BLE-pino¶
Verkostoinnin tavoin Bluetooth Low Energy on rakennettu kerrospinoksi, jossa kukin kerros ratkaisee yhden ongelman ja tarjoaa siistin abstraktion yläpuolelle. Alla olevat nimet tulevat suoraan Bluetooth Core -spesifikaatiosta ja esiintyvät aioble- ja bluetooth-rajapinnoissa.
Bluetooth Low Energy -pino. Kukin kerros ojentaa siistimmän abstraktion ylöspäin seuraavalle, samaa mallia kuin verkostointipino käyttää.¶
Fyysinen kerros. Siirtää bittejä kahden laitteen välillä 2.4 GHz:n radiolla. Kanavavalinta, modulaatio, lähetysteho. Kameran tehtävä on olla virroitettuna; piisiru hoitaa loput.
Linkkikerros. Siirtää paketteja kahden laitteen välillä, jotka suostuvat puhumaan keskenään. Lisää laiteosoitteet, jotta kukin paketti voidaan suunnata yhdelle naapurille, aikatauluttaa määräaikaiset radiotapahtumat, jotka muodostavat yhteyden, ja hoitaa minkä tahansa paketin uudelleenlähetyksen, jota vastaanottaja ei kuitannut.
Generic Access Profile (GAP). Löytymis- ja yhteyskerros. Määrittelee neljä roolia – broadcaster, observer, peripheral, central – ja mainostus- / skannaus-protokollan, joka antaa kahden laitteen löytää toisensa ylipäätään, sekä menettelyn yhteyden avaamiseksi ja sulkemiseksi niiden välillä. Tässä asuvat osoitteet, mainostuksen hyötykuormat, yhteysparametrit ja paritus.
Generic Attribute Profile (GATT). Datakerros. Istuu avoimen GAP-yhteyden päällä ja tarjoaa pienen avain/arvo-tietokannan: toinen puoli isännöi puuta nimetyistä arvoista, joita kutsutaan ominaisuuksiksi, toinen puoli lukee, kirjoittaa tai tilaa niitä. Tässä virtaavat varsinaiset sovellustavut.
Sovellus. Mitä tahansa kamera ja vertaislaite sopivat tavujen tarkoittavan. Bluetooth SIG julkaisee standardi-profiileja – sykemittaus, akun varaustaso, ympäristön mittaus – jotka määrittelevät yleisesti käytetyt ominaisuudet, jotta toisiinsa liittymättömät laitteet voivat toimia yhteen, mutta mikä tahansa sovellus saa vapaasti määritellä omansa.
11.2.1. Miten kerrokset pinoutuvat suoritusaikana¶
Malli vastaa verkostointipinoa:
Sovelluksen tavut menevät ominaisuusarvoon.
GATT kääräisee sen otsakkeella, joka tunnistaa, mille ominaisuudelle tavut kuuluvat.
GAP pitää avointa yhteyttä käynnissä, jotta GATT:lla on jonnekin lähettää.
Linkkikerros kääräisee koko joukon pakettiin, osoitettuna vertaislaitteen osoitteeseen, ja aikatauluttaa radiotapahtuman sen lähettämiseksi.
Fyysinen kerros muuttaa paketin lyhyeksi 2.4 GHz:n radiopurskeeksi.
Fyysinen kerros ja linkkikerros ovat lähes näkymättömiä Pythonista – piisiru ja radion laiteohjelmisto hoitavat ne. GAP:sta ylöspäin kameran Python-koodi saa enemmän sanottavaa.
11.2.2. Kaksi kerrosta, jotka käyttäjälle näkyvä rajapinta hiljaa ohittaa¶
Bluetooth-spesifikaatio nimeää kaksi muuta kerrosta, jotka istuvat linkkikerroksen ja GAP/GATT:n välissä: Host Controller Interface (HCI) – protokolla, jota isäntä-CPU käyttää erillisen radiosirun ohjaamiseen – ja L2CAP – multiplekseri, joka jakaa yhden linkkikerroksen yhteyden useaksi loogiseksi kanavaksi.
Kumpikaan ei ole näkyvissä aioble-rajapinnassa, mutta kumpikaan ei katoa. HCI istuu BLE-portin sisällä ja on näkymätön, ellei mukautettu MicroPython-käännös ole pelissä, ja L2CAP on kantaja, jonka päällä GATT toimii. Sovellus, joka haluaa raakatavuvirtoja, voi varata oman L2CAP-kanavansa (L2CAP-kanavat).