BLE дар зери микроскоп (ATTы GATTы…)

BLE дар зери микроскоп (ATTы GATTы...)

BLE дар зери микроскоп (ATTы GATTы…)

Қисми 1, шарҳ

Аз замони интишори мушаххасоти аввалини Bluetooth 4.0 аллакай муддати тӯлонӣ гузашт. Ва, гарчанде ки мавзӯи BLE хеле ҷолиб аст, он ҳанӯз ҳам бо сабаби мураккабии худ бисёр таҳиягаронро бозмедорад. Дар мақолаҳои қаблии худ, ман асосан ба сатҳи пасттарин, Link Layer ва Physical Layer назар кардам. Ин ба мо имкон дод, ки ба чунин мафҳумҳои мураккаб ва печида, ба монанди Протоколи Аттрибутӣ (ATT) ва Профили Хусусиятҳои Генералӣ (GATT) муроҷиат накунем. Бо вуҷуди ин, ҷои рафтан нест, бидуни фаҳмидани онҳо, таҳияи дастгоҳҳои мувофиқ ғайриимкон аст. Имрӯз ман мехоҳам ин донишро бо шумо мубодила кунам. Дар мақолаи худ ман ба он такя мекунам китоби дарсӣ барои шурӯъкунандагон аз сомонаи Nordic. Пас биёед оғоз кунем.

Чаро ҳама чиз ин қадар душвор аст?

Ба андешаи ман, фавран маълум шуд, ки идоракунии дастгоҳҳо тавассути смартфонҳо як мавзӯи хеле умедбахш ва дарозмуддат аст. Аз ин рӯ, онҳо тасмим гирифтанд, ки онро фавран ва ба ҳадди аксар созанд. Барои он ки истеҳсолкунандагони гаҷетҳои гуногун протоколҳои худро таҳия накунанд, ки пас аз он номувофиқ хоҳанд буд. Аз ин рӯ, душворӣ. Аллакай дар марҳилаи аввал, онҳо кӯшиш карданд, ки ҳама чизи имконпазирро ба протоколи BLE гузоранд. Ва муҳим нест, ки он баъдтар муфид хоҳад буд ё не. Илова бар ин, онҳо имкони васеъ кардани рӯйхати дастгоҳҳоро барои оянда пешбинӣ карданд.

Биёед ба расм нигаред, ки дар он диаграммаи протоколи BLE кашида шудааст. Он аз якчанд қабат иборат аст. Поёнитарин қабати физикӣ (PHY) барои канали радиои дастгоҳ масъул аст. Layer Link (LL) тамоми пайдарпаии байтҳоро дар паёми интиқолшуда дар бар мегирад. Дар мақолаҳои қаблӣ мо маҳз ҳаминро омӯхта будем. Интерфейси Controller Host (HCI) як протоколи мубодилаи байни қабатҳои BLE ё микросхемаҳои аст, агар контроллер ва Хост дар микросхемаҳои гуногун амалӣ карда шаванд. Протоколи назорати мантиқӣ ва мутобиқсозӣ (L2CAP) барои ташаккули бастаҳо, чаҳорчӯба, назорати хатогиҳо ва васлкунии бастаҳо масъул аст. Протоколи мудири амният (SMP) барои рамзгузории бастаҳо масъул аст. Профили дастрасии умумӣ (GAP) барои мубодилаи ибтидоии маълумот байни дастгоҳҳо барои муайян кардани "Кӣ кист" масъул аст. Он инчунин сканкунӣ ва таблиғро дар бар мегирад. Дар ин мақола ман ба ду қисми боқимондаи протокол - GATT ва ATT тамаркуз хоҳам кард. GATT як болои сохтори ATT аст, бинобар ин онҳо бо ҳам зич алоқаманданд.

BLE дар зери микроскоп (ATTы GATTы...)

