BLE ngaphansi kwesibonakhulu (ATTы GATTы…)

BLE ngaphansi kwesibonakhulu (ATTы GATTы...)

BLE ngaphansi kwesibonakhulu (ATTы GATTы…)

Ingxenye 1, isifinyezo

Sekudlule isikhathi eside kusukela kwakhululwa ukucaciswa kokuqala kwe-Bluetooth 4.0. Futhi, nakuba isihloko se-BLE sithakazelisa kakhulu, sisabeka onjiniyela abaningi ngenxa yobunkimbinkimbi baso. Ezihlokweni zami ezedlule, ngibheke kakhulu izinga eliphansi kakhulu, I-Link Layer kanye ne-Physical Layer. Lokhu kusivumele ukuthi sigweme ukuphendukela emicabangweni eyinkimbinkimbi nedidayo njenge-Attribute Protocol (ATT) kanye ne-General Attribute Profile (GATT). Kodwa-ke, akukho lapho ungaya khona, ngaphandle kokuwaqonda, akunakwenzeka ukuthuthukisa amadivaysi ahambisanayo. Namuhla ngithanda ukwabelana nawe ngalolu lwazi. Esihlokweni sami ngizothembela kuso incwadi yemibhalo kwabaqalayo abavela kuwebhusayithi yeNordic. Ngakho ake siqale.

Kungani konke kunzima kangaka?

Ngokubona kwami, kwacaca ngokushesha ukuthi ukuphatha amadivaysi ngama-smartphones kuyisihloko esithembisayo nesihlala isikhathi eside. Ngakho-ke, banqume ukuyihlela ngokushesha futhi ibe sezingeni eliphezulu. Ukuze abakhiqizi bamagajethi ahlukahlukene bangezi namaphrothokholi abo, azobe engahambelani. Ngakho-ke ubunzima. Kakade esigabeni sokuqala, bazama ukukhama konke okusemandleni ku-BLE protocol. Futhi akunandaba ukuthi kuzoba usizo kamuva noma cha. Ngaphezu kwalokho, banikeze ithuba lokwandisa uhlu lwamadivayisi esikhathini esizayo.

Ake sibheke isithombe lapho umdwebo wephrothokholi ye-BLE udwetshwa khona. Iqukethe izendlalelo eziningana. Isendlalelo esiphansi, esibonakalayo (i-PHY) sinesibopho esiteshini somsakazo wedivayisi. I-Link Layer(LL) iqukethe lonke ukulandelana kwamabhayithi kumlayezo odlulisiwe. Ezihlokweni ezedlule sifunde lokhu kanye. I-Host Controller Interface (i-HCI) iyiphrothokholi yokushintshisana phakathi kwezendlalelo ze-BLE noma ama-chips uma Isilawuli Nosokhaya kusetshenziswa kuma-chips ahlukene. I-Logical Link Control and Adaptation Protocol (L2CAP) inesibopho sokwakheka kwephakethe, ukwenza uzimele, ukulawula amaphutha kanye nokuhlanganisa iphakethe. I-Security Manager Protocol (SMP) inesibopho sokubethela amaphakethe. Iphrofayela Yokufinyelela Okujwayelekile (i-GAP) inesibopho sokushintshisana kokuqala kwedatha phakathi kwamadivayisi ukuze kunqunywe ukuthi “Ubani”. Kuhlanganisa nokuskena nokukhangisa. Kulesi sihloko ngizogxila ezingxenyeni ezimbili ezisele zephrothokholi - i-GATT ne-ATT. I-GATT iyisakhiwo esiphezulu se-ATT, ngakho-ke asondelene kakhulu.

BLE ngaphansi kwesibonakhulu (ATTы GATTы...)

