BLE anba yon mikwoskòp (ATTы GATTы...)

BLE anba yon mikwoskòp (ATTы GATTы...)

BLE anba yon mikwoskòp (ATTы GATTы...)

Pati 1, BECA

Gen yon bon bout tan deja pase depi premye spesifikasyon pou Bluetooth 4.0 te lage. Epi, byenke sijè BLE a trè enteresan, li toujou mete anpil devlopè akòz konpleksite li yo. Nan atik anvan mwen yo, mwen sitou gade nan nivo ki pi ba a, Kouch Link ak Kouch Fizik. Sa a te pèmèt nou evite gen pou nou ale nan konsèp konplèks ak konfizyon tankou Pwotokòl Atribi (ATT) ak Profile Atribi Jeneral (GATT). Sepandan, pa gen okenn kote yo ale, san yo pa konprann yo, li enposib yo devlope aparèy konpatib. Jodi a mwen ta renmen pataje konesans sa a avèk ou. Nan atik mwen an mwen pral konte sou liv pou débutan nan sit entènèt nòdik la. Se konsa, ann kòmanse.

Poukisa tout bagay difisil konsa?

Dapre mwen, li te imedyatman klè ke jere aparèy atravè smartphones se yon sijè trè pwomèt ak ki dire lontan. Se poutèt sa, yo deside estrikti li imedyatman ak maksimòm la. Se konsa, ke manifaktirè nan gadjèt divès kalite pa vini ak pwotokòl pwòp yo, ki pral Lè sa a, enkonpatib. Pakonsekan difikilte a. Deja nan premye etap la, yo te eseye peze tout sa ki posib nan pwotokòl la BLE. Epi li pa enpòtan si li pral itil pita oswa ou pa. Anplis de sa, yo bay pou posibilite pou elaji lis la nan aparèy pou lavni an.

Ann gade foto kote dyagram pwotokòl BLE a trase. Li konsiste de plizyè kouch. Kouch fizik ki pi ba a (PHY) responsab chanèl radyo aparèy la. Link Layer (LL) gen tout sekans bytes nan mesaj transmèt la. Nan atik anvan nou etidye egzakteman sa a. Host Controller Interface (HCI) se yon pwotokòl echanj ant kouch BLE oswa chips si Kontwolè a ak Host yo aplike sou chip diferan. Kontwòl Lyen lojik ak Pwotokòl Adaptasyon (L2CAP) responsab pou fòmasyon pake, ankadre, kontwòl erè ak asanble pake. Pwotokòl Manadjè Sekirite (SMP) responsab pou chifreman pake yo. Profil Aksè Jeneral la (GAP) responsab pou premye echanj done ant aparèy pou detèmine "Ki moun ki moun". Li gen ladan tou optik ak piblisite. Nan atik sa a mwen pral konsantre sou de pati ki rete nan pwotokòl la - GATT ak ATT. GATT se yon sipèstrikti ATT, kidonk yo byen mare.

BLE anba yon mikwoskòp (ATTы GATTы...)

Pou senplifye istwa a, mwen ta renmen ale nan yon analoji. Mwen tande li yon kote epi mwen ta renmen sipòte li. Panse a yon aparèy BLE kòm yon etajè liv ak plizyè etajè. Chak etajè se yon tèm separe. Pa egzanp, nou gen etajè ak syans fiksyon, matematik, ak ansiklopedi. Sou chak etajè gen liv ki gen yon sijè espesifik. Ak kèk liv menm gen signets papye ak nòt. Anplis de sa, nou gen yon ti katalòg papye nan tout liv. Si w sonje, bibliyotèk lekòl yo se yon bwat etwat ak kat papye. Avèk analoji sa a, kabinè a se pwofil aparèy nou an. Etajè yo se sèvis, liv yo se karakteristik, ak katalòg la se yon tab atribi. Bookmarks nan liv yo se deskriptè, ke mwen pral pale sou pita nan plis detay.

