BLE mikroskopioan (ATTы GATTы...)

BLE mikroskopioan (ATTы GATTы...)

BLE mikroskopioan (ATTы GATTы...)

1. zatia, ikuspegi orokorra

Denbora dezente igaro da Bluetooth 4.0rako lehen zehaztapena kaleratu zenetik. Eta, BLE gaia oso interesgarria den arren, oraindik garatzaile asko atzeratzen ditu bere konplexutasunagatik. Nire aurreko artikuluetan, maila baxuenari begiratu nion batez ere, esteka-geruza eta geruza fisikoa. Horri esker, Attribute Protocol (ATT) eta General Attribute Profile (GATT) bezalako kontzeptu konplexu eta nahasgarrietara jo beharrik ekidin genuen. Hala ere, ez dago inora, ulertu gabe, ezinezkoa da gailu bateragarriak garatzea. Gaur ezagutza hau zurekin partekatu nahiko nuke. Nire artikuluan oinarrituko naiz testu liburua Nordic webgunetik hasiberrientzat. Beraz, has gaitezen.

Zergatik da hain zaila dena?

Nire ustez, berehala argi geratu zen telefono adimendunen bidez gailuak kudeatzea oso gai itxaropentsua eta iraunkorra dela. Hori dela eta, berehala eta ahalik eta gehien egituratzea erabaki zuten. Beraz, hainbat tramankuluen fabrikatzaileek ez dezaten beren protokolorik sortu, gero bateraezinak izango direnak. Hortik zailtasuna. Lehen fasean jada, BLE protokoloan ahal dena estutzen saiatu ziren. Eta ez du axola geroago erabilgarria izango den ala ez. Horrez gain, etorkizunerako gailuen zerrenda zabaltzeko aukera eman zuten.

Ikus dezagun BLE protokoloaren diagrama marraztuta dagoen irudiari. Hainbat geruzaz osatuta dago. Geruza fisikorik baxuena (PHY) da gailuaren irrati-kanalaren arduraduna. Link Layer (LL) igorritako mezuko byte-sekuentzia osoa dauka. Aurreko artikuluetan zehazki hori aztertu genuen. Host Controller Interface (HCI) BLE geruzen edo txip-en arteko truke-protokolo bat da, kontrolatzailea eta ostalaria txip desberdinetan ezartzen badira. Logical Link Control and Adaptation Protocol (L2CAP) paketeen eraketaz, enkoadratuz, akatsen kontrolaz eta paketeen muntaketaz arduratzen da. Security Manager Protocol (SMP) paketeak enkriptatzeaz arduratzen da. Sarbide Orokorreko Profila (GAP) gailuen arteko hasierako datu-trukeaz arduratzen da "Nor da nor" zehazteko. Eskaneatzea eta publizitatea ere barne hartzen ditu. Artikulu honetan protokoloaren gainerako bi zatietan zentratuko naiz: GATT eta ATT. GATT ATTen gainegitura bat da, beraz, estuki lotuta daude.

BLE mikroskopioan (ATTы GATTы...)

Istorioa sinplifikatzeko, analogia batera jo nahiko nuke. Nonbait entzun nuen eta lagundu nahi nuke. Pentsa BLE gailu bat hainbat apal dituen liburu-aska gisa. Apalategi bakoitza gai bat da. Adibidez, zientzia-fikzioa, matematika eta entziklopediak dituzten apalak ditugu. Apalategi bakoitzean gai zehatz bat duten liburuak daude. Eta liburu batzuek paperezko laster-markak ere badituzte oharrekin. Horrez gain, liburu guztien paperezko katalogo txiki bat dugu. Gogoratzen baduzue, eskolako liburutegiak paperezko txarteldun kutxa estu bat dira. Analogia honekin, armairua gure gailuaren profila da. Apalategiak zerbitzuak dira, liburuak ezaugarriak eta katalogoa atributu-taula bat da. Liburuetako laster-markak deskribatzaileak dira, eta horietaz ere hitz egingo dut geroago zehatzago.

