BLE chini ya darubini (ATTы GATTы…)

BLE chini ya darubini (ATTы GATTы...)

BLE chini ya darubini (ATTы GATTы…)

Sehemu ya 1, muhtasari

Muda mrefu tayari umepita tangu vipimo vya kwanza vya Bluetooth 4.0 kutolewa. Na, ingawa mada ya BLE inavutia sana, bado inawaacha watengenezaji wengi kwa sababu ya ugumu wake. Katika makala zangu zilizopita, niliangalia zaidi kiwango cha chini kabisa, Tabaka la Kiungo na Tabaka la Kimwili. Hili lilituruhusu kuepuka kukimbilia dhana tata na zenye kutatanisha kama vile Itifaki ya Sifa (ATT) na Wasifu wa Sifa ya Jumla (GATT). Hata hivyo, hakuna mahali pa kwenda, bila kuwaelewa, haiwezekani kuendeleza vifaa vinavyolingana. Leo ningependa kukushirikisha ujuzi huu. Katika makala yangu nitategemea kitabu cha maandishi kwa Kompyuta kutoka kwa tovuti ya Nordic. Basi hebu tuanze.

Kwa nini kila kitu ni ngumu sana?

Kwa maoni yangu, ilikuwa wazi mara moja kuwa kusimamia vifaa kupitia simu mahiri ni mada ya kuahidi sana na ya muda mrefu. Kwa hivyo, waliamua kuunda mara moja na kwa kiwango cha juu. Ili watengenezaji wa vifaa anuwai wasije na itifaki zao, ambazo hazitaendana. Kwa hivyo ugumu. Tayari katika hatua ya kwanza, walijaribu kufinya kila kitu kinachowezekana kwenye itifaki ya BLE. Na haijalishi ikiwa itakuwa muhimu baadaye au la. Kwa kuongeza, walitoa uwezekano wa kupanua orodha ya vifaa kwa siku zijazo.

Hebu tuangalie picha ambapo mchoro wa itifaki ya BLE umechorwa. Inajumuisha tabaka kadhaa. Safu ya chini kabisa (PHY) inawajibika kwa idhaa ya redio ya kifaa. Safu ya Kiungo(LL) ina mlolongo mzima wa baiti katika ujumbe unaotumwa. Katika makala zilizopita tulijifunza hili hasa. Kiolesura cha Kidhibiti cha Seva (HCI) ni itifaki ya kubadilishana kati ya safu za BLE au chip ikiwa Kidhibiti na Seva inatekelezwa kwenye chip tofauti. Itifaki ya Udhibiti wa Kiungo na Marekebisho ya Kimantiki (L2CAP) inawajibika kwa uundaji wa pakiti, uundaji, udhibiti wa makosa na mkusanyiko wa pakiti. Itifaki ya Meneja wa Usalama (SMP) inawajibika kwa usimbaji wa pakiti. Wasifu wa Ufikiaji wa Jumla (GAP) unawajibika kwa ubadilishanaji wa data wa awali kati ya vifaa ili kubaini "Nani ni nani". Pia inajumuisha skanning na utangazaji. Katika makala hii nitazingatia sehemu mbili zilizobaki za itifaki - GATT na ATT. GATT ni muundo mkuu wa ATT, kwa hivyo zimeunganishwa kwa karibu.

BLE chini ya darubini (ATTы GATTы...)

Ili kurahisisha hadithi, ningependa kurejea kwa mlinganisho. Niliisikia mahali fulani na ningependa kuiunga mkono. Fikiria kifaa cha BLE kama kabati la vitabu lenye rafu kadhaa. Kila rafu ni mada tofauti. Kwa mfano, tuna rafu zenye hadithi za uwongo za sayansi, hisabati na ensaiklopidia. Katika kila rafu kuna vitabu vyenye mada maalum. Na vitabu vingine hata vina alamisho za karatasi zilizo na maelezo. Kwa kuongeza, tuna orodha ndogo ya karatasi ya vitabu vyote. Ikiwa unakumbuka, maktaba za shule ni sanduku nyembamba na kadi za karatasi. Kwa mfano huu, baraza la mawaziri ni wasifu wa kifaa chetu. Rafu ni huduma, vitabu ni sifa, na orodha ni jedwali la sifa. Alamisho katika vitabu ni maelezo, ambayo pia nitazungumza juu yake baadaye kwa undani zaidi.

