博客專欄

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

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

        發(fā)布人:電子禪石 時(shí)間:2021-05-27 來源:工程師 發(fā)布文章

        簡述

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


        GAP Service

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

        這里寫圖片描述

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


        Peripheral

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


        Central

        Device Name和Appearance必須要實(shí)現(xiàn),Peripheral Preferred Connection Parameters不需要,因?yàn)槭轻槍eripheral的,而Central Address Resolution則要看Link Layer Privacy是否支持。


        多GAP Role模式下

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


        Characteristic介紹

        GAP Service的4個(gè)Characteristic的介紹。


        Device Name

        這里寫圖片描述

        雖然這里規(guī)定Device Name長度可以到248字節(jié),但一般不會(huì)需要那么長的名字,一般會(huì)建議最長到達(dá)40字節(jié)就好了。


        Appearance

        這里寫圖片描述

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


        Peripheral Preferred Connection Parameters(PPCP)

        這里寫圖片描述

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

        - Minimum connection interval

        - Maximum connection interval

        - Slave Latency

        - Connection Supervision timeout multiplier

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


        Central Address Resolution

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

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

        關(guān)于藍(lán)牙的public地址,private地址,請參考設(shè)備藍(lán)牙地址這篇文章。

        來看下Central Address Resolution的內(nèi)容:

        這里寫圖片描述


        一份實(shí)例

        最后補(bǔ)充下,上面的GAP Service,對于一個(gè)設(shè)備而言,應(yīng)當(dāng)是只有一份實(shí)例的,即不管是多GAP Role設(shè)備還是就只支持一個(gè)GAP Role,都只需要維護(hù)一份GAP Service,而該Service中的Characteristics都只有一份實(shí)例的。


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


        *博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請聯(lián)系工作人員刪除。



        關(guān)鍵詞: bluetooth

        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 铁力市| 林甸县| 石屏县| 乌兰县| 阳新县| 甘肃省| 苏州市| 长岛县| 比如县| 铁岭县| 黄平县| 城固县| 措勤县| 西藏| 金湖县| 古交市| 积石山| 临洮县| 汕头市| 栾川县| 新乐市| 城市| 新化县| 扎兰屯市| 会宁县| 孟村| 新泰市| 多伦县| 湖南省| 阿克苏市| 福泉市| 林甸县| 鹤壁市| 禄丰县| 斗六市| 巴林左旗| 黄石市| 陕西省| 永靖县| 石景山区| 土默特左旗|