Gailuak garatu dituen edonork badaki proiektu askok antzeko kode zatiak dituztela. Kontua da gailu askok antzeko funtzionalitateak dituztela. Adibidez, gailuak bateriez elikatzen badira, orduan kargatzeko eta haien maila kontrolatzeko arazoa berdina izango da. Gauza bera gertatzen da sentsoreekin. Egia esan, objektuetara bideratutako programazioa "Propietateak eta jokabideak konbinatzen dituzten objektuak sortzeko gaitasuna ematen du, gero berrerabili ahal izateko batasun autonomo batean". Nire ustez, BLE antzeko planteamendu bat saiatu zen. Profilak Bluetooth Interes Bereziko Taldeak (SIG) garatu zituen. Profil berdinak dituzten fabrikatzaile desberdinetako gailuek zailtasunik gabe funtzionatu beharko lukete elkarren artean. Profilak, berriz, zerbitzuek eta ezaugarrien zerbitzuek osatzen dute, deskribatzaileez osatuta. Oro har, honelakoa izan daiteke:

BLE mikroskopioan (ATTы GATTы...)

Adibidez, kontuan hartu bihotz-taupadaren monitore baten profil diagrama (fitness eskumuturrekoa). Bi zerbitzuk eta hainbat ezaugarrik osatzen dute. Hortik berehala argitzen da profilaren hierarkia. Kontrol-puntuaren ezaugarriak kaloria-gastuaren guztizko kopurua zerora berrezartzen du.

1. Bihotz-taupadaren zerbitzuak hiru ezaugarri ditu (0x180D):
    a) Derrigorrezko bihotz-maiztasunaren ezaugarria (0x2A37)
    b) Gorputz sentsorearen aukerako posizioaren ezaugarria (0x2A38)
    c) Bihotz-taupadak kontrolatzeko puntuaren baldintzapeko ezaugarriak (0x2A39)
2. Bateriaren mantentze-zerbitzua (0x180F):
    a) Derrigorrezko bateriaren karga-mailaren ezaugarria (0x2A19)

UUID

Profileko elementuak (zerbitzuak, ezaugarriak eta deskribatzaileak) modu bakarrarekin atzitzeko, denak nolabait zenbakitu behar ditugu. Horretarako, Unibertsalki Bakarra ID (UUID) edo Unibertsalki Bakarra Identifikatzailea bezalako kontzeptu bat sartzen da. Lerro bakoitzaren kortxeteen artean UUID adierazten da. Eta berezitasun bat dago hemen. UUIDrako, 16 eta 128 biteko kode bat erabiltzea erabaki dugu. Zergatik, galdetzen duzu? BLE protokoloan, dena energiaren kontserbazioari buruzkoa da. Beraz, 16 bit-en dimentsioa nahiko arrazoizkoa da. Nekez sortuko dira etorkizun hurbilean 65 mila baino gehiago. zerbitzu eta ezaugarri bereziak. Momentuz, jada zenbatu zitezkeen guztia (gogoratu nondik datorren hau - “zu ere zenbatu zaitu” :-)) Zenbakitutako elementuak profilak, zerbitzuak, ezaugarriak и deskribatzaileak estekak begiratu ditzakezu.

Hala ere, uste dut mundu guztiak gogoan duela istorioa Interneten 4 byte IP helbideekin. Hasieran nahikoa zela uste genuen, baina orain oraindik ezin dugu 6 byteko helbide batera aldatu. Akats hau ez errepikatzeko eta brikolajeen esku ludikoei askatasuna emateko, SIGek berehala erabaki zuen 128 biteko UUIDak sartzea. Honek pertsonalki 433 MHz-ko lizentziarik gabeko banda gogorarazten dit, zeina irrati katetik Kulibin mota guztiei ematen zitzaien. Gure kasuan, zerbitzuen eta ezaugarrien 128 biteko identifikatzaile bat atera zen. Horrek esan nahi du guk, gure zerbitzu eta gailuetarako, ia 128 biteko edozein balio erabil dezakegula. Dena den, UUID bera ateratzeko probabilitatea zerora jotzen du.

