BLE phantsi kwemakroskopu (ATTы GATTы…)

BLE phantsi kwemakroskopu (ATTы GATTы...)

BLE phantsi kwemakroskopu (ATTы GATTы…)

Icandelo 1, amagqabantshintshi

Ixesha elide sele lidlulile ukususela ekukhutshweni kokuqala kweBluetooth 4.0. Kwaye, nangona isihloko se-BLE sinomdla kakhulu, sisabeka abaphuhlisi abaninzi ngenxa yokuntsokotha kwaso. Kumanqaku am angaphambili, ndijonge kakhulu kwinqanaba eliphantsi, i-Link Layer kunye ne-Physical Layer. Oku kusivumele ukuba siphephe ukubhenela kwiingqikelelo ezintsonkothileyo nezibhidayo njengeSivumelwano seSiphawulo (ATT) kunye neProfayili yoMba Jikelele (GATT). Nangona kunjalo, akukho ndawo yokuya kuyo, ngaphandle kokuziqonda, akunakwenzeka ukuphuhlisa izixhobo ezihambelanayo. Namhlanje ndingathanda ukwabelana nawe ngolu lwazi. Kwinqaku lam ndiya kuxhomekeka incwadi yesikhokelo kubaqalayo kwiwebhusayithi yeNordic. Ngoko masiqalise.

Kutheni yonke into inzima kangaka?

Ngokombono wam, kwacaca ngokukhawuleza ukuba ukulawula izixhobo ngee-smartphones sisihloko esithembisayo kwaye sihlala ixesha elide. Ke ngoko, bagqibe kwelokuba bayimise ngoko nangoko kwaye iye phezulu. Ukuze abavelisi bezixhobo ezahlukeneyo bangezi nezabo iiprothokholi, eziya kuthi ke zingahambelani. Ngenxa yoko ubunzima. Sele kwinqanaba lokuqala, bazama ukucinezela yonke into enokwenzeka kwiprotocol ye-BLE. Kwaye akunandaba nokuba iya kuba luncedo kamva okanye hayi. Ukongeza, banikezela ngethuba lokwandisa uluhlu lwezixhobo kwixesha elizayo.

Makhe sijonge kumfanekiso apho umzobo weprotocol ye-BLE izotywe khona. Iqukethe iileya ezininzi. Owona uphantsi, umaleko womzimba (PHY) unoxanduva lwejelo lerediyo yesixhobo. I-Link Layer(LL) iqulethe lonke ulandelelwano lwee-bytes kumyalezo ogqithisiweyo. Kumanqaku angaphambili sifunde kanye oku. I-Host Controller Interface (HCI) yiprotocol yotshintshiselwano phakathi kweeleya ze-BLE okanye iitshiphusi ukuba uMlawuli kunye noMamkeli ziphunyezwe kwiitshiphusi ezahlukeneyo. ULawulo loQhagamshelwano oluQinisekayo kunye neProtokholi yokuLungisa (i-L2CAP) inoxanduva lokuqulunqa iipakethi, ukuqulunqa, ukulawula iimpazamo kunye nokudibanisa ipakethe. IProtokholi yoMphathi woKhuseleko (SMP) inoxanduva lokufihla iipakethi. IProfayili yoFikelelo Jikelele (GAP) inoxanduva lokutshintshiselana kokuqala kwedatha phakathi kwezixhobo ukumisela "Ngubani na". Ikwabandakanya ukuskena kunye neentengiso. Kweli nqaku ndiza kugxila kumacandelo amabini aseleyo eprotocol - GATT kunye ne-ATT. I-GATT yi-superstructure ye-ATT, ngoko ke idibene ngokusondeleyo.

BLE phantsi kwemakroskopu (ATTы GATTы...)