Барои содда кардани ҳикоя ман мехоҳам ба як қиёс муроҷиат кунам. Ман онро дар ҷое шунидам ва мехостам дастгирӣ кунам. Дар бораи дастгоҳи BLE ҳамчун ҷевони китоб бо якчанд раф фикр кунед. Ҳар як раф як мавзӯи алоҳида аст. Масалан, дар мо рафхо бо фантастика, математика ва энциклопедияхо мавчуданд. Дар хар як раф китобхое гузошта шудаанд, ки мавзуи муайян доранд. Ва баъзе китобҳо ҳатто хатчӯбҳои коғазӣ бо қайдҳо доранд. Илова бар ин, мо каталоги хурди коғазии ҳамаи китобҳоро дорем. Агар дар хотир доред, китобхонаҳои мактабӣ як қуттии танг бо кортҳои коғазӣ мебошанд. Бо ин қиёс, кабинет профили дастгоҳи мост. Рафҳо хидматҳо, китобҳо хусусиятҳо ва каталог ҷадвали атрибутҳо мебошанд. Хатчӯбҳо дар китобҳо тавсифкунанда мебошанд, ки ман дар бораи онҳо баъдтар муфассалтар сӯҳбат хоҳам кард.

Ҳар касе, ки дастгоҳҳоро таҳия кардааст, медонад, ки бисёр лоиҳаҳо қисмҳои рамзҳои шабеҳ доранд. Далели он аст, ки бисёр дастгоҳҳо функсияҳои якхела доранд. Масалан, агар дастгоҳҳо аз батареяҳо таъмин карда шаванд, пас мушкилоти пур кардан ва назорати сатҳи онҳо якхела хоҳад буд. Ҳамин чиз ба сенсорҳо дахл дорад. Дар асл, равиши ба объект нигаронидашуда ба барномасозӣ "қобилияти эҷоди объектҳоеро фароҳам меорад, ки хосиятҳо ва рафторҳоро ба иттиҳоди мустақилона муттаҳид мекунанд, ки баъдан дубора истифода мешаванд". Ба андешаи ман, BLE як равиши шабеҳро кӯшиш кард. Профилҳо аз ҷониби Bluetooth Special Interest Group (SIG) таҳия шудаанд. Дастгоҳҳои истеҳсолкунандагони гуногун, ки профилҳои якхела доранд, бояд бо ҳамдигар бе мушкилот кор кунанд. Профилҳо, дар навбати худ, аз хидматҳо ва хидматҳои хусусиятҳо иборатанд, ки бо тавсифкунандаҳо пурра карда мешаванд. Умуман, он метавонад чунин бошад:

BLE дар зери микроскоп (ATTы GATTы...)

Масалан, диаграммаи профили монитори набзи дилро (дастпонаи фитнес) дида бароед. Он аз ду хидмат ва якчанд хусусият иборат аст. Аз он иерархияи профил фавран равшан мегардад. Хусусияти нуқтаи назорат ҳисоби умумии хароҷоти калорияро ба сифр бармегардонад.

1. Хизматрасонии набзи дил се хусусиятро дар бар мегирад (0x180D):
    а) Хусусияти ҳатмии суръати дил (0x2A37)
    б) Хусусияти мавқеъи сенсори бадан (0x2A38)
    в) Хусусиятҳои шартии нуқтаи назорати суръати дил (0x2A39)
2. Хизматрасонии нигоҳдории батарея (0x180F):
    a) Характеристикаи сатҳи ҳатмии заряди батарея (0x2A19)

UUID

Барои он ки мо ба ҷузъҳои профил (хизматрасонӣ, хусусиятҳо ва тавсифкунандаҳо) дастрас шавем, мо бояд ҳамаи онҳоро бо тариқи рақамгузорӣ кунем. Бо ин мақсад, консепсияе ба монанди ID Universal Unique (UUID) ё Identifier Universal Unique ҷорӣ карда мешавад. UUID дар қавсҳои ҳар як сатр нишон дода шудааст. Ва дар ин ҷо як хусусияти хос вуҷуд дорад. Барои UUID, мо тасмим гирифтем, ки рамзи дарозии 16 ва 128 битро истифода барем. Чаро, шумо мепурсед? Дар протоколи BLE ҳама чиз дар бораи сарфаи энергия аст. Аз ин рӯ, андозаи 16 бит хеле оқилона аст. Ба гумон аст, ки дар ояндаи наздик зиёда аз 65 хазор адад ташкил карда шавад. хизматрасонӣ ва хусусиятҳои беназир. Дар айни замон, ҳама чизеро, ки онҳо аллакай ҳисоб карда метавонистанд (дар хотир доред, ки ин аз куҷо пайдо шудааст - "ӯ шуморо низ ҳисоб кардааст" :-)) Элементҳои рақамгузорӣшуда профилҳо, хизматрасониҳо, хусусиятҳо и тавсифкунандагон шумо метавонед ба пайвандҳо назар кунед.

