CSR867x — 如何修改蓝牙设备名称
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设置为相同的名称,当然也可以设置为不同,但是在安卓端,名称不同时会跳变,意义不大,况且通过蓝牙图标也是能够进行区分的。