Ukwenza ibali libe lula, ndingathanda ukuphendukela kumzekeliso. Ndiyivile ndaweni ithile kwaye ndingathanda ukuyixhasa. Cinga ngesixhobo se-BLE njengekhabhathi yeencwadi eneshelufa ezininzi. Ishelufu nganye ingumxholo owahlukileyo. Ngokomzekelo, sineeshelufu ezineengcamango zenzululwazi, imathematika kunye neencyclopedia. Kwishelufu nganye kukho iincwadi ezinesihloko esichaziweyo. Kwaye ezinye iincwadi zide zibe neebhukhimakhi zephepha ezinamanqaku. Ukongeza, sinekhathalogu encinci yephepha yazo zonke iincwadi. Ukuba uyakhumbula, iilayibrari zesikolo yibhokisi emxinwa enamakhadi ephepha. Ngalo mzekeliso, ikhabhinethi yiprofayili yesixhobo sethu. Amashalofu ziinkonzo, iincwadi ziimpawu, kwaye ikhathalogu yitafile yeempawu. Iibhukhimakhi ezincwadini zizichazi, endiya kuthetha ngazo kamva ngokubanzi.

Nabani na oye waphuhlisa izixhobo uyazi ukuba ezininzi iiprojekthi zineenqununu ezifanayo zekhowudi. Inyaniso kukuba izixhobo ezininzi zinomsebenzi ofanayo. Ngokomzekelo, ukuba izixhobo zinikwe amandla ngamabhetri, ke ingxaki yokutshaja kunye nokubeka iliso kwinqanaba labo liya kufana. Kukwanjalo nakwizinzwa. Ngokwenyani, indlela ejolise kwinjongo yokucwangcisa "Ibonelela ngesakhono sokwenza izinto ezidibanisa iipropathi kunye nokuziphatha kumanyano oluzimeleyo olunokuthi luphinde lusetyenziswe kwakhona". Ngokoluvo lwam, i-BLE izamile indlela efanayo. Iiprofayili zaphuhliswa yiBluetooth Special Interest Group (SIG). Izixhobo ezivela kubakhiqizi abahlukeneyo abaneeprofayili ezifanayo kufuneka basebenze kunye ngaphandle kobunzima. Iiprofayili, nazo, zibandakanya iinkonzo, kunye neenkonzo zeempawu, ezongezwa ngabachazi. Ngokubanzi inokukhangeleka ngolu hlobo:

BLE phantsi kwemakroskopu (ATTы GATTы...)

Ngokomzekelo, qwalasela umzobo weprofayili wemonitha yezinga lentliziyo (i-bracelet yokufaneleka). Iqukethe iinkonzo ezimbini kunye neempawu ezininzi. Ukusuka kuyo i-hierarchy yeprofayili ngokukhawuleza iyacaca. Uphawu lwendawo yokutshekisha luseta kwakhona ukubalwa kwenkcitho yekhalori iyonke iye kwiqanda.

1. Inkonzo yesantya sentliziyo ibandakanya iimpawu ezintathu (0x180D):
    a) Uphawu lokubetha kwentliziyo okunyanzelekileyo (0x2A37)
    b) Ukhetho lwendawo yesivamvo somzimba uphawu (0x2A38)
    c) Iimpawu ezinemiqathango yendawo yokulawula izinga lentliziyo (0x2A39)
2. Inkonzo yokugcinwa kwebhetri (0x180F):
    a) Uphawu lwenqanaba lokutshaja kwebhetri olunyanzelekileyo (0x2A19)

UUID