Izan ere, 16 biteko UUID laburrek 128 biteko baliorako luzapena dute. Zehaztapenean, luzapen hau Bluetooth Base UUID deitzen da eta 00000000-0000-1000-8000-00805F9B34FB balioa du. Adibidez, 16 biteko UUID atributuak 0x1234 balioa badu, 128 biteko UUID baliokideak 00001234-0000-1000-8000-00805F9B34FB balioa izango du. Eta dagokion formula ere ematen da:

                                128_bit_value = 16_bit_value * 2^96 + Bluetooth_Base_UUID

Ez dakit nondik datorren zenbaki magiko hau. Irakurleren batek badaki, idatzi dezala iruzkinetan (Sinopteek ezizena duen erabiltzaile batek egin du dagoeneko. Ikusi iruzkinak). 128 biteko UUID-ak sortzeari dagokionez, printzipioz berezi bat erabil dezakezu sortzaileanork egingo dizun.

ATTy GATTy...

Egia esan, orduan hasten da dibertsioa. Gogorarazten dizut ATT bezero-zerbitzari harremanean oinarritzen dela. Orain zerbitzariaren gailuari begira gaude. Informazioa jasotzen du, hala nola, sentsoreen balioak, argiaren etengailuaren egoera, kokapenaren datuak, etab. Orain "gure alardeko parte-hartzaile" guztiak zenbatuta daudenez, gailuaren memorian jarri behar ditugu nolabait. Horretarako, atributu-taula izeneko taula batean jartzen ditugu. Ondo gogoratu hau. Hau da BLEren bihotza. Hau da gehiago aztertuko duguna. Orain lerro bakoitzari atributu deituko diogu. Mahai hau pila-sakon kokatuta dago eta, oro har, ez dugu bertara sarbide zuzenik. Hasieratu eta bertara sartzen gara, baina barruan gertatzen dena zazpi zigiluren atzean ezkutatzen zaigu.

Ikus dezagun zehaztapeneko irudia, baina horren aurretik, berehala nabarmendu nahi nuke maiz nahasmena duten terminoetan, hots, deskribatzaileetan. Deskribatzailearen eginkizuna ezaugarriaren deskribapena osatzea da. Bere gaitasunak zabaldu behar direnean, deskribatzaileak erabiltzen dira. Atributuak ere badira, eta zerbitzuak eta ezaugarriak bezala, atributuen taulan kokatzen dira. Artikuluaren bigarren zatian zehatz-mehatz aztertuko ditugu. Hala ere, batzuetan deskribatzaileek atributuen taulako errenkada-zenbakiari egiten diote erreferentzia. Hau kontuan izan behar da. Nahasketa saihesteko, "atributu erakuslea" terminoa erabiliko dugu helburu hauetarako.
BLE mikroskopioan (ATTы GATTы...)

Beraz, atributu bat balio diskretu bat da, harekin erlazionatutako propietate hauek dituena:
1. Atributuaren heldulekua atributuari dagokion taula-indizea da
2. Atributu mota bere mota deskribatzen duen UUID bat da
3. Atributuaren balioa atributu-erakusleak indexatutako datuak dira
4. Atributu-baimenak atributu baten zatia dira, baimenak, atributu-protokoloa erabiliz irakurri edo idatzi ezin dena.

Nola ulertu hau guztia? Atributu-erakuslea, erlatiboki hitz eginez, gure taulako bere zenbakia da.
Irakurtzeko edo idazteko eskaeretan atributu bat erreferentzia egiteko aukera ematen dio bezeroari. Gure lerroak (atributuak) 0x0001etik 0xFFFFra zenbaki ditzakegu. Liburutegiarekin dugun elkartean, hau da paperezko katalogoko txartelaren zenbakia. Era berean, liburutegiko katalogoan bezala, txartelak geroz eta hurrenkeran ordenatuta daude. Ondorengo lerro bakoitzaren kopurua aurrekoa baino handiagoa izan behar da. Liburutegian bezala, batzuetan txartel batzuk galtzen dira, beraz, gurekin, baliteke lerroen zenbakian hutsuneak egotea. Hau onartzen da. Gauza nagusia progresiboki joaten direla da.