Mtu yeyote ambaye ametengeneza vifaa anajua kwamba miradi mingi ina vipande sawa vya kanuni. Ukweli ni kwamba vifaa vingi vina utendaji sawa. Kwa mfano, ikiwa vifaa vinatumiwa na betri, basi tatizo la malipo na ufuatiliaji wa kiwango chao kitakuwa sawa. Vile vile huenda kwa sensorer. Kwa kweli, mbinu inayolenga kitu kwa upangaji "hutoa uwezo wa kuunda vitu vinavyochanganya mali na tabia katika umoja unaojitosheleza ambao unaweza kutumika tena". Kwa maoni yangu, BLE ilijaribu mbinu kama hiyo. Profaili zilitengenezwa na Kikundi cha Maslahi Maalum cha Bluetooth (SIG). Vifaa kutoka kwa wazalishaji tofauti ambao wana wasifu sawa wanapaswa kufanya kazi kwa kila mmoja bila shida. Profaili, kwa upande wake, inajumuisha huduma, na huduma za sifa, zikisaidiwa na maelezo. Kwa ujumla inaweza kuonekana kama hii:

BLE chini ya darubini (ATTы GATTы...)

Kwa mfano, fikiria mchoro wa wasifu wa kufuatilia kiwango cha moyo (bangili ya fitness). Inajumuisha huduma mbili na sifa kadhaa. Kutoka kwake uongozi wa wasifu unakuwa wazi mara moja. Tabia ya kituo cha ukaguzi huweka upya hesabu ya jumla ya matumizi ya kalori hadi sifuri.

1. Huduma ya mapigo ya moyo inajumuisha sifa tatu (0x180D):
    a) Tabia ya lazima ya kiwango cha moyo (0x2A37)
    b) Sifa ya hiari ya nafasi ya kihisi cha mwili (0x2A38)
    c) Tabia za masharti za kiwango cha udhibiti wa kiwango cha moyo (0x2A39)
2. Huduma ya matengenezo ya betri (0x180F):
    a) Tabia ya kiwango cha malipo ya betri ya lazima (0x2A19)

UUID

Ili tuweze kufikia vipengele vya wasifu kwa njia ya kipekee (huduma, sifa na maelezo), tunahitaji kuvihesabu vyote kwa namna fulani. Kwa madhumuni haya, dhana kama vile Kitambulisho cha Kipekee kwa Wote (UUID) au Kitambulisho cha Kipekee kwa Wote kinaletwa. UUID imeonyeshwa kwenye mabano ya kila mstari. Na kuna upekee mmoja hapa. Kwa UUID, tuliamua kutumia msimbo wa urefu wa biti 16 na 128. Kwanini unauliza? Katika itifaki ya BLE, kila kitu kinahusu uhifadhi wa nishati. Kwa hiyo, mwelekeo wa bits 16 ni busara kabisa. Haiwezekani kwamba zaidi ya elfu 65 wataundwa katika siku za usoni. huduma na sifa za kipekee. Kwa sasa, kila kitu ambacho kingeweza kuhesabiwa tayari (kumbuka hii ilitoka wapi - "alikuhesabu wewe pia" :-)) Vipengee vya nambari. maelezo mafupi, ya huduma, sifa и wafafanuzi unaweza kuangalia viungo.

Hata hivyo, nadhani kila mtu anakumbuka hadithi na baiti 4 za anwani za IP kwenye mtandao. Mara ya kwanza tulifikiri hiyo ilikuwa ya kutosha, lakini sasa bado hatuwezi kubadili anwani ya 6-byte. Ili kutorudia kosa hili na kutoa udhibiti wa bure kwa mikono ya kucheza ya DIYers, SIG iliamua mara moja kuanzisha UUID za 128-bit. Hii inanikumbusha kibinafsi bendi isiyo na leseni ya 433 MHz, ambayo ilipewa kila aina ya Kulibins kutoka kwa kituo cha redio. Kwa upande wetu, kitambulisho cha 128-bit cha huduma na sifa kilitolewa nje. Hii inamaanisha kuwa sisi, kwa huduma na vifaa vyetu, tunaweza kutumia karibu thamani yoyote ya 128-bit. Vivyo hivyo, uwezekano wa kuja na UUID sawa huelekea sifuri.