Ukuze sikwazi ukufikelela ngokukodwa kwizinto zeprofayili (iinkonzo, iimpawu kunye nezichazi), kufuneka sizinombolo zonke ngandlela thile. Ukwenzela le njongo, ingqikelelo efana ne-ID eyohlukileyo kwiHlabathi liphela (UUID) okanye i-Universally Eyahlukileyo Isazisi siyaziswa. I-UUID ibonakaliswe kwizibiyeli zomgca ngamnye. Kwaye kukho into eyodwa apha. Kwi-UUID, sagqiba ekubeni sisebenzise ikhowudi ye-16 kunye ne-128 bits ubude. Kutheni ubuza? Kwi-protocol ye-BLE, yonke into imalunga nokugcinwa kwamandla. Ke ngoko, ubungakanani beebhithi ezili-16 bufanelekile. Akunakwenzeka ukuba ngaphezu kwe-65 lamawaka kuya kudalwa kungekudala. iinkonzo ezizodwa kunye neempawu. Okwangoku, yonke into ebenokuba sele ibaliwe (khumbula ukuba ivela phi le nto - "nawe wakubala" :-)) iiprofayili, iinkonzo, iimpawu и izichazi ungajonga amakhonkco.

Nangona kunjalo, ndicinga ukuba wonke umntu ukhumbula ibali nge-4 bytes yeedilesi ze-IP kwi-Intanethi. Ekuqaleni sasicinga ukuba oko kwanele, kodwa ngoku asikwazi ukutshintshela kwidilesi ye-6-byte. Ukuze ungaphindi le mpazamo kwaye unike amandla ngokukhululekileyo kwizandla ezidlalayo ze-DIYers, i-SIG yagqiba ngokukhawuleza ukwazisa i-128-bit UUIDs. Oku kundikhumbuza ngokwam ibhendi ye-433 MHz engenalayisenisi, eyanikwa zonke iintlobo zeKulibins ukusuka kwijelo lomsakazo. Kwimeko yethu, isichongi se-128-bit seenkonzo kunye neempawu zaveliswa ngaphandle. Oku kuthetha ukuba thina, kwiinkonzo zethu kunye nezixhobo, sinokusebenzisa phantse naliphi na ixabiso le-128-bit. Konke okufanayo, amathuba okuza ne-UUID efanayo athande ukuba zero.

Enyanisweni, ii-UUID ezimfutshane ze-16-bit zinolwandiso lwazo kwixabiso le-128-bit. Kwingcaciso, olu lwandiso lubizwa ngokuba yiBluetooth Base UUID kwaye inexabiso 00000000-0000-1000-8000-00805F9B34FB. Ukuba, umzekelo, i-16-bit ye-UUID inexabiso le-0x1234, ngoko i-128-bit ye-UUID elinganayo iya kuba nexabiso 00001234-0000-1000-8000-00805F9B34FB. Kwaye nefomula ehambelana nayo inikwe:

                                128_bit_value = 16_bit_value * 2^96 + Bluetooth_Base_UUID

Andazi ukuba le nombolo yomlingo ivela phi. Ukuba nabani na wabafundi uyazi, mababhale kwizimvo (Umsebenzisi onegama lesiteketiso elithi Sinopteek sele ekwenzile oku. Bona izimvo). Ngokumalunga nokuza ne-128-bit UUIDs, ngokomgaqo ungasebenzisa ekhethekileyo umvelisingubani na oya kukwenzela.

ATT GATT...

Enyanisweni, ngoko ulonwabo luqala. Makhe ndikukhumbuze ukuba i-ATT isekelwe kubudlelwane bomthengi-nomncedisi. Ngoku sijonge kwisixhobo somncedisi. Iqulethe ulwazi olufana namaxabiso oluvo, isimo sokutshintsha ukukhanya, idatha yendawo, njl. Ngoku ukuba bonke "abathathi-nxaxheba kwi-parade yethu" babaliwe, kufuneka sibeke ngandlela-thile kwimemori yesixhobo. Ukwenza oku, sizibeka kwitafile ebizwa ngokuba yitafile yophawu. Khumbula oku kakuhle. Le yeyona ntliziyo ye-BLE. Oku siza kukuqwalasela ngakumbi. Ngoku sizakubiza umgca ngamnye ngophawu. Le theyibhile ibekwe nzulu kwi-stack kwaye, njengomthetho, asinakho ukufikelela ngokuthe ngqo kuyo. Siyayiqala kwaye sifikelele kuyo, kodwa okwenzekayo ngaphakathi kufihliwe kuthi emva kwamatywina asixhenxe.