Ukwenza indaba ibe lula, ngingathanda ukuphendukela esifanisweni. Ngiyizwile ndawana thize futhi ngingathanda ukukweseka. Cabanga ngedivayisi ye-BLE njengekhabethe lezincwadi elinamashalofu amaningana. Ishalofu ngalinye liyitimu ehlukile. Isibonelo, sinamashalofu anezinganekwane zesayensi, izibalo, nama-encyclopedia. Eshalofini ngalinye kunezincwadi ezinesihloko esithile. Futhi ezinye izincwadi zize zibe namabhukhimakhi ephepha anamanothi. Ngaphezu kwalokho, sinekhathalogi encane yephepha yazo zonke izincwadi. Uma ukhumbula, imitapo yolwazi yesikole iyibhokisi elincane elinamakhadi amaphepha. Ngalesi sifaniso, ikhabhinethi iphrofayili yedivayisi yethu. Amashalofu ayizinsizakalo, izincwadi ziyizici, futhi ikhathalogi iyithebula lesibaluli. Amabhukhimakhi ezincwadini ayizichazi, engizobuye ngikhulume ngazo kamuva ngemininingwane eyengeziwe.

Noma ubani owakhe amadivayisi uyazi ukuthi amaphrojekthi amaningi anezingcezu ezifanayo zekhodi. Iqiniso liwukuthi amadivaysi amaningi anokusebenza okufanayo. Isibonelo, uma amadivayisi anikwe amandla amabhethri, khona-ke inkinga yokushaja nokuqapha izinga lawo lizofana. Okufanayo kuya ngezinzwa. Empeleni, indlela egxile entweni yokuhlela "ihlinzeka ngamakhono okudala izinto ezihlanganisa izakhiwo nokuziphatha zibe inyunyana eziqukethwe ngokwayo engase iphinde isetshenziswe". Ngokubona kwami, i-BLE izamile indlela efanayo. Amaphrofayili athuthukiswa yi-Bluetooth Special Interest Group (SIG). Amadivayisi avela kubakhiqizi abahlukene anamaphrofayili afanayo kufanele asebenzisane ngaphandle kobunzima. Amaphrofayili, wona, aqukethe izinsizakalo, kanye nezinsizakalo zezici, ezingezwe ngabachazi. Ngokuvamile kungase kubukeke kanje:

BLE ngaphansi kwesibonakhulu (ATTы GATTы...)

Isibonelo, cabangela umdwebo wephrofayela wokuqapha izinga lokushaya kwenhliziyo (isongo sokufaneleka). Iqukethe izinsizakalo ezimbili kanye nezici eziningana. Kusuka kuyo ukuhlelwa kwephrofayili kuyacaca ngokushesha. Isici sephoyinti lokuhlola sisetha kabusha inani lezindleko zekhalori eliphelele libe uziro.

1. Isevisi yezinga lokushaya kwenhliziyo ihlanganisa izici ezintathu (0x180D):
    a) Isici sokushaya kwenhliziyo esiyisibopho (0x2A37)
    b) Isici sokuma kwenzwa yomzimba ozikhethelayo (0x2A38)
    c) Izici ezinemibandela zephoyinti lokulawula izinga lokushaya kwenhliziyo (0x2A39)
2. Isevisi yokulungisa ibhethri (0x180F):
    a) Isici seleveli yokushajwa kwebhethri eyisibopho (0x2A19)

I-UUID

Ukuze sifinyelele ngokuhlukile izici zephrofayela (amasevisi, izici nezichazi), sidinga ukuzifaka izinombolo ngandlela thile. Ngale njongo, kwethulwa umqondo ofana ne-Universally Unique ID (UUID) noma i-Universally Unique Identifier. I-UUID ikhonjiswe kubakaki bomugqa ngamunye. Futhi kukhona okungavamile lapha. Ku-UUID, sinqume ukusebenzisa ikhodi yamabhithi angu-16 no-128 ubude. Ubuzelani? Kuphrothokholi ye-BLE, yonke into imayelana nokongiwa kwamandla. Ngakho-ke, ubukhulu be-bits 16 bunengqondo impela. Akunakwenzeka ukuthi kuzokwakhiwa ngaphezu kwezinkulungwane ezingama-65 esikhathini esizayo esiseduze. amasevisi nezici eziyingqayizivele. Okwamanje, konke obekungase kubalwe kakade (khumbula ukuthi lokhu kwavelaphi - “wakubala nawe” :-)) Izakhi ezinezinombolo amaphrofayili, yemisebenzi, izici и abachazi ungabheka izixhumanisi.