Kwa kweli, UUID fupi za 16-bit zina ugani wao hadi thamani ya 128-bit. Katika vipimo, kiendelezi hiki kinaitwa Bluetooth Base UUID na ina thamani 00000000-0000-1000-8000-00805F9B34FB. Ikiwa, kwa mfano, sifa ya 16-bit UUID ina thamani 0x1234, basi UUID ya 128-bit sawa itakuwa na thamani 00001234-0000-1000-8000-00805F9B34FB. Na hata formula inayolingana imepewa:

                                128_bit_value = 16_bit_value * 2^96 + Bluetooth_Base_UUID

Sijui nambari hii ya uchawi ilitoka wapi. Ikiwa yeyote wa wasomaji anajua, waache waandike kwenye maoni (Mtumiaji aliye na jina la utani la Sinopteek tayari amefanya hivi. Tazama maoni). Kuhusu kuja na UUID za 128-bit, kwa kanuni unaweza kutumia maalum jeneretanani atakufanyia.

ATT GATT...

Kweli, basi furaha huanza. Acha nikukumbushe kwamba ATT inategemea uhusiano wa seva ya mteja. Sasa tunaangalia kifaa cha seva. Ina maelezo kama vile thamani za vitambuzi, hali ya kubadili mwanga, data ya eneo, n.k. Sasa kwa kuwa "washiriki wote katika gwaride letu" wamehesabiwa, tunahitaji kwa namna fulani kuwaweka kwenye kumbukumbu ya kifaa. Ili kufanya hivyo, tunawaweka kwenye meza inayoitwa meza ya sifa. Kumbuka hili vizuri. Huu ndio moyo wa BLE. Hili ndilo tutazingatia zaidi. Sasa tutaita kila mstari sifa. Jedwali hili liko ndani kabisa ya safu na, kama sheria, hatuna ufikiaji wa moja kwa moja kwake. Tunaianzisha na kuifikia, lakini kile kinachotokea ndani kimefichwa kutoka kwetu nyuma ya mihuri saba.

Wacha tuangalie picha kutoka kwa uainishaji, lakini kabla ya hapo, ningependa kuzingatia mara moja machafuko ya mara kwa mara katika suala, ambayo ni katika maelezo. Jukumu la mfafanuzi ni kukamilisha maelezo ya sifa. Wakati ni muhimu kupanua uwezo wake, basi maelezo hutumiwa. Pia ni sifa, na kama huduma na sifa, ziko kwenye jedwali la sifa. Tutazichunguza kwa undani katika sehemu ya pili ya kifungu hicho. Walakini, wakati mwingine maelezo hurejelea nambari ya safu kwenye jedwali la sifa. Hili lazima likumbukwe. Ili kuepuka kuchanganyikiwa, tutatumia neno "pointer ya sifa" kwa madhumuni haya.
BLE chini ya darubini (ATTы GATTы...)

Kwa hivyo sifa ni dhamana ya kipekee ambayo ina sifa zifuatazo zinazohusiana nayo:
1. Hushughulikia Sifa ni faharasa ya jedwali inayolingana na sifa
2. Aina ya Sifa ni UUID inayoelezea aina yake
3. Thamani ya Sifa ni data iliyoorodheshwa na kiashirio cha sifa
4. Ruhusa za Sifa ni sehemu ya sifa, ruhusa, ambayo haiwezi kusomwa au kuandikwa kwa kutumia itifaki ya sifa.

Jinsi ya kuelewa haya yote? Kiashiria cha sifa ni, kwa kusema, nambari yake kwenye jedwali letu.
Huruhusu mteja kurejelea sifa katika maombi ya kusoma au kuandika. Tunaweza nambari za mistari (sifa) kutoka 0x0001 hadi 0xFFFF. Katika ushirikiano wetu na kabati la vitabu, hii ndiyo nambari ya kadi katika orodha ya karatasi. Vile vile, kama katika orodha ya maktaba, kadi zimepangwa kwa mpangilio unaoongezeka wa idadi. Idadi ya kila mstari unaofuata lazima iwe kubwa kuliko ya awali. Kama tu katika maktaba, wakati mwingine kadi zingine hupotea, kwa hivyo na sisi, kunaweza kuwa na mapungufu katika nambari za mstari. Hii inaruhusiwa. Jambo kuu ni kwamba wanakwenda hatua kwa hatua.