Makhe sijonge umfanekiso ovela kwinkcazo, kodwa ngaphambi koko, ndingathanda ukutsala ingqalelo ngokukhawuleza ukudideka rhoqo ngokwemiqathango, oko kukuthi kwiinkcazo. Indima yesichazi kukuzalisekisa inkcazo yophawu. Xa kuyimfuneko ukwandisa amandla ayo, ke i-descriptors isetyenziswa. Zikwayimpawu, kwaye njengeenkonzo kunye neempawu, zibekwe kwitheyibhile yophawu. Siza kuzihlolisisa ngokweenkcukacha kwinxalenye yesibini yenqaku. Nangona kunjalo, ngamanye amaxesha izichazi zibhekisa kwinombolo yomqolo kwitheyibhile yophawu. Oku kufuneka kugcinwe engqondweni. Ukunqanda ukubhideka, siya kusebenzisa igama elithi “attribute pointer” kwezi njongo.
BLE phantsi kwemakroskopu (ATTы GATTы...)

Ngoko uphawu loyelelwano lixabiso elidityanisiweyo elineempawu ezilandelayo ezinxulumene nalo:
1. Uphawu loMphathi sisalathiso setafile esihambelana nophawu
2. Uhlobo lophawu yi-UUID echaza uhlobo lwayo
3. Ixabiso lophawu loyelelwano yidatha ephawulweyo ngesalatha sophawu
4. Iimpawu zophawu Iimvume ziyinxalenye yophawu, iimvume, ezingenakufunda okanye ezibhaliweyo kusetyenziswa uphawu lokuziphatha.

Indlela yokuqonda konke oku? Isalathi sophawu, ngokuthelekisa, inani laso kwitafile yethu.
Ivumela umxhasi ukuba abonise uphawu ekufundeni okanye ekubhaleni izicelo. Sinokubala iilayini zethu (iimpawu) ukusuka ku-0x0001 ukuya kwi-0xFFFF. Ngobudlelwane bethu kunye ne-bookcase, le yinombolo yekhadi kwikhathalogu yamaphepha. Ngokufanayo, njengakwikhathalogu yethala leencwadi, amakhadi acwangciswa ngokokulandelelana kwamanani. Inani lomgca ngamnye olandelayo kufuneka libe likhulu kunolo lwangaphambili. Njengakwithala leencwadi, ngamanye amaxesha amanye amakhadi ayalahleka, ke nathi, kusenokubakho izikhewu kuluhlu lwamanani. Oku kuvumelekile. Into ephambili kukuba bahambe ngokuqhubekayo.

Uphawu loyelelwano lumisela ukuba uphawu lumele ntoni. Ngokuthelekisa ulwimi C,
apho kukho i-boolean, amanani aguquguqukayo kunye neentambo, ngoko ilapha. Ngohlobo lophawu lophawu esiluqondayo
yintoni esijongene nayo kunye nendlela esinokuqhubeka ngayo nokusebenza ngolu phawu. Ngezantsi siza kujonga ezinye iintlobo zeempawu. Umzekelo, "isibhengezo senkonzo" (0x2800), "isibhengezo sophawu" (0x2803), "i-descriptor declaration" (0x2902).

Ixabiso lophawu yintsingiselo yalo yokwenyani, xolela i-tautology. Ukuba uhlobo lophawu luyintambo, ngoko ixabiso lempawu lingaba, umzekelo, isilogeni esithi "Hello World !!!". Ukuba uhlobo lophawu luyi "isibhengezo senkonzo", ngoko ixabiso layo yinkonzo ngokwayo. Kwaye ngamanye amaxesha olu lulwazi malunga nokuba ungazifumana phi ezinye iimpawu kunye neempawu zazo.

