BLE pasi pemaikorosikopu (ATTы GATTы…)

BLE pasi pemaikorosikopu (ATTы GATTы...)

BLE pasi pemaikorosikopu (ATTы GATTы…)

Chikamu 1, muchidimbu

Nguva yakareba yatopfuura kubvira pakaburitswa chirevo chekutanga cheBluetooth 4.0. Uye, kunyangwe iyo BLE musoro inonakidza kwazvo, ichiri kumisa vazhinji vanogadzira nekuda kwekuoma kwayo. Muzvinyorwa zvangu zvakapfuura, ini ndainyanya kutarisa padanho rakaderera, Link Layer uye Physical Layer. Izvi zvakatibvumira kuti tisashandise pfungwa dzakaoma uye dzinovhiringidza seAttribute Protocol (ATT) uye General Attribute Profile (GATT). Nekudaro, hapana kwekuenda, pasina kuvanzwisisa, hazvibviri kugadzira michina inoenderana. Nhasi ndinoda kugovera ruzivo urwu nemi. Muchinyorwa changu ndichavimba nacho zvinyorwa kune vanotanga kubva kuNordic webhusaiti. Saka ngatitangei.

Sei zvese zvakaoma kudaro?

Sekuona kwangu, zvakabva zvajeka kuti kutonga zvishandiso kuburikidza nemafoni inyaya inovimbisa uye inogara kwenguva refu. Naizvozvo, vakasarudza kuigadzira nekukurumidza uye kusvika pakakwirira. Kuitira kuti vagadziri veakasiyana gadget vasauye nemaprotocol avo, izvo zvinozove zvisingaenderane. Saka zvakaoma. Padanho rekutanga, vakaedza kudzvanya zvese zvinogoneka muBLE protocol. Uye hazvina basa kuti zvichave zvinobatsira gare gare kana kwete. Pamusoro pezvo, ivo vakapa mukana wekuwedzera rondedzero yemidziyo yenguva yemberi.

Ngatitarisei pamufananidzo panodhirowewa BLE protocol diagram. Inosanganisira zvikamu zvakawanda. Iyo yakaderera, yemuviri layer (PHY) inobata chiteshi cheredhiyo chemudziyo. Link Layer(LL) ine kutevedzana kwese kwemabhaiti mune inofambiswa meseji. Muzvinyorwa zvakapfuura takadzidza izvi chaizvo. Host Controller Interface (HCI) iprotocol yekutsinhana pakati peBLE layer kana machipisi kana Controller neHost zvikaitwa pamachipi akasiyana. Logical Link Kudzora uye Adaptation Protocol (L2CAP) ine basa rekuumbwa kwepaketi, kuumba, kutonga kukanganisa uye kusangana kwepaketi. Chengetedzo Maneja Protocol (SMP) ine basa rekuvhara mapaketi. Iyo General Access Profile (GAP) ine basa rekutanga kuchinjana kwedata pakati pemidziyo kuona kuti "Ndiani". Inosanganisirawo kuongorora uye kushambadza. Muchikamu chino ini ndichatarisa pane zvikamu zviviri zvakasara zveprotocol - GATT uye ATT. GATT is superstructure yeATT, saka yakanyatsopindirana.

BLE pasi pemaikorosikopu (ATTы GATTы...)

Kurerutsa nyaya, ndinoda kutendeukira kukuenzanisa. Ndakainzwa kune imwe nzvimbo uye ndinoda kuitsigira. Funga nezvemudziyo weBLE sebhuku remabhuku rine masherufu akati wandei. Sherufu imwe neimwe idingindira rakasiyana. Semuenzaniso, tine masherufu ane ngano dzesainzi, masvomhu, nemaenisaikoropidhiya. Pasherefu yega yega pane mabhuku ane musoro wakatarwa. Uye mamwe mabhuku anotova nemapepa mabhukumaki ane manotsi. Pamusoro pezvo, tine kabhuku kadiki kemapepa emabhuku ese. Kana uchirangarira, maraibhurari echikoro ibhokisi nhete rine makadhi emapepa. Nekufananidza uku, iyo cabinet ndiyo chimiro chemudziyo wedu. Masherufu masevhisi, mabhuku maitiro, uye kabhuku itafura yehunhu. Mabhukumaka mumabhuku anotsanangura, izvo zvandichataurawo nezvazvo gare gare zvakadzama.