Nokho, ngicabanga ukuthi wonke umuntu uyayikhumbula indaba ngamabhayithi angu-4 wamakheli e-IP ku-inthanethi. Ekuqaleni besicabanga ukuthi lokho kwanele, kodwa manje asikwazi ukushintshela ekhelini le-6-byte. Ukuze ungaphindi leli phutha futhi unikeze amandla mahhala ezandleni ezidlalayo ze-DIYers, i-SIG yanquma ngokushesha ukwethula ama-UUID angu-128-bit. Lokhu kungikhumbuza mathupha ngebhendi ye-433 MHz engenalayisense, eyanikezwa zonke izinhlobo zamaKulibins avela esiteshini somsakazo. Esimeni sethu, isihlonzi se-128-bit sezinsizakalo nezici safuywa ngaphandle. Lokhu kusho ukuthi thina, ngamasevisi namadivayisi ethu, singasebenzisa cishe noma yiliphi inani le-128-bit. Noma kunjalo, amathuba okuqhamuka ne-UUID efanayo athambekele ku-zero.

Eqinisweni, ama-UUID amafushane we-16-bit anesandiso sawo esifinyelela inani le-128-bit. Esicacisweni, lesi sandiso sibizwa nge-Bluetooth Base UUID futhi sinenani elingu-00000000-0000-1000-8000-00805F9B34FB. Uma, isibonelo, i-UUID ye-16-bit inenani elingu-0x1234, khona-ke i-128-bit UUID elinganayo izoba nenani elithi 00001234-0000-1000-8000-00805F9B34FB. Futhi ngisho nefomula ehambisanayo inikezwa:

                                128_bit_value = 16_bit_value * 2^96 + Bluetooth_Base_UUID

Angazi ukuthi le nombolo yomlingo ivelaphi. Uma kukhona umfundi owaziyo, makabhale emazwaneni (Umsebenzisi onesidlaliso esithi Sinopteek usekwenzile lokhu. Bona amazwana). Ngokuqondene nokuza nama-UUID angu-128-bit, ngokomthetho ungasebenzisa okukhethekile ijenerethangubani ozokwenza kuwe.

U-ATT GATT...

Eqinisweni, khona-ke ubumnandi buqala. Ake ngikukhumbuze ukuthi i-ATT isuselwe ebudlelwaneni beklayenti neseva. Manje sibheka idivayisi yeseva. Iqukethe ulwazi olufana namanani enzwa, isimo sokushintsha ukukhanya, idatha yendawo, njll. Manje njengoba bonke “ababambe iqhaza ku-parade yethu” sebebaliwe, sidinga ukubabeka ngandlela thize kumemori yedivayisi. Ukuze senze lokhu, sibabeka etafuleni elibizwa ngokuthi itafula lemfanelo. Khumbula kahle lokhu. Lona kanye inhliziyo ye-BLE. Yilokhu esizophinde sikucabangele. Manje sizobiza umugqa ngamunye ngesibaluli. Leli thebula litholakala ekujuleni kwesitaki futhi, njengomthetho, asinakho ukufinyelela okuqondile kulo. Siyayiqala futhi sifinyelele kuyo, kodwa okwenzeka ngaphakathi kufihliwe kithi ngemuva kwezimpawu eziyisikhombisa.

