BLE ubos sa mikroskopyo (ATTы GATTы…)

BLE ubos sa mikroskopyo (ATTы GATTы...)

BLE ubos sa mikroskopyo (ATTы GATTы…)

Bahin 1, overview

Dugay na nga panahon ang milabay sukad ang una nga detalye alang sa Bluetooth 4.0 gipagawas. Ug, bisan kung ang hilisgutan sa BLE makaiikag kaayo, gipaundang gihapon niini ang daghang mga developer tungod sa pagkakomplikado niini. Sa akong nangaging mga artikulo, nag-una nakong gitan-aw ang pinakaubos nga lebel, Link Layer ug Physical Layer. Kini nagtugot kanamo sa paglikay sa paggamit sa ingon ka komplikado ug makalibog nga mga konsepto sama sa Attribute Protocol (ATT) ug sa General Attribute Profile (GATT). Bisan pa, wala’y maadtoan, kung wala’y pagsabut kanila, imposible nga makahimo og mga katugbang nga aparato. Karon gusto nakong ipaambit kini nga kahibalo kanimo. Sa akong artikulo akong saligan libro nga libro alang sa mga nagsugod gikan sa Nordic website. So sugdan na nato.

Nganong lisod man ang tanan?

Sa akong opinyon, klaro dayon nga ang pagdumala sa mga aparato pinaagi sa mga smartphone usa ka maayo kaayo ug malungtaron nga hilisgutan. Busa, nakahukom sila sa pagtukod niini diha-diha dayon ug sa maximum. Aron ang mga tiggama sa lainlaing mga gadyet dili maghimo sa ilang kaugalingon nga mga protocol, nga dili magkauyon. Busa ang kalisud. Naa sa una nga yugto, gisulayan nila nga ipilit ang tanan nga posible sa protocol sa BLE. Ug dili igsapayan kung kini magamit sa ulahi o dili. Dugang pa, naghatag sila alang sa posibilidad sa pagpalapad sa lista sa mga aparato alang sa umaabot.

Atong tan-awon ang hulagway diin ang BLE protocol diagram gidrowing. Kini naglangkob sa pipila ka mga sapaw. Ang pinakaubos, physical layer (PHY) maoy responsable sa channel sa radyo sa device. Link Layer(LL) naglangkob sa tibuok han-ay sa mga byte sa gipadala nga mensahe. Sa miaging mga artikulo gitun-an namo kini sa tukma. Ang Host Controller Interface (HCI) usa ka exchange protocol tali sa BLE layers o chips kung ang Controller ug Host gipatuman sa lain-laing mga chips. Ang Logical Link Control and Adaptation Protocol (L2CAP) maoy responsable sa pagporma sa packet, framing, pagkontrol sa sayop ug pag-assemble sa packet. Ang Security Manager Protocol (SMP) maoy responsable sa pag-encrypt sa mga packet. Ang General Access Profile (GAP) mao ang responsable sa inisyal nga pagbayloay sa datos tali sa mga himan aron mahibal-an ang "Kinsa si kinsa". Naglakip usab kini sa pag-scan ug pag-advertise. Niini nga artikulo akong ipunting ang duha nga nahabilin nga bahin sa protocol - GATT ug ATT. Ang GATT usa ka superstructure sa ATT, mao nga sila suod nga nalambigit.

BLE ubos sa mikroskopyo (ATTы GATTы...)

