天天看點

CC2640R2F藍牙調試——更改裝置名稱

調試CC2640R2F,以TI官方simple_peripheral例程為基礎,更改手機端搜尋到的藍牙名稱。

1、安卓和IOS搜尋藍牙名稱有何差別?

配置CC2640R2F時,有兩個地方配置了藍牙名,分别是attDeviceName[]和scanRspData[],其中scanRspData[]除了包含local_name外,還有發射功率和時間間隔資訊。

安卓裝置:

搜尋顯示的是local_name,需要在scanRspData中更改。

IOS裝置:

搜尋顯示的是attDeviceName,需要在attDeviceName中更改。采用lightblue調試,連接配接之後點選'show'可以顯示local_name,由于attDeviceName需要在連接配接之後讀取,是以之前連接配接過,在更改2640藍牙名稱後顯示的還是修改前的名稱,重新連接配接并斷開,再次搜尋即可變為修改後的名稱。

2、程式中如何更改名稱?

上邊介紹名稱從哪裡指派,下面介紹怎麼更改,其實很簡單,使用初始化的兩個函數:GAPRole_SetParameter()和GGS_SetParameter(),将名稱數組按照要求進行指派操作後,調用這兩個函數就可以。項目需求要時刻更改顯示名稱,具體名稱在另外任務中下發,故每次收到名稱變更要求,就重新指派并調用兩個函數進行配置,實驗顯示名稱會動态更改,配置時不需要關閉藍牙協定棧任務。

3、更改名稱時注意事項?

例程中scanRspData[]按位元組初始化,attDeviceName[]初始化為字元串,名稱更改時一般為按位元組形式指派數組,是以scanRspData重新指派即可,但更改attDeviceName時需注意,預設字元串指派末尾會加'\0',未指派的位元組預設也是0,ASCII碼中為控制字元,不可顯示,會導緻在'0'之後的内容顯示不來,此為多次實驗結果,具體原因需要檢視GGS_SetParameter()的函數實作過程。故一定注意在更改藍牙名稱時,不要在名稱中間出現0x00或ASCII中的不可顯示字元,空格的話可直接指派'  '或0x20。

繼續閱讀