Бо вуҷуди ин, ман фикр мекунам, ки ҳама достони бо 4 байт IP-адресҳои Интернет дар ёд доранд. Дар аввал фикр мекардем, ки ин кофӣ аст, аммо ҳоло ҳам наметавонем ба суроғаи 6-байтӣ гузаред. Барои такрор накардани ин хато ва озод кардани дастони бозигари DIYers, SIG фавран тасмим гирифт, ки UUID-ҳои 128-битро ҷорӣ кунад. Ин шахсан ба ман бандҳои литсензиянашудаи 433 МГс, ки ба ҳама навъҳои Кулибинҳо аз канали радио дода шудааст, хотиррасон мекунад. Дар ҳолати мо, идентификатори 128-бити хидматҳо ва хусусиятҳо таҳия карда шуд. Ин маънои онро дорад, ки мо барои хидматҳо ва дастгоҳҳои худ қариб ҳама арзиши 128-битро истифода бурда метавонем. Ба ҳар ҳол, эҳтимолияти пайдоиши ҳамон UUID ба сифр мерасад.

Дар асл, UUID-ҳои кӯтоҳи 16-битӣ васеъшавии худро то арзиши 128-бит доранд. Дар мушаххасот, ин васеъшавӣ Bluetooth Base UUID номида мешавад ва дорои арзиши 00000000-0000-1000-8000-00805F9B34FB. Агар, масалан, атрибути 16-битии UUID арзиши 0x1234 дошта бошад, пас UUID-и муодили 128-бит арзиши 00001234-0000-1000-8000-00805F9B34FB хоҳад дошт. Ва ҳатто формулаи мувофиқ дода мешавад:

                                128_бит_арзиш = 16_бит_арзиш * 2^96 + Bluetooth_Base_UUID

Ман намедонам, ки ин рақами ҷодугарӣ аз куҷо пайдо шуд. Агар касе аз хонандагон донад, бигзоред дар шарҳҳо бинависед (Корбаре бо лақаби Sinopteek аллакай ин корро кардааст. Ба шарҳҳо нигаред). Дар мавриди таҳияи UUID-ҳои 128-бит, шумо метавонед як махсусро истифода баред генераторки барои шумо ин корро мекунад.

ATTy GATTy...

Дарвоқеъ, он гоҳ фароғат оғоз мешавад. Хотиррасон мекунам, ки ATT ба муносибати муштарӣ ва сервер асос ёфтааст. Ҳоло мо ба дастгоҳи сервер менигарем. Он дорои маълумот ба монанди арзишҳои сенсор, ҳолати гузариш, маълумот оид ба ҷойгиршавӣ ва ғайра. Акнун, ки ҳамаи "иштирокчиёни паради мо" рақамгузорӣ карда шудаанд, мо бояд онҳоро бо ягон роҳ дар хотираи дастгоҳ ҷойгир кунем. Барои ин мо онҳоро дар ҷадвал ҷойгир мекунем, ки ҷадвали атрибут ном дорад. Инро хуб дар хотир доред. Ин дили BLE аст. Ин аст он чизе ки мо минбаъд баррасӣ хоҳем кард. Акнун мо ҳар як сатрро атрибут меномем. Ин ҷадвал дар чуқур ҷойгир аст ва чун қоида, мо ба он дастрасии мустақим надорем. Мо онро оғоз мекунем ва ба он дастрасӣ пайдо мекунем, аммо он чизе, ки дар дохили он рӯй медиҳад, аз мо паси ҳафт мӯҳр пинҳон аст.

