BLE相關(guān)協(xié)議(GAP&GATT)

一匿又、GAP

GAP全名是Generic Access Profile,通用訪問配置文件敬辣,它定義了藍牙設(shè)備的角色牛哺,中心和外設(shè)达传,并且控制他們的連接和廣播數(shù)據(jù)篙耗。廣播數(shù)據(jù)有兩種方式:廣播數(shù)據(jù)和掃描回復(fù)數(shù)據(jù)迫筑,數(shù)據(jù)包大小最長為31字節(jié),其中廣播數(shù)據(jù)方式是必需的宗弯。
廣播數(shù)據(jù)就是藍牙設(shè)備自己定時廣播數(shù)據(jù)出來脯燃,讓周圍環(huán)境的其它設(shè)備可以掃描到它,知道它的存在蒙保,是外設(shè)主動完成的辕棚。而掃描回復(fù)數(shù)據(jù)是可選的,它會根據(jù)需要響應(yīng)請求邓厕,比如收到中心設(shè)備連接請求逝嚎,會響應(yīng)這個請求。這個協(xié)議決定了藍牙設(shè)備的交互方式详恼,比如iBeacon只能向外廣播消息懈糯,而小米手環(huán)可以與中心設(shè)備雙向通信。
GAP的工作流程如下圖:


GAP廣播流程圖.png

大部分情況外設(shè)廣播自己來讓中心設(shè)備發(fā)現(xiàn)自己并建立連接单雾,然后GATT(后面講到)就可以用來進行更多的數(shù)據(jù)交換赚哗,這種方式是獨占的,就是建立連接了以后外設(shè)就不再廣播了硅堆,只跟連接上的中心通信屿储。但也有一種是不需要連接的,比如上面說的Beancon設(shè)備渐逃,它只需要向外廣播數(shù)據(jù)够掠,只要在一定的范圍內(nèi),所有的中心設(shè)備都可以收到數(shù)據(jù)茄菊,不需要指定跟具體某個中心建立連接疯潭,他們的網(wǎng)絡(luò)拓撲圖如下:

GAP廣播方式網(wǎng)絡(luò)拓撲圖.png
二、GATT

GATT面殖,全名Generic Attribute Profile, 通用屬性配置文件竖哩。它定義了兩個BLE設(shè)備的數(shù)據(jù)傳輸方式和兩個概念:Services 和 Characteristics。它建立在ATT(Attribute Protocol)協(xié)議的基礎(chǔ)上脊僚,ATT協(xié)議主要是定義了Attribute(屬性)這個數(shù)據(jù)結(jié)構(gòu)相叁。
一個attribute由三個元素組成:
1、16 bit的句柄(唯一性辽幌,用于區(qū)分和查找不同的attribute)
2增淹、UUID(ATT本身不定義,留給GATT來定義)
3乌企、一個定長的值value(配合UUID使用虑润,由GATT來決定這個UUID的意義和數(shù)據(jù))

GATT協(xié)議中的Service和Characteristic需要遵循ATT這種數(shù)據(jù)結(jié)構(gòu),ATT會管理這些數(shù)據(jù)并提供查找方法加酵。

GATT是建立在GAP基礎(chǔ)之上發(fā)揮作用的拳喻,就是兩個BLE設(shè)備只有通過GAP建立連接之后才能用GATT進行通信梁剔。上面說了掃描回復(fù)數(shù)據(jù)交互方式是獨占的,所以GATT通信只允許是一個外設(shè)和一個中心連接舞蔽。如果兩個外設(shè)想要通信荣病,唯一的方式就是建立GATT連接,通過中心來中轉(zhuǎn)渗柿。

記赘雠琛:一個外設(shè)只能跟一個中心建立連接(獨占的),而一個中心可以同時連接多個外設(shè)(一個手機可以同時連接多個BLE設(shè)備)
GATT連接網(wǎng)絡(luò)拓撲圖


GATT網(wǎng)絡(luò)拓撲圖.png

GATT通信的雙方是C/S關(guān)系朵栖,外設(shè)作為GATT的服務(wù)器(Server)颊亮,中心設(shè)備是GATT的客戶端(Client),它向Server發(fā)起請求陨溅。注意终惑,所有的通信都是由主設(shè)備(客戶端Client)發(fā)起,服務(wù)器Server響應(yīng)數(shù)據(jù)反饋給Client门扇。一旦建立了通信連接雹有,外設(shè)會建議中心設(shè)備做定時連接(connection interval),這樣中心設(shè)備就會在每個連接間隔嘗試重新連接臼寄,檢查有沒有新的數(shù)據(jù)霸奕。這個只是一個建議,中心設(shè)備可能不會嚴格按照這個時間間隔來執(zhí)行吉拳,例如中心設(shè)備正忙于連接其它外設(shè)或者資源太忙质帅。
外設(shè)與中心數(shù)據(jù)交換圖:


數(shù)據(jù)交換圖.png

GATT結(jié)構(gòu)由嵌套的Profile、Service留攒、Characteristics組成煤惩,如下圖:

GATT結(jié)構(gòu)圖.png

Profile,每個Profile就是預(yù)先定義好的Service集合炼邀。例如官方的心率Heart Rate Profile就是結(jié)合了Heart Rate Service和Device Information Service(可以在這里下載下面這兩個PDF文件查看詳細內(nèi)容)