Chero ani akagadzira michina anoziva kuti akawanda mapurojekiti ane zvidimbu zvakafanana zvekodhi. Ichokwadi ndechokuti michina yakawanda ine basa rakafanana. Semuyenzaniso, kana midziyo inoshandiswa nemabhatiri, ipapo dambudziko rekuchaja nekutarisa nhanho yavo richafanana. Izvo zvakafanana zvinoenda kune sensors. Chaizvoizvo, nzira yakatarisana nechinhu kune chirongwa "inopa kugona kugadzira zvinhu zvinosanganisa zvimiro uye maitiro kuita mubatanidzwa wakazvimirira wozoshandiswazve". Sekuona kwangu, BLE yakaedza nzira yakafanana. Profiles dzakagadzirwa neBluetooth Special Interest Group (SIG). Zvishandiso kubva kune vakasiyana vagadziri vane maprofayili akafanana anofanirwa kushanda pamwe chete pasina kuomerwa. Profiles, zvakare, ine masevhisi, uye masevhisi ehunhu, anowedzerwa nevatsananguri. Muchidimbu, zvinogona kutaridzika seizvi:

BLE pasi pemaikorosikopu (ATTы GATTы...)

Semuenzaniso, funga nezve dhizaini yedhizaini yeyekurova kwemoyo (fitness bracelet). Inosanganisira masevhisi maviri uye maitiro akati wandei. Kubva pairi iyo profil hierarchy inobva yajeka. Iyo yekutarisa maitiro inodzoreredza iyo yakazara macalorie ekushandisa kuverenga kusvika zero.

1. Sevhisi yekurova kwemoyo inosanganisira zvinhu zvitatu (0x180D):
    a) Inosungirwa kurova kwemoyo hunhu (0x2A37)
    b) Optional body sensor position hunhu (0x2A38)
    c) Mamiriro ezvinhu eiyo moyo kurova kwekudzora nzvimbo (0x2A39)
2. Kugadzirisa bhatiri (0x180F):
    a) Inosungirwa bhatiri yekuchaja mwero hunhu (0x2A19)

UUID

Kuti isu tikwanise kuwana zvakasarudzika zvinhu zveprofile (masevhisi, maitiro uye zvinotsanangurwa), isu tinofanirwa kuverengera ese neimwe nzira. Nechinangwa ichi, pfungwa yakadai seUniversally Unique ID (UUID) kana Universally Unique Identifier inounzwa. Iyo UUID inoratidzwa mumabhuraketi emutsara wega wega. Uye pane imwe peculiarity pano. KuUUID, takasarudza kushandisa kodhi ye16 uye 128 bits pakureba. Unobvunzirei? MuBLE protocol, zvese ndezvekuchengetedza simba. Nokudaro, chiyero che 16 bits chinonzwisisika. Hazvigoneki kuti kupfuura 65 zviuru zvichasikwa munguva pfupi iri kutevera. akasiyana masevhisi uye maitiro. Parizvino, zvese zvavaigona kunge zvakatoverengwa (rangarira kuti izvi zvakabva kupi - "akakuverengerawo" :-)) profiles, services, hunhu и descriptors unogona kutarisa zvinongedzo.

Zvisinei, ndinofunga kuti munhu wose anoyeuka nyaya yacho ne 4 bytes ye IP kero paInternet. Pakutanga takafunga kuti zvakanga zvakakwana, asi iye zvino hatisati takwanisa kushandura kero ye6-byte. Kuti usadzokorore kukanganisa uku uye kupa mahara kumaoko anotamba eDIYers, SIG yakabva yafunga kuunza 128-bit UUIDs. Izvi pachangu zvinondiyeuchidza nezve 433 MHz bhendi isina rezenisi, iyo yakapihwa marudzi ese eKulibins kubva kuchiteshi cheredhiyo. Kwatiri, 128-bit identifier yemasevhisi uye maitiro akarimwa kunze. Izvi zvinoreva kuti isu, kune masevhisi edu nemidziyo, tinogona kushandisa chero 128-bit kukosha. Zvakangofanana, mukana wekuuya neUUID yakafanana unoenda ku zero.

