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();

       CSR867x — 如何修改蓝牙设备名称_第1张图片

经过上面3步,传统蓝牙(BR/EDR)的广播名称已经变成了修改之后的,但是低功耗蓝牙(BLE)的广播名称不会发生变化,需要复位后才会改变。

 

    BLE开机广播过程:

    1)BLE广播时,先读取本地设备名称:

    sinkBleGapStartReadLocalName(ble_gap_read_name_advertising);

      CSR867x — 如何修改蓝牙设备名称_第2张图片

    2)协议栈处理之后会上报事件CL_DM_LOCAL_NAME_COMPLETE:

         CSR867x — 如何修改蓝牙设备名称_第3张图片

    3)设置BLE广播名称:

       CSR867x — 如何修改蓝牙设备名称_第4张图片

如果遇到修改之后BLE的广播名称没有变化的情况,请点击这篇博客,或许有你要的答案。这里是把BR/EDR和BLE设置为相同的名称,当然也可以设置为不同,但是在安卓端,名称不同时会跳变,意义不大,况且通过蓝牙图标也是能够进行区分的。

你可能感兴趣的:(CSR867x_old,CSR867x)