低功耗藍牙學習筆記-GATT

聲明:如果是ble初學者,看到這麼多層協議可能感到頭暈,已經記不清各層之間是如何銜接的。其實在主機端開發者能接觸到的只有HCI層、L2CAP層、屬性協議層(ATT)。GATT不屬於協議,它是很據ATT層實現的訪問規範。每次想到這就忍不住高歌一曲《洋蔥》:你就這樣一層一層的剝開我的心~,最後真正的數據就剩那麼點!

在上一章節我們瞭解了屬性的概念。在實際的應用中,有這麼一個數據庫,它是由很多條屬性組成。這個數據庫是一個獨立的profile,一個profile可以由至少一個或多個Server 組成。而 一個Server 的由0 或多個引用服務《Include》和至少一個特性《Characteristic》 組成。如下圖:

一個特性包括

特性聲明

特性值聲明

特性描述符

知道你們又開始暈了!來來來~大家跟我一起動動手。

推薦一個BLE的APP工具,它簡直就是學習BLE的利器。讓我們來使用手機配置一個帶電池服務的BLE服務器。

nRF Connect走起~

服務定義的開始爲服務聲明,結束於下一個服務聲明或者句柄達到 0xFFFF。所有的包含定義將緊跟服務聲明並在特性定義之前, 所有的特定定義將緊跟在最後一個包含定義,當沒有包含定義時,特性定義緊跟在服務聲明之後。

 

屬性類型分組 

 

在 GATT Profile 中將屬性類型分爲 3 組:
首要服務Primary Service
次要服務 Secondary Service
特性Characteristic
一個組開始於一個聲明, 服務分組結束於下一個服務聲明  
特性分組結束於下一個特性的聲明或者是下一個服務的聲明 
 也就是服務聲明對服務進行分組,特性聲明對特性進行分組。服務是一種或多種特性的組合;特性則是由一種或多種屬性組成。
 
 
特性Characteristic
特性包含 3 個基本的要素:
特性聲明

聲明的屬性的值的聲明
特性描述符 

 

表 3-9 是截取的表 3-5 中心率計的第一個特性分組 ,它剛好是一個最小的特性。

 

GATT規程

對於 GATT 規程定義瞭如何用 ATT 協議發現和使用服務、特性與描述符的標準方法。

GATT 規程有 3 中基本規程:發現規程、客戶端發起規程和服務器發起規程

 

發現服務和特性
有 3 種方法發現服務:發現所有首要服務、按服務 UUID 發現首要服務、查找包含服務。
在服務發現以後,便可以發現每個服務的特性。要取得完整的特性,需要發現特性和特性描述符
 

ATT 協議與 GATT 映射表

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章