Nenpòt moun ki te devlope aparèy konnen ke anpil pwojè gen moso kòd menm jan an. Reyalite a se ke anpil aparèy gen fonksyonalite menm jan an. Pou egzanp, si aparèy yo mache ak pil, Lè sa a, pwoblèm nan nan chaje ak kontwole nivo yo pral menm bagay la. Menm bagay la tou ale pou detèktè. Aktyèlman, yon apwòch objè-oryante nan pwogramasyon "bay kapasite pou kreye objè ki konbine pwopriyete ak konpòtman nan yon sendika endepandan ki ka Lè sa a, dwe reyitilize". Dapre mwen, BLE te eseye yon apwòch menm jan an. Pwofil yo te devlope pa Gwoup Enterè Espesyal Bluetooth (SIG). Aparèy ki soti nan manifaktirè diferan ki gen menm pwofil yo ta dwe travay youn ak lòt san difikilte. Des, nan vire, konpoze de sèvis, ak sèvis nan karakteristik, complétée pa deskriptè. An jeneral, li ta ka sanble tankou sa a:

BLE anba yon mikwoskòp (ATTы GATTы...)

Pou egzanp, konsidere dyagram nan pwofil nan yon monitè batman kè (braslè fòm). Li konsiste de de sèvis ak plizyè karakteristik. Soti nan yerachi pwofil la imedyatman vin klè. Karakteristik pòs kontwòl la retabli konte total depans kalori a zewo.

1. Sèvis batman kè a gen ladan twa karakteristik (0x180D):
    a) Karakteristik batman kè obligatwa (0x2A37)
    b) Karakteristik pozisyon detèktè kò opsyonèl (0x2A38)
    c) Karakteristik kondisyonèl pwen kontwòl batman kè (0x2A39)
2. Sèvis antretyen batri (0x180F):
    a) Karakteristik nivo chaj batri obligatwa (0x2A19)

UUID

Pou nou jwenn aksè inik nan eleman pwofil yo (sèvis, karakteristik ak deskriptè), nou bezwen nimewo yo tout yon jan kanmenm. Pou rezon sa a, yo prezante yon konsèp tankou Universally Unique ID (UUID) oswa Universally Unique Identifier. UUID a endike nan parantèz yo nan chak liy. Apre sa, gen yon sengularite isit la. Pou UUID, nou deside sèvi ak yon kòd ki gen 16 ak 128 bit nan longè. Poukisa ou mande? Nan pwotokòl BLE a, tout bagay se sou konsèvasyon enèji. Se poutèt sa, dimansyon 16 Bits se byen rezonab. Li se fasil ke plis pase 65 mil yo pral kreye nan fiti prè. sèvis inik ak karakteristik. Nan moman sa a, tout sa yo te kapab deja konte (sonje kote sa a soti - "li te konte ou tou" :-)) Eleman nimewote pwofil yo, sèvis yo, karakteristik и deskriptè yo ou ka gade nan lyen yo.

Sepandan, mwen panse ke tout moun sonje istwa a ak 4 bytes nan adrès IP sou entènèt la. Okòmansman nou te panse sa te ase, men kounye a nou toujou pa ka chanje nan yon adrès 6-byte. Yo nan lòd yo pa repete erè sa a epi bay men yo jwe brikoleur yo, SIG imedyatman deside prezante UUID 128-bit. Sa pèsonèlman fè m sonje nan gwoup la san lisans 433 MHz, ki te bay tout kalite Kulibins nan chanèl radyo a. Nan ka nou an, yo te fè yon idantifyan 128-bit nan sèvis ak karakteristik yo. Sa vle di ke nou, pou sèvis nou yo ak aparèy nou yo, ka itilize prèske nenpòt valè 128-bit. Menm jan an tou, pwobabilite pou vini ak menm UUID la gen tandans a zewo.

An reyalite, kout UUID 16-bit gen ekstansyon yo nan yon valè 128-bit. Nan spesifikasyon la, ekstansyon sa a rele Bluetooth Base UUID e li gen valè 00000000-0000-1000-8000-00805F9B34FB. Si, pou egzanp, UUID atribi 16-bit la gen valè 0x1234, Lè sa a, UUID 128-bit ekivalan a ap gen valè 00001234-0000-1000-8000-00805F9B34FB. E menm fòmil korespondan an bay:

                                128_bit_value = 16_bit_value * 2^96 + Bluetooth_Base_UUID