Биёед ба расм аз мушаххасот назар андозем, аммо пеш аз ин, ман мехостам фавран таваҷҷӯҳро ба нофаҳмиҳои зуд-зуд дар истилоҳҳо, яъне дар дескрипторҳо ҷалб намоям. Вазифаи тавсифкунанда пурра кардани тавсифи хусусият мебошад. Ҳангоми зарурати васеъ кардани имкониятҳои он, дескрипторҳо истифода мешаванд. Онҳо инчунин атрибутҳо мебошанд ва мисли хидматҳо ва хусусиятҳо, онҳо дар ҷадвали атрибутҳо ҷойгиранд. Мо онҳоро дар қисми дуюми мақола ба таври муфассал баррасӣ хоҳем кард. Аммо, баъзан дескрипторҳо ба рақами сатри ҷадвали атрибут ишора мекунанд. Инро дар хотир бояд дошт. Барои роҳ надодан ба иштибоҳ, мо истилоҳи "нишонакунандаи атрибут" -ро барои ин мақсадҳо истифода хоҳем бурд.
BLE дар зери микроскоп (ATTы GATTы...)

Пас, атрибут арзиши дискретӣ мебошад, ки дорои хосиятҳои зерини бо он алоқаманд аст:
1. Дастаки аттрибутӣ индекси ҷадвалест, ки ба атрибут мувофиқ аст
2. Навъи аттрибутӣ UUID мебошад, ки намуди онро тавсиф мекунад
3. Арзиши атрибут ин маълумотест, ки бо нишоннамои атрибутӣ индексатсия карда мешавад
4. Иҷозатҳои аттрибутӣ қисми атрибут, иҷозатҳое мебошанд, ки бо истифода аз протоколи атрибут хондан ё навиштан ғайриимкон аст

Ҳамаи инро чӣ тавр фаҳмидан мумкин аст? Нишондиҳандаи атрибутӣ, нисбатан гӯем, рақами он дар ҷадвали мост.
Он ба муштарӣ имкон медиҳад, ки ба атрибут дар дархостҳои хондан ё навиштан муроҷиат кунад. Мо метавонем сатрҳои худро (атрибутҳо) аз 0x0001 то 0xFFFF рақамгузорӣ кунем. Дар иттиҳодияи мо бо ҷевони китоб, ин рақами корт дар каталоги коғазӣ мебошад. Ба ҳамин монанд, тавре ки дар каталоги китобхона кортҳо бо тартиби афзоиши шумораи онҳо ҷойгир шудаанд. Шумораи ҳар як сатри минбаъда бояд аз сатри қаблӣ зиёдтар бошад. Мисли дар китобхона, баъзан баъзе кортҳо гум мешаванд, аз ин рӯ бо мо дар рақамгузории сатрҳо камбудиҳо вуҷуд доранд. Ин иҷозат дода мешавад. Чизи асосй он аст, ки онхо тадричан пеш мераванд.

Навъи атрибут муайян мекунад, ки атрибут чиро ифода мекунад. Дар муқоиса бо забони C,
ки дар он ҷо тағйирёбандаҳои мантиқӣ, ададӣ ва сатрҳо мавҷуданд, ҳамин тавр ин ҷост. Аз рӯи намуди атрибут мо эътироф мекунем
мо бо чӣ кор карда истодаем ва чӣ гуна метавонем бо ин сифат кор кунем. Дар зер мо баъзе намудҳои хоси атрибутҳоро дида мебароем. Масалан, "декларатсияи хидматӣ" (0x2800), "декларатсияи характеристика" (0x2803), "декларатсияи тавсифкунанда" (0x2902).

Арзиши сифат маънои аслии он аст, тавтологияро бубахшед. Агар навъи атрибут сатр бошад, он гоҳ арзиши атрибут метавонад, масалан, шиори "Салом Ҷаҳон !!!" бошад. Агар навъи атрибут "декларатсияи хидматӣ" бошад, арзиши он худи хидмат аст. Ва баъзан ин маълумот дар бораи аз куҷо пайдо кардани дигар атрибутҳо ва хосиятҳои онҳост.