Aron mapasayon ​​ang istorya, gusto kong modangop sa usa ka analohiya. Nakadungog ko niini sa usa ka dapit ug gusto ko nga suportahan kini. Hunahunaa ang usa ka BLE device isip usa ka bookcase nga adunay daghang mga istante. Ang matag estante usa ka lahi nga tema. Pananglitan, kami adunay mga estante nga adunay science fiction, matematika, ug ensiklopedia. Sa matag estante adunay mga libro nga adunay piho nga hilisgutan. Ug ang ubang mga libro adunay mga bookmark nga papel nga adunay mga nota. Dugang pa, kami adunay gamay nga papel nga katalogo sa tanan nga mga libro. Kung mahinumduman nimo, ang mga librarya sa eskuylahan usa ka pig-ot nga kahon nga adunay mga kard nga papel. Uban niini nga analogy, ang kabinete mao ang profile sa among device. Ang mga estante mga serbisyo, ang mga libro mga kinaiya, ug ang katalogo usa ka lamesa sa hiyas. Ang mga bookmark sa mga libro mga deskriptor, nga akong hisgutan sa ulahi sa mas detalyado.

Ang bisan kinsa nga nakahimo og mga himan nahibal-an nga daghang mga proyekto adunay parehas nga mga piraso sa code. Ang tinuod mao nga daghang mga aparato adunay parehas nga pagpaandar. Pananglitan, kung ang mga aparato gipadagan sa mga baterya, nan ang problema sa pag-charge ug pag-monitor sa ilang lebel parehas. Ang sama nga alang sa mga sensor. Sa tinuud, usa ka object-oriented nga pamaagi sa pagprograma "naghatag og abilidad sa paghimo og mga butang nga naghiusa sa mga kabtangan ug mga kinaiya ngadto sa usa ka self-contained nga unyon nga mahimong magamit pag-usab". Sa akong opinyon, BLE misulay sa usa ka susama nga paagi. Ang mga profile gihimo sa Bluetooth Special Interest Group (SIG). Ang mga aparato gikan sa lainlaing mga tiggama nga adunay parehas nga mga profile kinahanglan molihok sa usag usa nga wala’y kalisud. Ang mga profile, sa baylo, naglangkob sa mga serbisyo, ug mga serbisyo sa mga kinaiya, nga gidugangan sa mga deskriptor. Sa kinatibuk-an kini mahimong tan-awon sama niini:

BLE ubos sa mikroskopyo (ATTы GATTы...)

Pananglitan, tagda ang profile diagram sa usa ka heart rate monitor (fitness bracelet). Naglangkob kini sa duha ka serbisyo ug daghang mga kinaiya. Gikan niini ang profile hierarchy diha-diha dayon nahimong tin-aw. Ang kinaiya sa checkpoint nag-reset sa kinatibuk-ang ihap sa paggasto sa kaloriya ngadto sa zero.

1. Ang serbisyo sa heart rate naglakip sa tulo ka mga kinaiya (0x180D):
    a) Mandatoryong kinaiya sa rate sa kasingkasing (0x2A37)
    b) Opsyonal nga posisyon sa sensor sa lawas nga kinaiya (0x2A38)
    c) Kondisyon nga mga kinaiya sa heart rate control point (0x2A39)
2. Serbisyo sa pagmentinar sa baterya (0x180F):
    a) Mandatory nga lebel sa pag-charge sa baterya nga kinaiya (0x2A19)

UUID

Aron kita talagsaon nga maka-access sa mga elemento sa profile (mga serbisyo, mga kinaiya ug mga deskriptor), kinahanglan natong numerohan silang tanan sa usa ka paagi. Alang niini nga katuyoan, usa ka konsepto sama sa Universally Unique ID (UUID) o Universally Unique Identifier ang gipaila. Ang UUID gipakita sa mga braket sa matag linya. Ug adunay usa ka peculiarity dinhi. Alang sa UUID, nakahukom kami nga mogamit usa ka code nga 16 ug 128 bit ang gitas-on. Ngano, mangutana ka? Sa BLE protocol, ang tanan mahitungod sa pagkonserba sa enerhiya. Busa, ang dimensyon sa 16 bits makatarunganon. Dili tingali nga labaw pa sa 65 ka libo ang mahimo sa umaabot nga umaabot. talagsaon nga mga serbisyo ug mga kinaiya. Sa pagkakaron, naihap na ang tanan nga mahimo nila (hinumdomi kung diin gikan kini - "giihap ka usab niya" :-)) Gi-numero nga mga elemento mga profile, sa mga serbisyo, mga kinaiyahan и mga deskriptor mahimo nimong tan-awon ang mga link.