Mwen pa konnen ki kote nimewo majik sa a soti. Si nenpòt nan lektè yo konnen, kite yo ekri nan kòmantè yo (Yon itilizatè ki gen tinon Sinopteek te deja fè sa. Gade kòmantè yo). Kòm pou vini ak UUID 128-bit, an prensip ou ka itilize yon espesyal dèlkoki moun ki pral fè li pou ou.

ATTy GATTy...

Aktyèlman, Lè sa a, plezi a kòmanse. Kite m raple w ke ATT baze sou yon relasyon kliyan-sèvè. Koulye a, nou ap gade aparèy sèvè a. Li gen enfòmasyon tankou valè Capteur, estati switch limyè, done kote, elatriye. Kounye a ke tout "patisipan yo nan parad nou an" yo konte, nou bezwen yon jan kanmenm mete yo nan memwa aparèy la. Pou fè sa, nou mete yo nan yon tab ki rele yon tab atribi. Sonje byen sa. Sa a se kè BLE a. Sa a se sa nou pral konsidere pi lwen. Koulye a, nou pral rele chak liy yon atribi. Tablo sa a sitiye byen fon nan chemine a epi, kòm yon règ, nou pa gen aksè dirèk nan li. Nou inisyalize li epi jwenn aksè nan li, men sa k ap pase anndan an kache pou nou dèyè sèt sele.

Ann gade nan foto ki soti nan spesifikasyon la, men anvan sa, mwen ta renmen imedyatman atire atansyon sou konfizyon an souvan an tèm, sètadi nan deskriptè. Wòl deskriptè a se konpleman deskripsyon karakteristik la. Lè li nesesè pou elaji kapasite li yo, Lè sa a, deskriptè yo itilize. Yo se tou atribi, e menm jan ak sèvis ak karakteristik yo, yo sitiye nan tablo atribi yo. Nou pral egzamine yo an detay nan dezyèm pati atik la. Sepandan, pafwa deskriptè yo refere a nimewo ranje nan tablo atribi yo. Sa a dwe kenbe nan tèt ou. Pou evite konfizyon, nou pral sèvi ak tèm "atribi pointer" pou rezon sa yo.
BLE anba yon mikwoskòp (ATTы GATTы...)

Se konsa, yon atribi se yon valè disrè ki gen pwopriyete sa yo ki asosye ak li:
1. Manch atribi se endèks tab ki koresponn ak atribi a
2. Kalite atribi se yon UUID ki dekri kalite li
3. Valè atribi se done yo endis pa pointeur atribi yo
4. Otorizasyon atribi yo se yon pati nan yon atribi, otorizasyon ki pa ka     li oswa ekri lè l sèvi avèk pwotokòl atribi yo.

Ki jan yo konprann tout bagay sa yo? Pointeur atribi a se, relativman pale, nimewo li nan tablo nou an.
Li pèmèt yon kliyan fè referans a yon atribi nan demann li oswa ekri. Nou ka nimewote liy nou yo (atribi) soti nan 0x0001 a 0xFFFF. Nan asosyasyon nou an ak etajè liv la, sa a se nimewo kat nan katalòg papye a. Menm jan an tou, tankou nan katalòg bibliyotèk la, kat yo ranje nan lòd ogmante nan kantite. Nimewo a nan chak liy ki vin apre yo dwe pi gran pase youn anvan an. Jis tankou nan bibliyotèk la, pafwa kèk kat pèdi, kidonk avèk nou, ka gen twou vid ki genyen nan nimero liy lan. Sa a se pèmèt. Bagay pwensipal lan se ke yo ale progresivman.

Kalite atribi a detèmine kisa atribi a reprezante. Pa analoji ak lang C a,
kote gen boolean, varyab nimerik ak fisèl, kidonk li se isit la. Dapre kalite atribi nou rekonèt
kisa nou ap fè fas ak ki jan nou ka kontinye travay ak atribi sa a. Anba a nou pral gade nan kèk kalite espesifik nan atribi. Pou egzanp, "deklarasyon sèvis" (0x2800), "deklarasyon karakteristik" (0x2803), "deskriptè deklarasyon" (0x2902).