Aina ya sifa huamua sifa hiyo inawakilisha nini. Kwa kulinganisha na lugha ya C,
ambapo kuna boolean, vigezo vya nambari na kamba, kwa hivyo iko hapa. Kwa aina ya sifa tunatambua
tunashughulikia nini na jinsi gani tunaweza kuendelea kufanya kazi na sifa hii. Hapa chini tutaangalia baadhi ya aina maalum za sifa. Kwa mfano, "tamko la huduma" (0x2800), "tamko la tabia" (0x2803), "tamko la kielezi" (0x2902).

Thamani ya sifa ni maana yake halisi, samehe tautolojia. Ikiwa aina ya sifa ni kamba, basi thamani ya sifa inaweza kuwa, kwa mfano, kauli mbiu "Hello World !!!". Ikiwa aina ya sifa ni "tamko la huduma", basi thamani yake ni huduma yenyewe. Na wakati mwingine hii ni habari kuhusu wapi kupata sifa nyingine na mali zao.

Ruhusa za sifa huruhusu seva kuelewa ikiwa ufikiaji wa kusoma au kuandika unaruhusiwa.
Kumbuka kwamba ruhusa hizi zinatumika tu kwa thamani ya sifa, na si kwa pointer, aina, au sehemu ya ruhusa yenyewe. Wale. ikiwa kurekodi sifa kunaruhusiwa, basi tunaweza kubadilisha, kwa mfano, mstari "Hujambo Ulimwengu !!!" kwa mstari "Habari za asubuhi". Lakini hatuwezi kuzuia kuandika laini mpya au kubadilisha aina ya sifa na kubainisha laini kama "tamko la huduma". Wakati mteja anawasiliana na seva, mteja huomba sifa zake. Hii inaruhusu mteja kujua nini seva inaweza kutoa. Ingawa sio lazima kusoma na kuandika maadili.

Inaonekanaje

Wazo la GATT ni kuweka pamoja sifa katika jedwali la sifa katika mpangilio maalum na wa kimantiki. Hebu tuangalie kwa karibu maelezo mafupi ya mapigo ya moyo hapa chini. Safu wima ya kushoto kabisa ya jedwali hili ni ya hiari. Inatuelezea kwa urahisi mstari huu (sifa) ni nini. Safu wima zingine zote tayari tunazifahamu.

BLE chini ya darubini (ATTы GATTы...)

Juu ya kila kikundi tunakuwa na sifa ya tangazo la huduma kila wakati. Aina yake daima ni 0x2800, na pointer inategemea jinsi sifa nyingi tayari zipo kwenye meza. Ruhusa zake ni za kusoma tu kila wakati, bila uthibitishaji au idhini yoyote. Tutazungumza juu ya dhana hizi baadaye kidogo. Thamani ni UUID nyingine ambayo inabainisha huduma ni nini. Katika Jedwali, thamani ni 0x180D, ambayo inafafanuliwa na Bluetooth SIG kama huduma ya mapigo ya moyo.

Kufuatia tangazo la huduma, inakuja tangazo la sifa. Ni sawa katika fomu na tangazo la huduma. UUID yake ni 0x2803 kila wakati, na ruhusa zake husomwa tu bila uthibitishaji au idhini yoyote. Wacha tuangalie sehemu ya Thamani ya Sifa, ambayo inajumuisha data fulani. Daima huwa na pointer, UUID, na seti ya mali. Vipengele hivi vitatu vinaelezea tamko linalofuata la thamani ya sifa. Kielekezi kwa kawaida huashiria eneo la tamko la thamani bainifu katika jedwali la sifa. UUID inaeleza ni aina gani ya maelezo au thamani tunayoweza kutarajia. Kwa mfano, thamani ya joto, hali ya kubadili mwanga, au thamani nyingine ya kiholela. Na hatimaye mali, ambayo inaelezea jinsi thamani ya tabia inaweza kuingiliana nayo.

Shida nyingine inatungoja hapa. Inahusishwa na ruhusa za sifa na sifa za tabia. Wacha tuangalie picha ya mali kidogo ya uwanja kutoka kwa vipimo.