Bisan pa, sa akong hunahuna ang tanan nakahinumdom sa istorya nga adunay 4 bytes sa mga IP address sa Internet. Sa sinugdan naghunahuna kami nga igo na kana, apan karon dili gihapon kami makabalhin sa usa ka 6-byte nga adres. Aron dili na masubli ang kini nga sayup ug mahatagan ang libre nga pagpugong sa mga dula nga kamot sa mga DIYer, nakahukom dayon ang SIG nga ipaila ang 128-bit UUID. Kini personal nga nagpahinumdom kanako sa walay lisensya nga 433 MHz nga banda, nga gihatag sa tanang matang sa Kulibins gikan sa channel sa radyo. Sa among kaso, usa ka 128-bit nga identifier sa mga serbisyo ug mga kinaiya ang gi-uma. Kini nagpasabot nga kami, alang sa among mga serbisyo ug mga himan, makagamit sa halos bisan unsang 128-bit nga bili. Ang tanan nga parehas, ang posibilidad nga adunay parehas nga UUID lagmit nga zero.

Sa tinuud, ang mubu nga 16-bit nga UUID adunay ilang extension sa usa ka 128-bit nga kantidad. Sa detalye, kini nga extension gitawag nga Bluetooth Base UUID ug adunay kantidad nga 00000000-0000-1000-8000-00805F9B34FB. Kung, pananglitan, ang 16-bit nga attribute nga UUID adunay kantidad nga 0x1234, nan ang katumbas nga 128-bit UUID adunay kantidad nga 00001234-0000-1000-8000-00805F9B34FB. Ug bisan ang katugbang nga pormula gihatag:

                                128_bit_value = 16_bit_value * 2^96 + Bluetooth_Base_UUID

Wala ko kahibalo kung diin gikan kining magic number. Kung nahibal-an sa bisan kinsa sa mga magbabasa, pasulata sila sa mga komento (Usa ka tiggamit nga adunay angga nga Sinopteek nakahimo na niini. Tan-awa ang mga komento). Sama sa alang sa pag-abut sa 128-bit UUIDs, sa prinsipyo mahimo nimong gamiton ang usa ka espesyal generatorkinsay mubuhat para nimo.

ATTy GATTy...

Sa tinuud, nagsugod na ang kalingawan. Pahinumdum ko nimo nga ang ATT gibase sa relasyon sa kliyente-server. Karon kita nagtan-aw sa server device. Naglangkob kini sa kasayuran sama sa mga kantidad sa sensor, kahimtang sa switch sa suga, data sa lokasyon, ug uban pa. Karon nga ang tanan nga "mga partisipante sa among parada" giihap, kinahanglan namon nga ibutang kini sa panumduman sa aparato. Aron mahimo kini, gibutang namon sila sa usa ka lamesa nga gitawag nga usa ka lamesa sa kinaiya. Hinumdomi kini pag-ayo. Mao kini ang kasingkasing sa BLE. Kini ang atong hisgotan pa. Karon tawgon nato ang matag linya og attribute. Kini nga lamesa nahimutang sa lawom nga bahin sa stack ug, ingon usa ka lagda, wala kami direkta nga pag-access niini. Gisugdan namon kini ug gi-access kini, apan kung unsa ang mahitabo sa sulod natago gikan kanamo luyo sa pito ka mga selyo.