Atributu motak zehazten du atributuak zer adierazten duen. C hizkuntzarekin analogia eginez,
non aldagai boolearrak, zenbakizkoak eta kateak dauden, beraz, hemen dago. Atributu motaren arabera ezagutzen dugu
zertaz ari garen eta nola jarraitu dezakegun atributu honekin lanean. Jarraian, ezaugarri mota zehatz batzuk ikusiko ditugu. Adibidez, "zerbitzu-adierazpena" (0x2800), "ezaugarriaren deklarazioa" (0x2803), "deskribatzaileen adierazpena" (0x2902).

Atributu baten balioa bere benetako esanahia da, barkatu tautologia. Atributu mota kate bat bada, orduan atributuaren balioa izan daiteke, adibidez, "Kaixo Mundua !!!" leloa. Atributu mota "zerbitzu-adierazpena" bada, bere balioa zerbitzua bera da. Eta batzuetan, beste atributu batzuk eta haien propietateak non aurki daitezkeen informazioa da.

Atributu-baimenei esker, zerbitzariak irakurtzeko edo idazteko sarbidea onartzen duen uler dezake.
Kontuan izan baimen hauek atributu-balioari soilik aplikatzen zaizkiola, eta ez erakusleari, motari edo baimen-eremuari berari. Horiek. atributuen grabaketa onartzen bada, orduan alda dezakegu, adibidez, "Hello World !!!" lerroa. “Egun on” lerrora. Baina ezin dugu debekatu lerro berri bat idaztea edo atributu mota aldatu eta lerroa "zerbitzu-adierazpen" gisa izendatu. Bezero bat zerbitzari batekin harremanetan jartzen denean, bezeroak bere atributuak eskatzen ditu. Horri esker, bezeroak zerbitzariak eman dezakeena jakin dezake. Balioak irakurtzea eta idaztea beharrezkoa ez den arren.

Nolakoa da

GATT kontzeptua atributu-taula batean atributuak multzokatzea da, ordena oso zehatz eta logiko batean. Ikus dezagun behean bihotz-maiztasunaren profila. Taula honen ezkerreko zutabea aukerakoa da. Besterik gabe, lerro hau (atributua) zer den deskribatzen digu. Beste zutabe guztiak ezagunak zaizkigu jada.

BLE mikroskopioan (ATTы GATTы...)

Talde bakoitzaren goialdean beti dugu zerbitzu-adierazpen-atributu bat. Bere mota beti da 0x2800, eta erakuslea taulan dagoeneko zenbat atributu dauden araberakoa da. Bere baimenak irakurtzeko soilik dira beti, inolako autentifikazio edo baimenik gabe. Kontzeptu horiei buruz hitz egingo dugu pixka bat geroago. Balioa zerbitzua zer den identifikatzen duen beste UUID bat da. Taulan, balioa 0x180D da, Bluetooth SIG-k bihotz-taupadaren zerbitzu gisa definitzen duena.

Zerbitzuaren iragarpenaren ondoren, ezaugarriaren iragarpena dator. Zerbitzu-aitorpenaren antzekoa da. Bere UUIDa 0x2803 da beti, eta bere baimenak irakurtzeko soilik dira beti autentifikazio edo baimenik gabe. Ikus dezagun Atributuen Balioaren eremua, zeinak datu batzuk barne hartzen dituen. Erakusle bat, UUID bat eta propietate multzo bat ditu beti. Hiru elementu hauek balio ezaugarriaren ondorengo deklarazioa deskribatzen dute. Erakusleak berez adierazten du ezaugarri-balioaren deklarazioaren kokapena atributu-taulan. UUID-ek zer informazio edo balio mota espero dezakegun deskribatzen du. Adibidez, tenperaturaren balioa, argiaren etengailuaren egoera edo beste balio arbitrarioren bat. Eta, azkenik, propietateak, balio ezaugarriarekin nola interakzionatu daitekeen deskribatzen dutenak.

Beste zulo bat itxaroten digu hemen. Atributu-baimenekin eta ezaugarri-propietateekin lotuta dago. Ikus dezagun zehaztapeneko bit eremuaren propietateen irudia.

BLE mikroskopioan (ATTы GATTы...)