Muchokwadi, mapfupi 16-bit UUIDs ane kuwedzera kwawo kune 128-bit kukosha. Mukutsanangurwa, iyi yekuwedzera inonzi Bluetooth Base UUID uye ine kukosha 00000000-0000-1000-8000-00805F9B34FB. Kana, semuenzaniso, iyo 16-bit hunhu UUID ine kukosha 0x1234, ipapo yakaenzana 128-bit UUID ichava nehukoshi 00001234-0000-1000-8000-00805F9B34FB. Uye kunyange iyo inoenderana formula inopihwa:

                                128_bit_value = 16_bit_value * 2^96 + Bluetooth_Base_UUID

Handizivi kuti nhamba yemashiripiti iyi yakabva kupi. Kana mumwe wevaverengi anoziva, regai vanyore mumashoko (Mushandisi ane zita remadunhurirwa rokuti Sinopteek akatoita izvi. Ona mashoko). Kana iri yekuuya ne128-bit UUIDs, musimboti unogona kushandisa yakakosha jenaretandiani achakuitira.

ATT GATT...

Chaizvoizvo, ipapo mafaro anotanga. Rega ndikuyeuchidze kuti ATT yakavakirwa pahukama hwevatengi-server. Iye zvino tiri kutarisa kune server device. Iyo ine ruzivo senge sensor kukosha, mwenje switch chimiro, data yenzvimbo, nezvimwe. Iye zvino sezvo vese "vatori vechikamu muparade yedu" vakaverengerwa, isu tinofanirwa kuvaisa mundangariro yemudziyo. Kuti tiite izvi, tinovaisa mutafura inonzi attribute table. Rangarira izvi zvakanaka. Uyu ndiwo moyo chaiwo weBLE. Izvi ndizvo zvatichakurukura zvakare. Zvino tichadaidza mutsara wega wega hunhu. Iyi tafura iri mukati memukati uye, sekutonga, isu hatina mukana wakananga kwairi. Isu tinoitanga uye tinoiwana, asi zvinoitika mukati zvakavanzwa kwatiri kuseri kwezvisimbiso zvinomwe.

Ngatitarisei pamufananidzo kubva pane zvakatemwa, asi zvisati zvaitika, ndinoda kukurumidza kukwevera pfungwa kune inowanzoitika kuvhiringidzika mumashoko, ayo ari mumatsananguro. Basa remutsananguri nderekuzadzisa tsananguro yechimiro. Kana zvichidikanwa kuwedzera kugona kwayo, ipapo zvinotsanangura zvinoshandiswa. Iwowo hunhu, uye senge masevhisi uye hunhu, iwo anowanikwa mune hunhu tafura. Tichavaongorora zvakadzama muchikamu chechipiri chechinyorwa. Nekudaro, dzimwe nguva vatsananguri vanoreva nhamba yemutsara mutafura yehunhu. Izvi zvinofanira kuchengetwa mupfungwa. Kuti tidzivise kuvhiringika, isu tichashandisa izwi rekuti "attribute pointer" kune izvi zvinangwa.
BLE pasi pemaikorosikopu (ATTы GATTы...)

Saka hunhu idiscrete value ine zvinotevera zvivakwa zvine chekuita nazvo:
1. Attribute Handle indekisi yetafura inoenderana nehunhu
2. Attribute Type iUUID inotsanangura mhando yayo
3. Attribute Value idata rakaiswa indexed by the attribute pointer
4. Mvumo yehunhu chikamu chehunhu, mvumo, isingagone kuverengwa kana kunyorwa uchishandisa hunhu protocol.

Nzira yekunzwisisa sei zvose izvi? Iyo hunhu pointer ndeye, zvishoma kutaura, nhamba yayo mutafura yedu.
Inobvumira mutengi kuti ataure hunhu mukuverenga kana kunyora zvikumbiro. Tinogona kuverenga mitsara yedu (hunhu) kubva 0x0001 kusvika 0xFFFF. Mukubatana kwedu nebhuku rebhuku, iyi ndiyo nhamba yekadhi mupepa remabhuku. Nomutoo wakafanana, somundaza yeraibhurari, makadhi akarongwa munhevedzano inowedzera yenhamba. Nhamba yemutsara wega wega unotevera inofanira kunge yakakura kudarika yapfuura. Sezvakangoita muraibhurari, dzimwe nguva mamwe makadhi anorasika, saka nesu, panogona kunge paine mikaha mumutsara wenhamba. Izvi zvinotenderwa. Chinhu chikuru ndechokuti vanoenda zvishoma nezvishoma.