Atong tan-awon ang hulagway gikan sa espesipikasyon, apan sa wala pa kana, gusto nako nga ipunting dayon ang atensyon sa kanunay nga kalibog sa mga termino, nga mao sa mga deskriptor. Ang papel sa deskriptor mao ang pagkompleto sa paghulagway sa kinaiya. Kung gikinahanglan ang pagpalapad sa mga kapabilidad niini, gigamit ang mga deskriptor. Sila usab mga hiyas, ug sama sa mga serbisyo ug mga kinaiya, sila nahimutang sa lamesa sa hiyas. Atong susihon kini sa detalye sa ikaduhang bahin sa artikulo. Bisan pa, usahay ang mga deskriptor nagtumong sa numero sa linya sa lamesa sa hiyas. Kini kinahanglan nga ibutang sa hunahuna. Aron malikayan ang kalibog, atong gamiton ang termino nga "attribute pointer" alang niini nga mga katuyoan.
BLE ubos sa mikroskopyo (ATTы GATTы...)

Busa ang usa ka hiyas usa ka discrete nga bili nga adunay mosunod nga mga kabtangan nga nalangkit niini:
1. Ang Attribute Handle mao ang indeks sa lamesa nga katumbas sa attribute
2. Ang Type sa Attribute usa ka UUID nga naghulagway sa matang niini
3. Ang Bili sa Attribute mao ang datos nga gi-index sa attribute pointer
4. Ang mga Permiso sa Attribute mao ang bahin sa usa ka hiyas, ang mga pagtugot, nga dili mabasa o masulat gamit ang protocol sa hiyas

Unsaon pagsabot kining tanan? Ang pointer sa hiyas, medyo nagsulti, ang numero niini sa among lamesa.
Kini nagtugot sa usa ka kliyente sa paghisgot sa usa ka hiyas sa pagbasa o pagsulat hangyo. Mahimo natong numerohan ang atong mga linya (mga hiyas) gikan sa 0x0001 ngadto sa 0xFFFF. Sa among pagpakig-uban sa aparador, kini ang numero sa kard sa katalogo sa papel. Sa susama, sama sa katalogo sa librarya, ang mga kard gihan-ay sa nagkadaghang han-ay sa gidaghanon. Ang gidaghanon sa matag sunod-sunod nga linya kinahanglang mas dako kay sa nauna. Sama sa library, usahay mawala ang pipila ka mga kard, mao nga sa amon, mahimo’g adunay mga kal-ang sa pag-numero sa linya. Gitugotan kini. Ang nag-unang butang mao nga sila nagpadayon sa progresibo.

Ang tipo sa hiyas nagtino kung unsa ang girepresentar sa hiyas. Pinaagi sa analohiya sa C nga pinulongan,
diin adunay boolean, numeric variables ug strings, mao nga ania kini. Pinaagi sa matang sa hiyas atong giila
unsa ang atong giatubang ug unsaon nato pagpadayon sa pagtrabaho uban niini nga hiyas. Sa ubos atong tan-awon ang pipila ka piho nga matang sa mga hiyas. Pananglitan, "deklarasyon sa serbisyo" (0x2800), "deklarasyon sa kinaiya" (0x2803), "deklarasyon sa deskriptor" (0x2902).

Ang bili sa usa ka hiyas mao ang aktuwal nga kahulogan niini, pasayloa ang tautolohiya. Kung ang tipo sa hiyas usa ka hilo, nan ang kantidad sa hiyas mahimo, pananglitan, ang slogan nga "Hello World !!!". Kung ang tipo sa hiyas usa ka "deklarasyon sa serbisyo", nan ang kantidad niini mao ang serbisyo mismo. Ug usahay kini ang kasayuran kung asa makit-an ang ubang mga kinaiya ug ang ilang mga kabtangan.

Ang mga permiso sa kinaiya nagtugot sa server nga masabtan kung gitugutan ba ang pagbasa o pagsulat nga pag-access.
Timan-i nga kini nga mga pagtugot magamit lamang sa kantidad sa hiyas, ug dili sa pointer, tipo, o natad sa pagtugot mismo. Mga. kung gitugotan ang pagrekord sa hiyas, mahimo naton usbon, pananglitan, ang linya nga "Hello World !!!" sa linya nga "Maayong buntag". Apan dili namo idili ang pagsulat og bag-ong linya o usbon ang tipo sa hiyas ug itudlo ang linya isip "deklarasyon sa serbisyo". Kung ang usa ka kliyente makontak sa usa ka server, ang kliyente mangayo sa mga hiyas niini. Gitugotan niini ang kliyente nga mahibal-an kung unsa ang mahatag sa server. Bisan kung dili kinahanglan nga basahon ug isulat ang mga mithi.

