微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > CC2540 CC2541 动态修改广播数据后,出现GAPROLE_ERROR错误

CC2540 CC2541 动态修改广播数据后,出现GAPROLE_ERROR错误

时间:10-02 整理:3721RD 点击:

**协议栈版本: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 );

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top