Rudzi rwehunhu runotara kuti hunhu hunomiririrei. Nekufananidza nemutauro weC,
uko kune boolean, nhamba dzakasiyana uye tambo, saka zviri pano. Nemhando yehunhu tinoziva
zvatiri kubata nazvo uye kuti tingaramba sei tichishanda nehunhu uhu. Pazasi isu tichatarisa mamwe marudzi chaiwo ehunhu. Semuyenzaniso, “sevhisi declaration” (0x2800), “characteristic declaration” (0x2803), “descriptor declaration” (0x2902).

Kukosha kwechimiro ndicho chirevo chayo chaicho, regerera tautology. Kana chimiro chechimiro chiri tambo, ipapo kukosha kwehunhu kunogona kuva, semuenzaniso, sirogani "Hello World !!!". Kana chimiro chechimiro chiri "chiziviso chebasa", saka kukosha kwayo ibasa pacharo. Uye dzimwe nguva iyi iruzivo rwekupi kwekuwana humwe hunhu uye zvimiro zvavo.

Mvumo yehunhu inobvumira sevha kuti inzwisise kuti kuverenga kana kunyora kuverenga kunotenderwa.
Ziva kuti zvibvumirano izvi zvinoshanda chete kune kukosha kwehunhu, uye kwete kune chinongedzo, mhando, kana mvumo yemunda pachayo. Avo. kana hunhu hwekurekodha huchibvumidzwa, saka tinogona kushandura, semuenzaniso, mutsara "Mhoro Nyika !!!" kumutsara wekuti "Mangwanani". Asi isu hatigone kurambidza kunyora mutsara mutsva kana kushandura hunhu uye kusarudza mutsara se "sevhisi chiziviso". Kana mutengi akabata sevha, mutengi anokumbira hunhu hwayo. Izvi zvinobvumira mutengi kuziva izvo server inogona kupa. Kunyange zvazvo zvisingakoshi kuverenga nekunyora maitiro.

Chakaita sei

Pfungwa yeGATT ndeyekuunganidza hunhu mutafura yehunhu pamwe chete mune chaiyo uye inonzwisisika kurongeka. Ngatinyatso tarisisa kurova kwemoyo pazasi. Koramu yekuruboshwe yetafura iyi ndeyekusarudza. Inongotsanangura kwatiri kuti mutsara uyu (hunhu) chii. Mamwe makoramu ese atove kujaira kwatiri.

BLE pasi pemaikorosikopu (ATTы GATTы...)

Pamusoro peboka rega rega tinogara tine chiziviso chebasa. Rudzi rwayo runogara ruri 0x2800, uye chinongedzo chinoenderana nekuti vangani hunhu hwatovepo mutafura. Mvumo dzayo dzinogara dzichiverengwa-chete, pasina humbowo kana mvumo. Tichazotaura nezve pfungwa idzi zvishoma gare gare. Kukosha ndeimwe UUID inoratidza kuti sevhisi chii. MuTafura, kukosha ndeye 0x180D, iyo inotsanangurwa neBluetooth SIG sevhisi yekurova kwemoyo.

Mushure mekuziviswa kwesevhisi, kunouya kuziviswa kwehunhu. Zvakafanana muchimiro nechiziviso chebasa. UUID yayo inogara iri 0x2803, uye mvumo yayo inogara ichiverengwa-chete pasina humbowo kana mvumo. Ngatitarisei iyo Attribute Value ndima, iyo inosanganisira imwe data. Iyo inogara iine pointer, UUID, uye seti yezvivakwa. Zvinhu zvitatu izvi zvinotsanangura kuziviswa kunotevera kwekukosha kwehunhu. Iyo pointer inonyatso ratidza nzvimbo yehukoshi ziviso mutafura yehunhu. Iyo UUID inotsanangura rudzi rweruzivo kana kukosha kwatingatarisira. Semuenzaniso, kukosha kwekushisa, mamiriro ekuchinja kwechiedza, kana humwe humwe hunokosha. Uye pakupedzisira zvivakwa, izvo zvinotsanangura kuti hunhu hunokosha hunogona kufambiswa sei.

Imwe gomba yakatimirira pano. Iyo yakabatana nemvumo yehunhu uye hunhu zvimiro. Ngatitarisei mufananidzo weiyo bit munda zvivakwa kubva kune yakatarwa.