Iimvumelwano zoyelelwano zivumela umncedisi ukuba aqonde ukuba ukufikelela kokufunda okanye ukubhala kuvumelekile na.
Qaphela ukuba ezi mvume zisebenza kuphela kwixabiso loyelelwano, kwaye hayi kwisalathisi, uhlobo, okanye indawo yemvume ngokwayo. Ezo. ukuba uphawu lokurekhoda luvumelekile, ngoko sinokutshintsha, umzekelo, umgca "Molo World !!!" kumgca othi "Molo kusasa". Kodwa asikwazi ukuthintela ukubhala umgca omtsha okanye ukutshintsha uhlobo lophawu kwaye sikhethe umgca "njengesibhengezo senkonzo". Xa umxhasi eqhagamshelana nomncedisi, umxhasi ucela iimpawu zayo. Oku kuvumela umxhasi ukuba azi ukuba umncedisi unokubonelela ngantoni. Nangona kungeyomfuneko ukufunda nokubhala amaxabiso.

Ingaba ijongeka kanjani

Ingqikelelo ye-GATT kukwenza iqela leempawu kwitheyibhile yophawu kunye ngendlela ecacileyo nesengqiqweni. Makhe sijonge ngakumbi iprofayile izinga intliziyo ngezantsi. Owona mhlathi usekhohlo wale theyibhile awunyanzelekanga. Isichazela ngokulula ukuba lo mgca (uphawu) uyintoni na. Zonke ezinye iikholamu sele ziqhelekile kuthi.

BLE phantsi kwemakroskopu (ATTы GATTы...)

Phezulu kwiqela ngalinye sihlala sinophawu lwesibhengezo senkonzo. Uhlobo lwayo luhlala luyi-0x2800, kwaye isalathisi sixhomekeke ekubeni zingaphi iimpawu esele zikhona kwitheyibhile. Iimvume zayo zihlala zifundwa kuphela, ngaphandle kokuqinisekiswa okanye ugunyaziso. Siza kuthetha ngezi ngqiqo kamva. Ixabiso lelinye i-UUID echonga ukuba yintoni inkonzo. KwiThebhile, ixabiso ngu-0x180D, elichazwa yi-Bluetooth SIG njengenkonzo yezinga lentliziyo.

Emva kokubhengezwa kwenkonzo, kuza isibhengezo sophawu. Kuyafana nangefomu kwisibhengezo senkonzo. I-UUID yayo ihlala i-0x2803, kwaye iimvume zayo zihlala zifundwa kuphela ngaphandle kokuqinisekiswa okanye ugunyaziso. Makhe sijonge indawo yeXabiso lophawu, equka idatha ethile. Ihlala iqulethe isalathisi, i-UUID, kunye neseti yeepropati. Ezi zinto zintathu zichaza isibhengezo esilandelayo sexabiso lophawu. Isalathi sibonisa ngokwendalo indawo yophawu lwexabiso lophawu kwitheyibhile yophawu. I-UUID ichaza uhlobo lolwazi okanye ixabiso esinokulilindela. Umzekelo, ixabiso lobushushu, ubume bokutshintsha kokukhanya, okanye elinye ixabiso elingenasizathu. Kwaye ekugqibeleni iipropathi, ezichaza indlela ixabiso leempawu ezinokudityaniswa ngayo.

Omnye umgibe usilindele apha. Idityaniswa neemvume zophawu kunye neempawu zeempawu. Makhe sijonge umfanekiso weepropati ze-bit field ukusuka kwinkcazo.

BLE phantsi kwemakroskopu (ATTы GATTы...)

Njengoko ubona, kukho iindawo apha ezibonelela ngezakhono zokufunda nokubhala. Usenokuba uyazibuza ukuba kutheni sifunde/sibhala iimvume zophawu kunye nepropathi
funda/ubhale ngexabiso lophawu? Ngaba azifanele zihlale zifana? Inyaniso kukuba iipropati ixabiso uphawu eneneni iingcebiso kuphela umxhasi osetyenziswa GATT kunye nezicelo umaleko. Ezi ziingcebiso ngokulula malunga nokuba umxhasi unokulindela ntoni kuphawu loyelelwano lwesibhengezo. Makhe sijonge oku ngokubanzi. Loluphi uhlobo lweemvume olunazo uphawu loyelelwano?

