关于CC254x动态修改广播数据的一些疑问。
时间:10-02
整理:3721RD
点击:
论坛上说使用GAP_UpdateAdvertisingData可以更新广播数据。也提到了在GAPRole_SetParameter中的case GAPROLE_ADVERT_DATA:加上这个函数就可以实现动态更新广播数据。效果如下:
case 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); } else { ret = bleInvalidRange; } break;
但是,我在同文件里面的gapRole_ProcessGAPMsg函数里面发现有使用GAP_UpdateAdvertisingData函数。其中的两个事件中也使用了更新函数。
GAP_DEVICE_INIT_DONE_EVENT
GAP_ADV_DATA_UPDATE_DONE_EVENT
后者应该就是广播更新事件吧。那不是应该理解为GAPRole_SetParameter只是设置广播数据内容。只有当某一时刻的时候,进入gapRole_ProcessGAPMsg的GAP_ADV_DATA_UPDATE_DONE_EVENT才去更新GAPRole_SetParameter设置的数据吗?
居然没人回复
协议栈都是异步操作的,
GAPRole_SetParameter只是通知底层来更新广播信息,不代表更新完毕