Ake sibheke isithombe kusukela ekucacisweni, kodwa ngaphambi kwalokho, ngingathanda ukudonsela ukunaka ngokushesha ekudidekeni okuvamile ngokwemibandela, okungukuthi kuzichazi. Indima yesichazi ukuphelelisa incazelo yesici. Uma kudingekile ukwandisa amakhono ayo, bese kusetshenziswa izichazi. Futhi ziyizibaluli, futhi njengezinkonzo nezici, zitholakala kuthebula lesibaluli. Sizowahlola ngokuningiliziwe engxenyeni yesibili yalesi sihloko. Nokho, ngezinye izikhathi izichazi zibhekisela enombolweni yomugqa kuthebula lesichasiso. Lokhu kumele kukhunjulwe. Ukugwema ukudideka, sizosebenzisa igama elithi “isikhombi semfanelo” kulezi zinhloso.
BLE ngaphansi kwesibonakhulu (ATTы GATTы...)

Ngakho isibaluli siyivelu ehlukile enezakhiwo ezilandelayo ezihlotshaniswa naso:
1. Isibambi Semfanelo inkomba yethebula ehambisana nesibaluli
2. Uhlobo Lwemfanelo yi-UUID echaza uhlobo lwayo
3. Inani Lemfanelo yidatha ekhonjwe inkomba yesibaluli
4. Izimvume Zesibaluli ziyingxenye yesibaluli, izimvume, ezingakwazi ukufundwa noma ukubhalwa kusetshenziswa iphrothokholi yesibaluli.

Indlela yokuqonda konke lokhu? Isikhombi semfanelo, uma kuqhathaniswa, inombolo yaso etafuleni lethu.
Ivumela iklayenti ukuthi libhekisele kusibaluli ezicelweni zokufunda noma zokubhala. Singakwazi ukufaka izinombolo imigqa yethu (izibaluli) ukusuka ku-0x0001 kuya ku-0xFFFF. Ebudlelwaneni bethu nekhabethe lezincwadi, lena inombolo yekhadi kukhathalogi yamaphepha. Ngokufanayo, njengakukhathalogi yomtapo wolwazi, amakhadi ahlelwa ngokulandelana kwenombolo. Inombolo yomugqa ngamunye olandelayo kufanele ibe nkulu kunowangaphambilini. Njengakulabhulali, ngezinye izikhathi amanye amakhadi ayalahleka, ngakho-ke ngathi, kungase kube nezikhala emugqeni wezinombolo. Lokhu kuvunyelwe. Okuyinhloko ukuthi bahamba ngokuqhubekayo.

Uhlobo lwesibaluli lunquma ukuthi imfanelo imele ini. Ngokufanisa nolimi C,
lapho kukhona i-boolean, okuguquguqukayo kwezinombolo neyunithi yezinhlamvu, ngakho-ke ilapha. Ngohlobo lwesibaluli siyayibona
esibhekene nakho nokuthi singaqhubeka kanjani nokusebenza ngale mfanelo. Ngezansi sizobheka izinhlobo ezithile zezimfanelo. Isibonelo, "isimemezelo sesevisi" (0x2800), "isimemezelo sesici" (0x2803), "isimemezelo sesichazi" (0x2902).

Inani lesici yincazelo yalo yangempela, thethelela i-tautology. Uma uhlobo lwesichasiso luwuchungechunge, inani lemfanelo lingaba, isibonelo, isiqubulo esithi "Sawubona Umhlaba !!!". Uma uhlobo lwesibaluli "luyisimemezelo sesevisi", khona-ke inani laso yisevisi ngokwayo. Futhi ngezinye izikhathi lokhu kuwulwazi mayelana nokuthi ungatholaphi ezinye izimfanelo nezakhiwo zazo.

