CC2540 CC2541 动态修改广播数据后,出现GAPROLE_ERROR错误
**协议栈版本:1.3.2
**demo:SimpleBLEPeripheral
一共修改了两个地方,第一个是动态修改广播数据,需要调用GAP_UpdateAdvertisingData。另外一个是在按键中添加了修改advertData,详情如下:
1、peripheral.c,GAPRole_SetParameter函数GAPROLE_ADVERT_DATA部分
if ( len <= B_MAX_ADV_LEN )
{
VOID osal_memset( gapRole_AdvertData, 0, B_MAX_ADV_LEN );
VOID osal_memcpy( gapRole_AdvertData, pValue, len );
gapRole_AdvertDataLen = len;
GAP_UpdateAdvertisingData( gapRole_TaskID,TRUE, gapRole_AdvertDataLen, gapRole_AdvertData );
}
2、simpleBLEPeripheral.c文件中key处理片段(广播数据我有重新定义过)
advertData[5]=count;
advertData[6]=count;
advertData[7]=count;
GAPRole_SetParameter( GAPROLE_ADVERT_DATA, sizeof( advertData ), advertData );
测试现象:
程序上电运行后,正常启动和广播,LCD上显示正在广播,Packetsniffer抓包,广播内容为原数据。
然后触发按键,动态修改advertData 后,出现GAPROLE_ERROR错误,LCD上打印ERROR,但是此错误并未影响其他行为,Packetsniffer抓包看,广播数据已经被成功修改,另外该SimpleBLEPeripheral任然可以被正常的连接、通信,只是每次修改广播内容后,均会出现GAPROLE_ERROR错误。
出现同样的 error, 但是更严重的是,GAPROLE_ERROR 会掉在广播终止
Ti的大神,请问动态修改广播需要怎么整
谢谢
问题解决方式:
1、在动态修改数据之前,先停止广播;
2、确认广播停止后,修改广播数据;
3、开启广播
搞定
请问如何确认广播停止了?
可否提供停止广播、确认广播已停止、开启广播的具体参考代码?
我根据提示,也是先停止广播,然后再开启广播,但是结果不对
我没有用BLE 1.3版本,用的1.4版本,感觉比较好用。1.4中,广播关闭语句
initial_advertising_enable = FALSE;
// Set the GAP Role Parameters
GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &initial_advertising_enable );