BLE pasi pemaikorosikopu (ATTы GATTы...)

Sezvauri kuona, kune zvakare minda pano inopa kugona kuverenga nekunyora. Unogona kunge uchinetseka kuti sei takaverenga / kunyora mvumo yehunhu uye pfuma
verenga/nyora kuti uone kukosha kwehunhu? Havafaniri kugara vakafanana here? Icho chokwadi ndechekuti zvivakwa zvehunhu kukosha zvinongori kurudziro kune mutengi anoshandiswa muGATT uye maapplication layer. Aya angori mazano pamusoro pezvingatarisirwa nemutengi kubva kuhunhu hwekuzivisa hunhu. Ngatitarisei izvi zvakadzama. Ndeapi marudzi emvumo ane hunhu?

1. Mvumo yekuwana:
     - kuverenga
     - rekodhi
     - Verenga nekunyora
2. Mvumo yekusimbisa:
     - chokwadi chinodiwa
     - hapana huchokwadi hunodiwa
3. Mvumo yemvumo:
     - mvumo inodiwa
     - hapana mvumo inodiwa

Musiyano mukuru pakati pekugadziriswa kwehunhu uye zvimiro zvehunhu ndewekuti yekutanga inoshanda kumaseva, uye ekupedzisira kune vatengi. Sevha inogona kutenderwa kuverenga kukosha kwehunhu, asi ingangoda kuvimbiswa kana mvumo. Naizvozvo, kana mutengi achikumbira zvimiro zvehunhu, tinogashira kuti kuverenga kunobvumidzwa. Asi patinoedza kuverenga, tinowana kukanganisa. Naizvozvo, tinogona kutaura zvakachengeteka nezve kukosha kwemvumo pamusoro pezvivakwa. Kudivi revatengi, isu hatigone kuwana ruzivo rwekuti ndezvipi mvumo ine hunhu.

Descriptor

Ngatidzokere patafura yedu. Mushure mekuzivisa kukosha kwechimiro, zvinotevera hunhu zviziviso zvinogoneka:
1. Kuziviswa kutsva kwehunhu (sevhisi inogona kuve nezvakawanda maitiro)
2. Chiziviso chitsva chebasa (panogona kunge paine akawanda awo mutafura)
3. Kuzivisa mubato

Muchiitiko chekuyera kwemoyo kuyera hunhu, mutafura yedu, kuziviswa kwehunhu hunokosha kunoperekedzwa nekuziviswa kweanotsanangura. Descriptor hunhu hune rumwe ruzivo nezve hunhu. Kune marudzi akawanda ezvitsanangudzo. Tichataura pamusoro pavo zvakadzama muchikamu chechipiri chechinyorwa chino. Parizvino, tichangobata paClient Characteristic Configuration Descriptor (CCCD). Iyo ine UUID yakaenzana ne0x2902. Uchishandisa iyi tsananguro, mutengi ane kugona kugonesa chiratidzo kana chiziviso pane server. Musiyano pakati pavo mudiki, asi uchiripo. Chiziviso hachidi kusimbiswa kwekugamuchira kubva kune mutengi. Chiratidzo chinoda izvi, kunyangwe zvichiitika padanho reGATT, kwete kusvika padanho rekushandisa. Sei zvakadaro, iwe unobvunza? Maiwe, handizive izvi. Rega nditaure kuti nyanzvi dzeNordic dzinokurudzira kushandisa zviziviso. Uyezve, kutarisa kutendeseka kwepakeji (uchishandisa CRC) kunoitika mune ese ari maviri.

mhedziso

Pakupera kwechinyorwa ndinoda kutaura izvi. Tafura yekupedzisira inokanganisa zvishoma. Nekudaro, ndakaisarudza nekuti yakapihwa mukati chinyorwa, yandinovimba nayo. Muchikamu chechipiri chechinyorwa changu, ini ndinoda kuzama zvakadzama muBlueTooth 4.0 yakatarwa. Mamwe madhayagiramu echokwadi nemadhirowa akatimirira ipapo. Muchikamu chechitatu, ndinoda kuburitsa irogi rakawanikwa uchishandisa chirongwa cheWireshark kubva kune chimwe chemagetsi uye kuona "rarama" dzidziso yese yatiri kudzidza.

Mushandi weBoka reMakambani "Caesar Satellite"
Pecherskikh Vladimir

Source: www.habr.com

Voeg