Valè yon atribi se siyifikasyon aktyèl li, padonnen tautoloji a. Si kalite atribi a se yon fisèl, Lè sa a, valè atribi a ka, pou egzanp, eslogan "Bonjou Mondyal !!!". Si kalite atribi a se yon "deklarasyon sèvis", Lè sa a, valè li se sèvis nan tèt li. Epi pafwa sa a se enfòmasyon sou ki kote yo jwenn lòt atribi ak pwopriyete yo.

Otorizasyon atribi yo pèmèt sèvè a konprann si wi ou non aksè li oswa ekri yo pèmèt.
Remake byen ke otorizasyon sa yo aplike sèlman nan valè atribi a, epi yo pa nan pwent, kalite, oswa jaden pèmisyon li menm. Moun sa yo. si anrejistreman atribi yo pèmèt, Lè sa a, nou ka chanje, pou egzanp, liy "Hello World !!!" nan liy "Bon maten". Men, nou pa ka entèdi ekri yon nouvo liy oswa chanje kalite atribi ak deziyen liy lan kòm yon "deklarasyon sèvis". Lè yon kliyan kontakte yon sèvè, kliyan an mande atribi li yo. Sa a pèmèt kliyan an konnen ki sa sèvè a ka bay. Malgre ke li pa nesesè pou li ak ekri valè yo.

Ki jan li sanble

Konsèp GATT se pou gwoupe atribi nan yon tablo atribi ansanm nan yon lòd trè espesifik ak lojik. Ann pran yon gade pi pre pwofil batman kè ki anba a. Kolòn ki pi agoch ​​nan tablo sa a opsyonèl. Li tou senpleman dekri nou ki sa liy sa a (atribi) ye. Tout lòt kolòn yo deja abitye pou nou.

BLE anba yon mikwoskòp (ATTы GATTы...)

Nan tèt chak gwoup nou toujou gen yon atribi deklarasyon sèvis. Kalite li se toujou 0x2800, ak konsèy la depann de konbyen atribi ki deja prezan nan tablo a. Otorizasyon li yo toujou lekti sèlman, san okenn otantifikasyon oswa otorizasyon. Nou pral pale sou konsèp sa yo yon ti kras pita. Valè a se yon lòt UUID ki idantifye sa sèvis la ye. Nan Tablo a, valè a se 0x180D, ki defini nan Bluetooth SIG la kòm yon sèvis batman kè.

Apre anons la nan sèvis la, vini anons la nan karakteristik la. Fòm li sanble ak yon deklarasyon sèvis. UUID li se toujou 0x2803, ak otorizasyon li yo toujou lekti sèlman san okenn otantifikasyon oswa otorizasyon. Ann gade nan jaden Valè Atribi, ki gen ladan kèk done. Li toujou gen yon konsèy, yon UUID, ak yon seri pwopriyete. Twa eleman sa yo dekri deklarasyon an ki vin apre nan valè a karakteristik. Pointeur a natirèlman vle di kote deklarasyon valè karakteristik nan tablo atribi yo. UUID a dekri ki kalite enfòmasyon oswa valè nou ka atann. Pou egzanp, valè tanperati a, eta a nan switch limyè a, oswa kèk lòt valè abitrè. Epi finalman pwopriyete, ki dekri kijan valè karakteristik yo ka kominike avèk yo.

Yon lòt pyèj ap tann nou isit la. Li asosye ak otorizasyon atribi ak pwopriyete karakteristik. Ann gade foto pwopriyete jaden ti jan ki soti nan spesifikasyon la.

BLE anba yon mikwoskòp (ATTы GATTы...)