心率.png

所有官方通過GATT的Profile可以看這里

Service就是一個獨立的邏輯項魄揉,它包含一個或多個Characteristic,每個Service都由唯一的UUID標識汤善,UUID有16位的有128位的什猖,16位的UUID是官方通過認證的,需要花錢購買红淡,128位的可以隨便自己定義。完整的Service列表可以看這里降铸。

Characteristic是GATT中最小的邏輯數(shù)據(jù)單元在旱,當然它可能包含一組關(guān)聯(lián)的數(shù)據(jù),例如加速度計的 X/Y/Z 三軸值推掸。還是官方心率的例子桶蝎,可以看到它包含了 3 個 Characteristic:Heart Rate Measurement驻仅、Body Sensor Location 和 Heart Rate Control Point,并且定義了只有第一個是必須的登渣,其他是可選實現(xiàn)的噪服。
每個Characteristic對應(yīng)的value就是對應(yīng)格式的實際心率數(shù)據(jù)。中心可以通過讀取service胜茧、再進一步讀取characteristic來獲得具體的心率數(shù)值粘优。

與Service類似,每個 Characteristic 用 16 bit 或者 128 bit 的 UUID 唯一標識呻顽。所有數(shù)據(jù)交互必須通過明確的UUID確定到service和characteristic雹顺。

你可以免費使用 Bluetooth SIG 官方定義的標準 Characteristic,使用官方定義的廊遍,可以確保 BLE 的軟件和硬件能相互理解嬉愧。當然,你可以自定義 Characteristic喉前,這樣的話没酣,就只有你自己的軟件和外設(shè)能夠相互理解。

實際上卵迂,和 BLE 外設(shè)打交道四康,主要是通過 Characteristic。你可以從 Characteristic 讀取數(shù)據(jù)狭握,也可以往 Characteristic 寫數(shù)據(jù)闪金。這樣就實現(xiàn)了雙向的通信。所以你可以自己實現(xiàn)一個類似串口(UART)的 Sevice论颅,這個 Service 中包含兩個 Characteristic哎垦,一個被配置只讀的通道(RX),另一個配置為只寫的通道(TX)恃疯。

參考資料:
introduction-to-bluetooth-low-energy
ATT和GATT概述
藍牙協(xié)議詳解

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末漏设,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子今妄,更是在濱河造成了極大的恐慌郑口,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件盾鳞,死亡現(xiàn)場離奇詭異犬性,居然都是意外死亡,警方通過查閱死者的電腦和手機腾仅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門乒裆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人推励,你說我怎么就攤上這事鹤耍∪馄龋” “怎么了?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵稿黄,是天一觀的道長喊衫。 經(jīng)常有香客問我,道長杆怕,這世上最難降的妖魔是什么族购? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮财著,結(jié)果婚禮上联四,老公的妹妹穿的比我還像新娘。我一直安慰自己撑教,他們只是感情好朝墩,可當我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著伟姐,像睡著了一般收苏。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上愤兵,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天鹿霸,我揣著相機與錄音,去河邊找鬼秆乳。 笑死懦鼠,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的屹堰。 我是一名探鬼主播肛冶,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼扯键!你這毒婦竟也來了睦袖?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤荣刑,失蹤者是張志新(化名)和其女友劉穎馅笙,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體厉亏,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡董习,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了叶堆。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片阱飘。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖虱颗,靈堂內(nèi)的尸體忽然破棺而出沥匈,到底是詐尸還是另有隱情,我是刑警寧澤忘渔,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布高帖,位于F島的核電站,受9級特大地震影響畦粮,放射性物質(zhì)發(fā)生泄漏散址。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一宣赔、第九天 我趴在偏房一處隱蔽的房頂上張望预麸。 院中可真熱鬧,春花似錦儒将、人聲如沸吏祸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽贡翘。三九已至,卻和暖如春砰逻,著一層夾襖步出監(jiān)牢的瞬間鸣驱,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工蝠咆, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留踊东,地道東北人。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓刚操,卻偏偏與公主長得像闸翅,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子赡茸,可洞房花燭夜當晚...
    茶點故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 藍牙 藍牙的波段為2400-2483.5MHz(包括防護頻帶)缎脾。這是全球范圍內(nèi)無需取得執(zhí)照(但定不是無管制的)的工...
    蘇永茂閱讀 6,154評論 0 11
  • 一. 引言 現(xiàn)在低功耗藍牙(BLE)連接都是建立在GATT(Generic Attribute Profile)協(xié)...
    75cec28807b7閱讀 13,910評論 0 19
  • 看到這篇文章寫的非常詳細Introduction to Bluetooth Low Energy,作為 BLE 的...
    在你左右2018閱讀 2,605評論 1 6
  • 常見藍牙名稱的簡寫 MFI ======= make for ipad ,iphone, itouch 專們?yōu)樘O果...
    Sam129閱讀 1,986評論 0 0
  • 前言: 本文主要描述Android BLE的一些基礎(chǔ)知識及相關(guān)操作流程占卧,不牽扯具體的業(yè)務(wù)實現(xiàn)遗菠,其中提供了針對廣播包...
    幻影宇寰閱讀 5,340評論 6 19