BLE chini ya darubini (ATTы GATTы...)

Kama unavyoona, pia kuna sehemu hapa ambazo hutoa uwezo wa kusoma na kuandika. Unaweza kuwa unashangaa kwa nini tuna ruhusa za kusoma/kuandika kwa sifa na mali
kusoma / kuandika kwa thamani ya tabia? Je! hazipaswi kuwa sawa kila wakati? Ukweli ni kwamba mali kwa thamani ya tabia ni kweli tu mapendekezo kwa mteja kutumika katika GATT na tabaka za maombi. Hizi ni vidokezo tu kuhusu kile mteja anaweza kutarajia kutoka kwa sifa ya tamko la tabia. Hebu tuangalie hili kwa undani zaidi. Je, sifa ina aina gani za ruhusa?

1. Ruhusa za ufikiaji:
     - kusoma
     - rekodi
     - Soma na andika
2. Ruhusa ya uthibitishaji:
     - uthibitishaji unahitajika
     - hakuna uthibitishaji unaohitajika
3. Ruhusa ya uidhinishaji:
     - idhini inahitajika
     - hakuna idhini inayohitajika

Tofauti kuu kati ya azimio la sifa na sifa za tabia ni kwamba ya kwanza inatumika kwa seva, na ya mwisho kwa wateja. Seva inaweza kuruhusiwa kusoma thamani ya sifa, lakini inaweza kuhitaji uthibitishaji au uidhinishaji. Kwa hiyo, wakati mteja anaomba mali ya tabia, tutapokea kwamba kusoma kunaruhusiwa. Lakini tunapojaribu kusoma, tunapata kosa. Kwa hivyo, tunaweza kuzungumza kwa usalama juu ya kipaumbele cha ruhusa juu ya mali. Kwa upande wa mteja, hatuwezi kupata ujuzi wa ruhusa ambazo sifa inazo.

Kifafanuzi

Turudi kwenye meza yetu. Baada ya kutangaza thamani ya sifa, matamko ya sifa yafuatayo yanawezekana:
1. Tangazo jipya la sifa (huduma inaweza kuwa na sifa nyingi)
2. Tamko jipya la huduma (kunaweza kuwa nyingi kati yao kwenye jedwali)
3. Kutangaza kushughulikia

Katika kesi ya tabia ya kipimo cha kiwango cha moyo, katika meza yetu, tamko la thamani ya tabia linaambatana na tamko la maelezo. Kifafanuzi ni sifa iliyo na maelezo ya ziada kuhusu sifa. Kuna aina kadhaa za maelezo. Tutazungumza juu yao kwa undani katika sehemu ya pili ya nakala hii. Kwa sasa, tutagusa tu Kifafanuzi cha Usanidi wa Tabia ya Mteja (CCCD). Ina UUID sawa na 0x2902. Kwa kutumia kifafanuzi hiki, mteja ana uwezo wa kuwezesha alamisho au arifa kwenye seva. Tofauti kati yao ni ndogo, lakini bado iko. Arifa haihitaji uthibitisho wa kupokea kutoka kwa mteja. Dalili inahitaji hili, ingawa hutokea katika kiwango cha GATT, si kufikia kiwango cha maombi. Kwa nini hivyo, unauliza? Ole, sijui hili. Acha niseme tu kwamba wataalam wa Nordic wanapendekeza kutumia arifa. Kwa kuongezea, kuangalia uadilifu wa kifurushi (kwa kutumia CRC) hufanyika katika visa vyote viwili.

Hitimisho

Mwishoni mwa makala ningependa kusema hivi. Jedwali la mwisho linachanganya kidogo. Walakini, niliichagua kwa sababu imetolewa Ibara ya, ambayo ninategemea. Katika sehemu ya pili ya nakala yangu, ninakusudia kuzama zaidi katika maelezo ya BlueTooth 4.0. Michoro na michoro sahihi zaidi zinatungoja hapo. Katika sehemu ya tatu, ningependa kuchanganua logi iliyopatikana kwa kutumia programu ya Wireshark kutoka kwa moja ya vifaa na kuona "kuishi" nadharia yote ambayo tunasoma.

Mfanyakazi wa Kundi la Makampuni "Satellite ya Kaisari"
Pecherskikh Vladimir

Chanzo: mapenzi.com

Kuongeza maoni