[BLE--GAP]GAP Service及其使用
簡(jiǎn)述
GAP本身是一個(gè)Profile,并不是Protocol,其作用是定義了如何來(lái)使用藍牙的Host的各層的Protocol。GAP中有一個(gè)GAP Service,是用來(lái)表明設備的基本信息的,只要作為GATT Server,就需要實(shí)現這個(gè)GAP Service。
GAP Service
先看一張圖,對GAP Service有個(gè)整體了解:
從此圖可看到,BR/EDR可以選擇實(shí)現GAP Service的Device Name和Appearance屬性。對于BLE而言,是分角色進(jìn)行對待的,Broadcaster和Observer不需要GAP Service。對于Peripheral和Central角色,則可能會(huì )需要實(shí)現其中部分或全部實(shí)現:
Peripheral
Device Name和Appearance必須要實(shí)現,Peripheral Preferred Connection Parameters是可選的,而Central Address Resolution則要看Link Layer Privacy是否支持。
Central
Device Name和Appearance必須要實(shí)現,Peripheral Preferred Connection Parameters不需要,因為是針對peripheral的,而Central Address Resolution則要看Link Layer Privacy是否支持。
多GAP Role模式下
對于支持多GAP Role的:GAP Service必須支持所有Role的需求,即為所有Role需求的總和。而當操作于不支持某些Characteristic的Role下時(shí),設備也必須繼續暴露出其所支持的所有GAP Service的Characteristics。
Characteristic介紹
GAP Service的4個(gè)Characteristic的介紹。
Device Name
雖然這里規定Device Name長(cháng)度可以到248字節,但一般不會(huì )需要那么長(cháng)的名字,一般會(huì )建議最長(cháng)到達40字節就好了。
Appearance
Appearance即表明這是個(gè)什么設備,如鼠標?鍵盤(pán)?等等,用2個(gè)字節可以表示很多種類(lèi)的,某個(gè)代碼對應某個(gè)具體的Appearance表示,這個(gè)需要參考SIG的Assigned Numbers,上面有列表的。另外,Device Name和Appearance都是表示本地設備屬性的,因此只會(huì )有一份實(shí)例。對于多GAP Role的狀況,應當還是只會(huì )維護一份Device Name和Appearance,不然一個(gè)設備有多個(gè)名字和多個(gè)Appearance,就不好表示了。
Peripheral Preferred Connection Parameters(PPCP)
主要是表明Peripheral設備這邊比較偏好的一個(gè)連接參數,包括:
- Minimum connection interval
- Maximum connection interval
- Slave Latency
- Connection Supervision timeout multiplier
關(guān)于連接參數的介紹涉及的地方很多了,這里不再贅述。其實(shí)最關(guān)注的還是在哪使用這個(gè)參數?如何使用呢?我的想法是,這個(gè)是供Central來(lái)獲知的。不過(guò)有點(diǎn)略為奇怪,Central在鏈路建立時(shí)是通過(guò)CONN_REQ來(lái)設置好連接參數的,而此時(shí)兩者并未建立連接,因此Central此時(shí)并不同通過(guò)ATT_Read來(lái)獲取Peripheral上的這個(gè)PPCP,難道是建立連接后Central有需要知道這個(gè)PPCP的必要?因為Peripheral也有直接更新連接參數的過(guò)程的啊,這樣看來(lái)具體應用估計也不是必要吧。
Central Address Resolution
這個(gè)看來(lái)是BT 4.2添加的新特性了。因為在BT 4.2中,為了提高BT的安全性(原來(lái)SMP的方式是可以破解的),加入了Random Address的內容。這里的Central Address Resolution就是用來(lái)表明暴露GAP Service的這個(gè)Central設備,是否支持Resolvable Private Address(RPA)的。
Peripheral設備通過(guò)讀對方Central設備的GAP Service的Central Address Resolution,就能知道其是否支持RPA了,如果其支持,那Peripheral就可以在自己的Directed Advertisement中使用RPA了。如果不支持,那還是只能使用public地址了。
關(guān)于藍牙的public地址,private地址,請參考設備藍牙地址這篇文章。
來(lái)看下Central Address Resolution的內容:
一份實(shí)例
最后補充下,上面的GAP Service,對于一個(gè)設備而言,應當是只有一份實(shí)例的,即不管是多GAP Role設備還是就只支持一個(gè)GAP Role,都只需要維護一份GAP Service,而該Service中的Characteristics都只有一份實(shí)例的。
原文鏈接:https://blog.csdn.net/suxiang198/article/details/48521335/
*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。