博客專欄

        EEPW首頁 > 博客 > [BLE--GAP]GAP Service及其使用

        [BLE--GAP]GAP Service及其使用

        發布人:電子禪石 時間:2021-05-27 來源:工程師 發布文章

        簡述

        GAP本身是一個Profile,并不是Protocol,其作用是定義了如何來使用藍牙的Host的各層的Protocol。GAP中有一個GAP Service,是用來表明設備的基本信息的,只要作為GATT Server,就需要實現這個GAP Service。


        GAP Service

        先看一張圖,對GAP Service有個整體了解:

        這里寫圖片描述

        從此圖可看到,BR/EDR可以選擇實現GAP Service的Device Name和Appearance屬性。對于BLE而言,是分角色進行對待的,Broadcaster和Observer不需要GAP Service。對于Peripheral和Central角色,則可能會需要實現其中部分或全部實現:


        Peripheral

        Device Name和Appearance必須要實現,Peripheral Preferred Connection Parameters是可選的,而Central Address Resolution則要看Link Layer Privacy是否支持。


        Central

        Device Name和Appearance必須要實現,Peripheral Preferred Connection Parameters不需要,因為是針對peripheral的,而Central Address Resolution則要看Link Layer Privacy是否支持。


        多GAP Role模式下

        對于支持多GAP Role的:GAP Service必須支持所有Role的需求,即為所有Role需求的總和。而當操作于不支持某些Characteristic的Role下時,設備也必須繼續暴露出其所支持的所有GAP Service的Characteristics。


        Characteristic介紹

        GAP Service的4個Characteristic的介紹。


        Device Name

        這里寫圖片描述

        雖然這里規定Device Name長度可以到248字節,但一般不會需要那么長的名字,一般會建議最長到達40字節就好了。


        Appearance

        這里寫圖片描述

        Appearance即表明這是個什么設備,如鼠標?鍵盤?等等,用2個字節可以表示很多種類的,某個代碼對應某個具體的Appearance表示,這個需要參考SIG的Assigned Numbers,上面有列表的。另外,Device Name和Appearance都是表示本地設備屬性的,因此只會有一份實例。對于多GAP Role的狀況,應當還是只會維護一份Device Name和Appearance,不然一個設備有多個名字和多個Appearance,就不好表示了。


        Peripheral Preferred Connection Parameters(PPCP)

        這里寫圖片描述

        主要是表明Peripheral設備這邊比較偏好的一個連接參數,包括:

        - Minimum connection interval

        - Maximum connection interval

        - Slave Latency

        - Connection Supervision timeout multiplier

        關于連接參數的介紹涉及的地方很多了,這里不再贅述。其實最關注的還是在哪使用這個參數?如何使用呢?我的想法是,這個是供Central來獲知的。不過有點略為奇怪,Central在鏈路建立時是通過CONN_REQ來設置好連接參數的,而此時兩者并未建立連接,因此Central此時并不同通過ATT_Read來獲取Peripheral上的這個PPCP,難道是建立連接后Central有需要知道這個PPCP的必要?因為Peripheral也有直接更新連接參數的過程的啊,這樣看來具體應用估計也不是必要吧。


        Central Address Resolution

        這個看來是BT 4.2添加的新特性了。因為在BT 4.2中,為了提高BT的安全性(原來SMP的方式是可以破解的),加入了Random Address的內容。這里的Central Address Resolution就是用來表明暴露GAP Service的這個Central設備,是否支持Resolvable Private Address(RPA)的。

        Peripheral設備通過讀對方Central設備的GAP Service的Central Address Resolution,就能知道其是否支持RPA了,如果其支持,那Peripheral就可以在自己的Directed Advertisement中使用RPA了。如果不支持,那還是只能使用public地址了。

        關于藍牙的public地址,private地址,請參考設備藍牙地址這篇文章。

        來看下Central Address Resolution的內容:

        這里寫圖片描述


        一份實例

        最后補充下,上面的GAP Service,對于一個設備而言,應當是只有一份實例的,即不管是多GAP Role設備還是就只支持一個GAP Role,都只需要維護一份GAP Service,而該Service中的Characteristics都只有一份實例的。


        原文鏈接:https://blog.csdn.net/suxiang198/article/details/48521335/


        *博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。



        關鍵詞: bluetooth

        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 文山县| 万年县| 临漳县| 临武县| 安乡县| 巴南区| 灌云县| 红原县| 镶黄旗| 许昌市| 大悟县| 衡山县| 新龙县| 惠州市| 平远县| 星子县| 宜昌市| 牡丹江市| 开鲁县| 疏附县| 清涧县| 富顺县| 婺源县| 北宁市| 浪卡子县| 镇坪县| 确山县| 永清县| 宁明县| 黑山县| 龙门县| 丰镇市| 新邵县| 从江县| 密山市| 新密市| 南部县| 那曲县| 思茅市| 岳池县| 东源县|