Kòm ou ka wè, gen tou jaden isit la ki bay kapasite li ak ekri. Ou ka mande poukisa nou gen otorizasyon lekti/ekri pou atribi ak pwopriyete
li/ekri pou valè karakteristik? Èske yo pa ta dwe toujou menm jan an? Reyalite a se ke pwopriyete yo pou valè karakteristik yo se aktyèlman sèlman rekòmandasyon pou kliyan yo itilize nan GATT ak kouch aplikasyon yo. Sa yo se tou senpleman sijesyon sou sa kliyan an ta ka atann nan atribi nan deklarasyon karakteristik. Ann gade sa a nan plis detay. Ki kalite otorizasyon yon atribi genyen?

1. Aksè otorizasyon:
     - lekti
     - dosye
     - li ak ekri
2. Otantifikasyon pèmisyon:
     - otantifikasyon obligatwa
     - pa gen okenn otantifikasyon obligatwa
3. Otorizasyon pèmisyon:
     - otorizasyon obligatwa
     - pa gen okenn otorizasyon nesesè

Diferans prensipal ant rezolisyon atribi ak pwopriyete karakteristik se ke ansyen an aplike nan serveurs, ak lèt ​​la nan kliyan yo. Sèvè a ka pèmèt li valè karakteristik la, men li ka mande otantifikasyon oswa otorizasyon. Se poutèt sa, lè kliyan an mande pwopriyete yo nan karakteristik la, nou pral resevwa ke lekti yo pèmèt. Men, lè nou eseye li, nou jwenn yon erè. Se poutèt sa, nou ka san danje pale sou priyorite nan otorizasyon sou pwopriyete yo. Sou bò kliyan an, nou pa ka jwenn konesans sou ki pèmisyon yon atribi genyen.

Deskriptè

Ann retounen sou tab nou an. Apre yo fin deklare valè yon karakteristik, deklarasyon atribi sa yo posib:
1. Nouvo deklarasyon karakteristik (yon sèvis ka gen anpil karakteristik)
2. Nouvo deklarasyon sèvis (ka gen anpil ladan yo nan tablo a)
3. Deklarasyon yon manch

Nan ka a nan karakteristik nan mezi batman kè, nan tablo nou an, deklarasyon an nan valè a karakteristik akonpaye pa deklarasyon an nan deskriptè a. Yon deskriptè se yon atribi ki gen plis enfòmasyon sou yon karakteristik. Gen plizyè kalite deskriptè. Nou pral pale sou yo an detay nan dezyèm pati atik sa a. Pou kounye a, nou pral sèlman manyen Kliyan Characteristic Configuration Descripteur (CCCD). Li gen yon UUID ki egal a 0x2902. Sèvi ak deskriptè sa a, kliyan an gen kapasite pou pèmèt endikasyon oswa notifikasyon sou sèvè a. Diferans ki genyen ant yo piti, men toujou la. Notifikasyon pa mande pou konfimasyon resi nan men kliyan an. Endikasyon mande sa, byenke li rive nan nivo GATT, pa rive nan nivo aplikasyon an. Poukisa sa, ou mande? Ay, mwen pa konnen sa. Kite m jis di ke ekspè nòdik rekòmande pou itilize notifikasyon. Anplis, tcheke entegrite pake a (lè l sèvi avèk CRC) rive nan tou de ka yo.

Konklizyon

Nan fen atik la mwen ta renmen di sa. Dènye tab la se yon ti jan konfizyon. Sepandan, mwen te chwazi li paske li bay nan Atik, ki mwen konte sou. Nan dezyèm pati atik mwen an, mwen gen entansyon fouye pi fon nan spesifikasyon BlueTooth 4.0 la. Plis dyagram kòrèk ak desen ap tann nou la. Nan twazyèm pati a, mwen ta renmen analize boutèy la jwenn lè l sèvi avèk pwogram Wireshark nan youn nan gadjèt yo epi wè "viv" tout teyori ke nou ap etidye.

Anplwaye nan gwoup la nan konpayi yo "Satelit Seza"
Pecherskikh Vladimir

Sous: www.habr.com

Achte hosting serye pou sit ki gen pwoteksyon DDoS, sèvè VPS VDS 🔥 Achte yon hébergement sit entènèt serye ak pwoteksyon DDoS, sèvè VPS VDS | ProHoster