Иҷозатҳои аттрибутӣ ба сервер имкон медиҳанд, ки дастрасии хондан ё навиштанро бифаҳмад.
Аҳамият диҳед, ки ин иҷозатҳо танҳо ба арзиши атрибут татбиқ мешаванд, на ба худи нишондиҳанда, намуд ё майдони иҷозат. Онхое. агар сабти атрибут иҷозат дода шавад, мо метавонем, масалан, сатри "Салом Ҷаҳон !!!" -ро тағир диҳем. ба сатри «Субх ба хайр». Аммо мо наметавонем навиштани сатри навро манъ кунем ё навъи атрибутро тағир диҳем ва сатрро ҳамчун "декларатсияи хидматӣ" таъин кунем. Вақте ки муштарӣ бо сервер тамос мегирад, муштарӣ атрибутҳои онро дархост мекунад. Ин ба муштарӣ имкон медиҳад, то бидонад, ки сервер чиро таъмин карда метавонад. Ҳарчанд хондану навиштани арзишҳо шарт нест.

Чӣ гуна аст

Мафҳуми GATT ин гурӯҳбандии атрибутҳо дар ҷадвали атрибутҳо бо тартиби хеле мушаххас ва мантиқӣ мебошад. Биёед ба профили суръати дил дар зер муфассалтар назар андозем. Сутуни чапи ин ҷадвал ихтиёрӣ аст. Он танҳо ба мо тасвир мекунад, ки ин хат (сифат) чист. Хамаи сутунхои дигар ба мо аллакай шиносанд.

BLE дар зери микроскоп (ATTы GATTы...)

Дар болои ҳар як гурӯҳ мо ҳамеша атрибути эъломияи хидмат дорем. Навъи он ҳамеша 0x2800 аст ва нишондиҳанда аз он вобаста аст, ки чӣ қадар атрибутҳо аллакай дар ҷадвал мавҷуданд. Иҷозатҳои он ҳамеша танҳо барои хондан, бе ягон аутентификатсия ё иҷозат мебошанд. Мо каме дертар дар бораи ин мафҳумҳо сӯҳбат хоҳем кард. Арзиш як UUID-и дигаре мебошад, ки кадом хидматро муайян мекунад. Дар ҷадвал, арзиш 0x180D аст, ки онро Bluetooth SIG ҳамчун хидмати суръати дил муайян мекунад.

Пас аз эълони хидмат, эълони характеристика меояд. Он аз ҷиҳати шакл ба эъломияи хидмат шабоҳат дорад. UUID-и он ҳамеша 0x2803 аст ва иҷозатҳои он ҳамеша танҳо барои хондан бе ягон аутентификатсия ё иҷозат мебошанд. Биёед ба майдони арзиши аттрибутӣ назар кунем, ки баъзе маълумотҳоро дар бар мегирад. Он ҳамеша нишондиҳанда, UUID ва маҷмӯи хосиятҳоро дар бар мегирад. Ин се унсур эъломияи минбаъдаи арзиши хосро тавсиф мекунанд. Нишондиҳанда табиатан ҷойгиршавии эъломияи арзиши хосро дар ҷадвали атрибутҳо нишон медиҳад. UUID тавсиф мекунад, ки кадом намуди маълумот ё арзише, ки мо метавонем интизор шавем. Масалан, арзиши ҳарорат, ҳолати лампаи рӯшноӣ ё ягон арзиши дигари худсарона. Ва ниҳоят, хосиятҳое, ки тавсиф мекунанд, ки чӣ гуна арзиши хосро бо онҳо мутақобила кардан мумкин аст.

Дар ин чо моро боз як доми дигар интизор аст. Он бо иҷозатҳои аттрибутӣ ва хосиятҳои хос алоқаманд аст. Биёед тасвири хосиятҳои майдони битро аз мушаххасот бубинем.

BLE дар зери микроскоп (ATTы GATTы...)

Тавре ки шумо мебинед, дар ин ҷо майдонҳое мавҷуданд, ки қобилияти хондан ва навиштанро таъмин мекунанд. Шояд шумо дар ҳайрат бошед, ки чаро мо барои атрибут ва амвол иҷозати хондан/навиштан дорем
хондан/навиштан барои арзиши хос? Оё онҳо набояд ҳамеша якхела бошанд? Далели он аст, ки хосиятҳои арзиши хос воқеан танҳо тавсияҳо барои муштарӣ мебошанд, ки дар қабатҳои GATT ва барнома истифода мешаванд. Инҳо танҳо маслиҳатҳо дар бораи он чизе мебошанд, ки муштарӣ аз атрибути хоси эъломия чӣ интизор аст. Биёед инро муфассалтар дида бароем. Атрибут кадом намуди иҷозатҳоро дорад?