Izimvume zesibaluli zivumela iseva ukuthi iqonde ukuthi ukufinyelela kokufunda noma ukubhala kuvunyelwe.
Qaphela ukuthi lezi zimvume zisebenza kuphela enanini lesibaluli, futhi hhayi kusikhombisi, uhlobo, noma inkambu yemvume ngokwayo. Labo. uma ukurekhodwa kwesibaluli kuvunyelwe, lapho-ke singashintsha, isibonelo, umugqa othi “Sawubona Mhlaba !!!” emgqeni othi “Sawubona”. Kodwa asikwazi ukuvimbela ukubhala umugqa omusha noma ukuguqula uhlobo lwesibaluli bese sibeka umugqa "njengesimemezelo sesevisi". Uma iklayenti lithinta iseva, iklayenti licela izici zayo. Lokhu kuvumela iklayenti ukuthi lazi ukuthi iseva inganikeza ini. Nakuba akudingekile ukufunda nokubhala amanani.

Ibukeka kanjani

Umqondo we-GATT uwukuhlanganisa izimfanelo kuthebula lezibaluli ndawonye ngokulandelana okuqondile nokunengqondo. Ake sibhekisise iphrofayili yokushaya kwenhliziyo ngezansi. Ikholomu engakwesokunxele kakhulu yaleli thebula ingokuzithandela. Imane isichazele ukuthi uyini lo mugqa (imfanelo). Wonke amanye amakholomu asevele ajwayelekile kithi.

BLE ngaphansi kwesibonakhulu (ATTы GATTы...)

Phezulu kweqembu ngalinye sihlala sinemfanelo yesimemezelo sesevisi. Uhlobo lwayo luhlala luyi-0x2800, futhi i-pointer incike ekutheni zingaki izimfanelo esezivele zikhona etafuleni. Izimvume zayo zihlala zifundwa kuphela, ngaphandle kokuqinisekisa noma ukugunyazwa. Sizokhuluma ngale miqondo ngokuhamba kwesikhathi. Inani enye i-UUID ekhomba ukuthi isevisi iyini. Kuthebula, inani lingu-0x180D, elichazwa i-Bluetooth SIG njengesevisi yezinga lokushaya kwenhliziyo.

Ngemuva kokumenyezelwa kwenkonzo, kulandela isimemezelo sesici. Kuyafana ngefomu nesimemezelo sesevisi. I-UUID yayo ihlala i-0x2803, futhi izimvume zayo zihlala zifundwa kuphela ngaphandle kwanoma yikuphi ukuqinisekiswa noma ukugunyazwa. Ake sibheke inkambu Yenani Lemfanelo, ehlanganisa idatha ethile. Ihlala iqukethe i-pointer, i-UUID, kanye nesethi yezakhiwo. Lezi zici ezintathu zichaza isimemezelo esilandelayo senani lesici. Isikhombi ngokwemvelo sisho indawo yesimemezelo senani lesici kuthebula lesichasiso. I-UUID ichaza ukuthi yiluphi uhlobo lolwazi noma inani esingalilindela. Isibonelo, inani lokushisa, isimo sokushintsha ukukhanya, noma elinye inani elingenangqondo. Futhi ekugcineni izakhiwo, ezichaza ukuthi inani lesici lingaxhunyaniswa kanjani nalo.

Omunye umgodi usilindile lapha. Ihlotshaniswa nezimvume zesibaluli kanye nezimpawu zesici. Ake sibheke isithombe sezakhiwo ze-bit field kusukela ekucacisweni.

BLE ngaphansi kwesibonakhulu (ATTы GATTы...)

Njengoba ubona, kukhona nezinkambu lapha ezihlinzeka ngamakhono okufunda nokubhala. Kungenzeka uyazibuza ukuthi kungani sifunde/sibhala izimvume zesibaluli kanye nempahla
funda/bhala ukuze uthole inani lesici? Akufanele yini zihlale zifana? Iqiniso liwukuthi izakhiwo zenani lesici empeleni ziyizincomo kuphela zeklayenti elisetshenziswe ku-GATT nezendlalelo zohlelo lokusebenza. Lawa angamacebo amayelana nalokho iklayenti elingase likulindele kusibaluli sesimemezelo sesici. Ake sibheke lokhu ngokuningiliziwe. Yiziphi izinhlobo zezimvume isibaluli esinazo?