Ikus dezakezunez, hemen irakurtzeko eta idazteko gaitasunak eskaintzen dituzten eremuak ere badaude. Galdetzen ari zara zergatik ditugun atributu eta jabetzarako irakurtzeko/idazteko baimenak
irakurri/idatzi balio ezaugarrietarako? Ez al dira beti berdinak izan behar? Izan ere, ezaugarri-balioaren propietateak GATT-en eta aplikazio-geruzetan erabiltzen diren bezeroentzako gomendioak baino ez dira. Hauek bezeroak ezaugarri deklarazio-atribututik espero dezakeenari buruzko aholkuak besterik ez dira. Ikus dezagun xehetasun gehiago. Zer baimen mota ditu atributu batek?

1. Sarbide-baimenak:
     - irakurketa
     — erregistroa
     - irakurri eta idatzi
2. Autentifikazio-baimena:
     - autentifikazioa behar da
     - Ez da autentifikaziorik behar
3. Baimen baimena:
     — baimena behar da
     - Ez da baimenik behar

Atributuen bereizmenaren eta ezaugarri ezaugarrien arteko desberdintasun nagusia zerbitzariei aplikatzen zaiela lehenak, eta bezeroei bigarrenak. Baliteke zerbitzariari balio ezaugarria irakurtzeko baimena ematea, baina baliteke autentifikazioa edo baimena behar izatea. Beraz, bezeroak ezaugarriaren propietateak eskatzen dituenean, irakurketa baimenduta dagoela jasoko dugu. Baina irakurtzen saiatzen garenean, errore bat jasoko dugu. Hori dela eta, segurtasunez hitz egin dezakegu baimenen lehentasunari buruz propietateei buruz. Bezeroaren aldetik, ezin dugu atributu batek zer baimen dituen jakin.

Deskribatzailea

Itzuli gaitezen gure mahaira. Ezaugarri baten balioa deklaratu ondoren, ondorengo atributu-adierazpenak posible dira:
1. Ezaugarrien aitorpen berria (zerbitzu batek ezaugarri asko izan ditzake)
2. Zerbitzu-aitorpen berria (taulan horietako asko egon daitezke)
3. Heldulekua deklaratzea

Bihotz-taupadak neurtzeko ezaugarriaren kasuan, gure taulan, ezaugarriaren balioaren deklarazioa deskribatzailearen deklarazioarekin batera dator. Deskribatzailea ezaugarri bati buruzko informazio gehigarria duen atributua da. Hainbat deskribatzaile mota daude. Horiei buruz zehatz-mehatz hitz egingo dugu artikulu honen bigarren zatian. Oraingoz, Bezeroaren Ezaugarrien Konfigurazio Deskribatzailea (CCCD) bakarrik ukituko dugu. 0x2902-ren UUID bat du. Deskribatzaile hau erabiliz, bezeroak zerbitzarian adierazpidea edo jakinarazpena gaitzeko gaitasuna du. Haien arteko aldea txikia da, baina oraindik hor. Jakinarazpenak ez du bezeroak jaso izanaren berrespena eskatzen. Adierazpenak hori eskatzen du, nahiz eta GATT mailan gertatzen den, aplikazio mailara ez iristen. Zergatik, galdetzen duzu? Ai, ez dakit hau. Esan iezadazu iparraldeko adituek jakinarazpenak erabiltzea gomendatzen dutela. Gainera, paketearen osotasuna egiaztatzea (CRC erabiliz) bi kasuetan gertatzen da.

Ondorioa

Artikuluaren amaieran hau esan nahiko nuke. Azken taula pixka bat nahasia da. Hala ere, emana dagoelako aukeratu dut Artikulu, horretan oinarritzen naiz. Nire artikuluaren bigarren zatian, BlueTooth 4.0 zehaztapenean sakontzeko asmoa dut. Diagrama eta marrazki zuzenagoak itxaroten gaituzte bertan. Hirugarren zatian, Wireshark programa erabiliz lortutako log-a analizatu nahiko nuke tramankuluetako batetik eta "zuzenean" ikusi aztertzen ari garen teoria guztia.

Enpresa Taldeko langilea "Cesar satelitea"
Pecherskikh Vladimir

Iturria: www.habr.com

Gehitu iruzkin berria