XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XX 作 者:ZHS(文化人)
XX 聯繫方式:文章末尾Chat快問(或進羣:471144274)
XX 版權聲明:原創文章,歡迎評論和轉載~轉載時能告訴我一聲就最好了
XX 要說的話:作者水平有限,難免有不足之處,懇請指正!
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
寫在前面:最近有很多人問到,CSR的ADK中如何修改藍牙設備名稱,這裏我針對平時的操作做個簡單總結;
問:把大象放冰箱需要幾步?答:3步。
對的,我們這裏修改藍牙設備名稱,也是需要3步:
1、調用lib庫中connection接口,通過HCI指令修改底層協議棧的藍牙名稱:
ConnectionChangeLocalName(nameLength, nameData);
2、使用PSkey存儲該設備名稱,下次開機只需從PSkey讀取即可:
memcpy(at_buff, nameData, nameLength);
PsStore(PS_DEVICE_NAME, at_buff, nameLength);
3、修改EirData,使BR/EDR的藍牙廣播名稱立即改變:
AppWriteEirData();
經過上面3步,傳統藍牙(BR/EDR)的廣播名稱已經變成了修改之後的,但是低功耗藍牙(BLE)的廣播名稱不會發生變化,需要復位後纔會改變。
BLE開機廣播過程:
1)BLE廣播時,先讀取本地設備名稱:
sinkBleGapStartReadLocalName(ble_gap_read_name_advertising);
2)協議棧處理之後會上報事件CL_DM_LOCAL_NAME_COMPLETE:
3)設置BLE廣播名稱:
如果遇到修改之後BLE的廣播名稱沒有變化的情況,請點擊這篇博客,或許有你要的答案。這裏是把BR/EDR和BLE設置爲相同的名稱,當然也可以設置爲不同,但是在安卓端,名稱不同時會跳變,意義不大,況且通過藍牙圖標也是能夠進行區分的。