1. Izimvume zokufinyelela:
     - ukufunda
     - irekhodi
     - Funda bese ubhala
2. Imvume yokuqinisekisa:
     - ukuqinisekiswa kuyadingeka
     - akukho ukuqinisekiswa okudingekayo
3. Imvume yokugunyazwa:
     - ukugunyazwa kuyadingeka
     - akukho ukugunyazwa okudingekayo

Umehluko omkhulu phakathi kokulungiswa kwesibaluli kanye nezimpawu zesici ukuthi owokuqala usebenza kumaseva, kanti lokhu okulandelayo kumakhasimende. Iseva ingase ivunyelwe ukufunda inani lesici, kodwa ingase idinge ukuqinisekiswa noma ukugunyazwa. Ngakho-ke, lapho iklayenti licela izakhiwo zesici, sizothola ukuthi ukufunda kuvunyelwe. Kodwa uma sizama ukufunda, sithola iphutha. Ngakho-ke, singakhuluma ngokuphephile mayelana nokubalulekile kwezimvume ngaphezu kwezakhiwo. Ngasohlangothini lweklayenti, asikwazi ukuthola ulwazi lokuthi imfanelo inaziphi izimvume.

Umchazi

Asibuyele etafuleni lethu. Ngemva kokumemezela inani lesici, izichasiselo zesibaluli ezilandelayo zingenzeka:
1. Ukumenyezelwa okusha kwezici (isevisi ingaba nezici eziningi)
2. Isimemezelo sesevisi esisha (kungase kube neziningi zazo etafuleni)
3. Ukumemezela isibambo

Endabeni yesici sokulinganisa ukushaya kwenhliziyo, etafuleni lethu, isimemezelo senani lesici sihambisana nokumenyezelwa kwencazelo. Isichazi isibaluli esinolwazi olwengeziwe mayelana nesici. Kunezinhlobo eziningana zezichazi. Sizokhuluma ngabo ngokuningiliziwe engxenyeni yesibili yalesi sihloko. Okwamanje, sizothinta kuphela I-Client Characteristic Configuration Descriptor (CCCD). Ine-UUID elingana no-0x2902. Ngokusebenzisa lesi sichazi, iklayenti linamandla okunika amandla inkomba noma isaziso kuseva. Umehluko phakathi kwabo mncane, kodwa usekhona. Isaziso asidingi ukuqinisekiswa kokuthola okuvela kuklayenti. Inkomba idinga lokhu, nakuba kwenzeka ezingeni le-GATT, ingafinyeleli izinga lohlelo lokusebenza. Kungani kunjalo, ubuza? Maye, angikwazi lokhu. Ake ngisho ukuthi ochwepheshe beNordic batusa ukusebenzisa izaziso. Ngaphezu kwalokho, ukuhlola ubuqotho bephakheji (usebenzisa i-CRC) kwenzeka kuzo zombili izimo.

isiphetho

Ekupheleni kwesihloko ngithanda ukusho lokhu. Ithebula lokugcina liyadida kancane. Nokho, ngiyikhethile ngoba inikezwe isihlokoengithembele kuyo. Engxenyeni yesibili ye-athikili yami, ngihlose ukujula ekucacisweni kwe-BlueTooth 4.0. Imidwebo nemidwebo eminingi efanele isilindele lapho. Engxenyeni yesithathu, ngingathanda ukuhlaziya ilogi etholwe kusetshenziswa uhlelo lwe-Wireshark kwenye yamagajethi futhi ngibone “bukhoma” yonke ithiyori esiyifundayo.

Isisebenzi seQembu Lezinkampani "Caesar Satellite"
UVladimir Pecherskikh

Source: www.habr.com

Engeza amazwana