Unsa ang hitsura niini

Ang konsepto sa GATT mao ang paggrupo sa mga attribute sa usa ka attribute table nga magkauban sa usa ka piho ug lohikal nga han-ay. Atong tan-awon pag-ayo ang profile sa rate sa kasingkasing sa ubos. Ang pinakawala nga kolum niini nga lamesa kay opsyonal. Kini yano nga naghulagway kanato kung unsa kini nga linya (attribute). Ang ubang mga kolum pamilyar na kanato.

BLE ubos sa mikroskopyo (ATTы GATTы...)

Sa ibabaw sa matag grupo kami kanunay adunay usa ka kinaiya nga deklarasyon sa serbisyo. Ang tipo niini kanunay nga 0x2800, ug ang pointer nagdepende kung pila ang mga kinaiya nga naa na sa lamesa. Ang mga permiso niini kanunay nga read-only, nga walay bisan unsa nga authentication o pagtugot. Atong hisgotan kini nga mga konsepto sa ulahi. Ang bili mao ang laing UUID nga nagpaila kung unsa ang serbisyo. Sa Talaan, ang kantidad mao ang 0x180D, nga gihubit sa Bluetooth SIG ingon usa ka serbisyo sa rate sa kasingkasing.

Pagkahuman sa pagpahibalo sa serbisyo, moabut ang pahibalo sa kinaiya. Kini susama sa porma sa usa ka deklarasyon sa serbisyo. Ang UUID niini kanunay nga 0x2803, ug ang mga pagtugot niini kanunay nga mabasa-lamang nga wala’y bisan unsang pagkumpirma o pagtugot. Atong tan-awon ang Attribute Value field, nga naglakip sa pipila ka datos. Kanunay kini adunay usa ka pointer, usa ka UUID, ug usa ka hugpong sa mga kabtangan. Kining tulo ka mga elemento naghulagway sa sunod nga deklarasyon sa kinaiya nga bili. Ang pointer natural nga nagpasabut sa lokasyon sa deklarasyon sa kinaiya nga kantidad sa lamesa sa hiyas. Ang UUID naghulagway unsa nga matang sa impormasyon o bili ang atong mapaabot. Pananglitan, ang bili sa temperatura, ang kahimtang sa switch sa suga, o uban pang arbitraryong bili. Ug sa katapusan mga kabtangan, nga naghulagway kung giunsa ang kinaiya nga bili mahimong makig-uban.

Laing lit-ag ang naghulat kanato dinhi. Nalambigit kini sa mga permiso sa hiyas ug mga kinaiya nga kinaiya. Atong tan-awon ang hulagway sa mga kabtangan sa bit field gikan sa espesipikasyon.

BLE ubos sa mikroskopyo (ATTы GATTы...)

Sama sa imong nakita, adunay usab mga natad dinhi nga naghatag mga kapabilidad sa pagbasa ug pagsulat. Mahimong nahibulong ka kung nganong naa mi mga permiso sa pagbasa/pagsulat para sa attribute ug property
pagbasa/pagsulat para sa kinaiyanhong bili? Dili ba sila kanunay nga managsama? Ang tinuod mao nga ang mga kabtangan alang sa kinaiya nga bili sa pagkatinuod mga rekomendasyon lamang alang sa kliyente nga gigamit sa GATT ug mga layer sa aplikasyon. Kini mga yano nga mga pahibalo bahin sa kung unsa ang madahom sa kliyente gikan sa kinaiya nga deklarasyon nga kinaiya. Atong tan-awon kini sa dugang nga detalye. Unsang mga klase sa permiso ang naa sa usa ka attribute?

