调试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。
|