1. Iimvume zokungena:
     - ukufunda
     - irekhodi
     - Funda ubhale
2. Imvume yokuqinisekisa:
     - ukuqinisekiswa kuyafuneka
     - akukho siqinisekiso esifunekayo
3. Imvume yogunyaziso:
     - ugunyaziso luyafuneka
     - akukho sigunyaziso esifunekayo

Umahluko omkhulu phakathi kwesisombululo sophawu kunye neempawu zeempawu kukuba eyokuqala isebenza kwiiseva, kwaye le yokugqibela kubaxhasi. Umncedisi unokuvunyelwa afunde ixabiso lophawu, kodwa unokufuna uqinisekiso okanye ugunyaziso. Ngoko ke, xa umxhasi ecela iimpawu zempawu, siya kufumana ukuba ukufundwa kuvunyelwe. Kodwa xa sizama ukufunda, sifumana impazamo. Ke ngoko, sinokuthetha ngokukhuselekileyo malunga nokubaluleka kweemvume kwiipropathi. Kwicala lomxhasi, asinakufumana ulwazi lokuba zeziphi iimvume uphawu olunazo.

Isichazi

Masibuyele etafileni yethu. Emva kokubhengeza ixabiso lophawu, olu phawu lulandelayo lunokwenzeka:
1. Isibhengezo esitsha seempawu (inkonzo inokuba neempawu ezininzi)
2. Isibhengezo senkonzo entsha (zisenokuba zininzi etafileni)
3. Ukubhengeza isiphatho

Kwimeko yeempawu zokulinganisa izinga lentliziyo, kwitheyibhile yethu, ukuvakaliswa kwexabiso leempawu zihamba kunye nokubhengezwa kwenkcazo. Isichazi luphawu oluneenkcukacha ezongezelelweyo malunga neempawu. Kukho iintlobo ezininzi zezichazi. Siza kuthetha ngazo ngokubanzi kwinxalenye yesibini yeli nqaku. Okwangoku, siza kuchukumisa kuphela iNgcaciso yoLungiselelo lweNkalo yoMxumi (CCCD). Ine-UUID elingana no-0x2902. Ukusebenzisa le descriptor, umxhasi unamandla okwenza isalathiso okanye isaziso kumncedisi. Umahluko phakathi kwabo mncinane, kodwa kusekho. Isaziso asifuni siqinisekiso sokufunyanwa komxhasi. Isalathiso sifuna oku, nangona kwenzeka kwinqanaba le-GATT, lingafikeleli kwinqanaba lesicelo. Kutheni kunjalo, ubuza? Ewe, andiyazi loo nto. Makhe nditsho ukuba iingcali zeNordic zincoma ukusebenzisa izaziso. Ngaphezu koko, ukujonga ingqibelelo yephakheji (usebenzisa i-CRC) kwenzeka kuzo zombini iimeko.

isiphelo

Ekupheleni kwenqaku ndingathanda ukuthetha oku. Itheyibhile yokugqibela iyabhidisa. Nangona kunjalo, ndiyikhethile ngenxa yokuba inikwe nqaku, endithembele kuyo. Kwinxalenye yesibini yenqaku lam, ndizimisele ukukhangela nzulu kwi-BlueTooth 4.0. Imizobo echanekileyo kunye nemizobo isilindele apho. Kwicandelo lesithathu, ndingathanda ukucazulula ilogi efunyenwe kusetyenziswa inkqubo yeWireshark ukusuka kwenye yezixhobo kwaye ndibone "phila" yonke ithiyori esiyifundayo.

Umqeshwa weQela leeNkampani "Isathelayithi kaKesare"
Pecherskikh Vladimir

umthombo: www.habr.com

Yongeza izimvo