1. Mga permiso sa pag-access:
     - pagbasa
     — rekord
     - basa ug sulat
2. Authentication permiso:
     - gikinahanglan ang panghimatuod
     - walay panghimatuod nga gikinahanglan
3. Pagtugot sa pagtugot:
     - gikinahanglan ang pagtugot
     - walay pagtugot nga gikinahanglan

Ang nag-unang kalainan tali sa resolusyon sa hiyas ug kinaiya nga mga kabtangan mao nga ang una magamit sa mga server, ug ang ulahi sa mga kliyente. Ang server mahimong tugutan sa pagbasa sa kinaiya nga bili, apan mahimong magkinahanglan og authentication o pagtugot. Busa, kung gihangyo sa kliyente ang mga kabtangan sa kinaiya, madawat namon nga gitugotan ang pagbasa. Apan kung gisulayan namon ang pagbasa, nakakuha kami usa ka sayup. Busa, luwas kitang makahisgot bahin sa prayoridad sa mga permiso kay sa mga kabtangan. Sa bahin sa kliyente, dili kami makakuha og kahibalo kung unsang mga pagtugot ang adunay usa ka kinaiya.

Deskriptor

Balik ta sa atong lamesa. Human sa pagdeklarar sa bili sa usa ka kinaiya, ang mosunod nga mga deklarasyon sa hiyas posible:
1. Bag-ong deklarasyon sa mga kinaiya (usa ka serbisyo mahimong adunay daghang mga kinaiya)
2. Bag-ong deklarasyon sa serbisyo (mahimo nga adunay daghan niini sa lamesa)
3. Pagpahayag sa usa ka kuptanan

Sa kaso sa kinaiya sa pagsukod sa heart rate, sa among lamesa, ang deklarasyon sa kinaiya nga bili giubanan sa deklarasyon sa descriptor. Ang usa ka deskriptor usa ka hiyas nga adunay dugang nga kasayuran bahin sa usa ka kinaiya. Adunay pipila ka mga matang sa mga deskriptor. Atong hisgotan sila sa detalye sa ikaduhang bahin niini nga artikulo. Sa pagkakaron, atong hikapon lang ang Client Characteristic Configuration Descriptor (CCCD). Kini adunay UUID nga katumbas sa 0x2902. Gamit kini nga deskriptor, ang kliyente adunay katakus nga makahimo sa timailhan o pahibalo sa server. Ang kalainan tali kanila gamay ra, apan naa gihapon. Ang pagpahibalo wala magkinahanglan og kumpirmasyon sa resibo gikan sa kliyente. Ang indikasyon nanginahanglan niini, bisan kung kini mahitabo sa lebel sa GATT, dili makaabot sa lebel sa aplikasyon. Ngano man, mangutana ka? Ay, wala ko kahibalo niini. Isulti lang nako nga girekomenda sa mga eksperto sa Nordic ang paggamit sa mga pahibalo. Dugang pa, ang pagsusi sa integridad sa pakete (gamit ang CRC) mahitabo sa duha ka mga kaso.

konklusyon

Sa katapusan sa artikulo gusto nakong isulti kini. Ang katapusan nga lamesa medyo makalibog. Bisan pa, gipili nako kini tungod kay gihatag kini artikulo, nga akong gisaligan. Sa ikaduha nga bahin sa akong artikulo, gusto nako nga mas lawom ang detalye sa BlueTooth 4.0. Mas tukma nga mga diagram ug mga drowing ang naghulat kanamo didto. Sa ikatulo nga bahin, gusto nakong i-parse ang log nga nakuha gamit ang Wireshark nga programa gikan sa usa sa mga gadgets ug tan-awa ang "live" sa tanan nga teorya nga among gitun-an.

Empleyado sa Grupo sa mga Kompanya "Caesar Satellite"
Pecherskikh Vladimir

Source: www.habr.com

Idugang sa usa ka comment