1. Иҷозатҳои дастрасӣ:
     - хондан
     — сабт
     - хондан ва навиштан
2. Иҷозати аутентификатсия:
     - аутентификатсия талаб карда мешавад
     - аутентификатсия талаб карда намешавад
3. Иҷозати авторизатсия:
     - иҷозат талаб карда мешавад
     - иҷозат талаб карда намешавад

Фарқи асосии байни ҳалли атрибутҳо ва хосиятҳои хос дар он аст, ки аввалӣ ба серверҳо ва дуюмӣ ба мизоҷон истифода мешавад. Ба сервер иҷозат дода мешавад, ки арзиши хосро хонад, аммо метавонад тасдиқ ё иҷозатро талаб кунад. Аз ин рӯ, вақте ки муштарӣ хосиятҳои хусусиятро талаб мекунад, мо хоҳем гирифт, ки хондан иҷозат дода шудааст. Аммо вақте ки мо кӯшиш мекунем, ки хонем, мо хато мегирем. Аз ин рӯ, мо метавонем дар бораи афзалияти иҷозатҳо нисбат ба моликият сӯҳбат кунем. Аз ҷониби муштарӣ, мо наметавонем маълумотро дар бораи он, ки атрибут чӣ иҷозатҳо дорад, ба даст орем.

Дескриптор

Биёед ба мизи худ баргардем. Пас аз эълони арзиши хусусият, эъломияи атрибутҳои зерин имконпазир аст:
1. Эъломияи нави хусусиятҳо (хизмат метавонад хусусиятҳои зиёде дошта бошад)
2. Эъломияи нави хидмат (мумкин аст дар ҷадвал шумораи зиёди онҳо вуҷуд дошта бошанд)
3. Эълони даста

Дар мавриди характеристикаи ченкунии набзи дил, дар ҷадвали мо, эъломияи арзиши характеристика бо эъломияи дескриптор ҳамроҳ карда мешавад. Дескриптор атрибутест, ки дорои маълумоти иловагӣ дар бораи хусусият мебошад. Якчанд намуди тавсифкунанда вуҷуд дорад. Мо дар бораи онҳо дар қисми дуюми ин мақола муфассал сӯҳбат хоҳем кард. Ҳоло, мо танҳо ба Дескриптори конфигуратсияи характеристикаи мизоҷ (CCCD) муроҷиат мекунем. Он дорои UUID ба 0x2902 баробар аст. Бо истифода аз ин дескриптор, муштарӣ қобилияти фаъол кардани нишондод ё огоҳиро дар сервер дорад. Фарқи байни онҳо хурд аст, аммо ҳанӯз ҳам вуҷуд дорад. Огоҳинома тасдиқи гирифтани маълумотро аз муштарӣ талаб намекунад. Нишондиҳанда инро талаб мекунад, гарчанде ки он дар сатҳи GATT рух медиҳад, аммо ба сатҳи барнома намерасад. Чаро ин тавр, шумо мепурсед? Афсус, ман инро намедонам. Фақат бигӯям, ки коршиносони скандинавӣ истифодаи огоҳиҳоро тавсия медиҳанд. Ғайр аз он, тафтиши якпорчагии баста (бо истифода аз CRC) дар ҳарду ҳолат сурат мегирад.

хулоса

Дар охири макола хаминро гуфтаниам. Ҷадвали охирин каме печида аст. Аммо, ман онро интихоб кардам, зеро он дода шудааст мақола, ки ман ба он такя мекунам. Дар қисми дуюми мақолаи худ ман ният дорам амиқтар ба мушаххасоти BlueTooth 4.0 омӯзам. Дар он ҷо моро диаграммаҳо ва нақшаҳои дурусттар интизоранд. Дар қисми сеюм, ман мехоҳам гузоришеро, ки тавассути барномаи Wireshark аз яке аз гаҷетҳо гирифта шудааст, таҳлил кунам ва тамоми назарияеро, ки мо меомӯзем, "зинда" бубинам.

Корманди гурӯҳи ширкатҳо "Моҳвораи қайсар"
Печерских Владимир

Манбаъ: will.com

Илова Эзоҳ