CC2541动态修改scanRspData的内容
时间:10-02
整理:3721RD
点击:
我需要在scanRspData里带上电量,所以每隔一段时间要刷新scanRspData的内容。现在的主要问题是,怎么修改,我试过直接调用
GAPRole_SetParameter( GAPROLE_SCAN_RSP_DATA, sizeof ( scanRspData ), scanRspData );但没修改过来。我也试过先暂停广播再修改,修改完后开启广播,但这样也不行。是不是专门有个更新的函数?
顺便问下,因为我们对功耗要求比较高,我准备每隔1分钟读一下电量值再放到scanRspData里,这样合理吗?
Weichao,
你需要先停止广播之后,再去修改scanRspData,然后再使能广播。
每隔一分钟读取电量没问题。
Yan,
我试过先停止广播,修改完再开启广播,但是收到的scanRspData还是没有变。
是调用这个函数的吗?GAPRole_SetParameter( GAPROLE_SCAN_RSP_DATA, sizeof ( scanRspData ), scanRspData )
你进去GAPRole_SetParameter()函数里面看一下,找到这个:
case GAPROLE_SCAN_RSP_DATA: if ( len <= B_MAX_ADV_LEN ) { VOID osal_memset( gapRole_ScanRspData, 0, B_MAX_ADV_LEN ); VOID osal_memcpy( gapRole_ScanRspData, pValue, len ); gapRole_ScanRspDataLen = len; ret = GAP_UpdateAdvertisingData(gapRole_TaskID,FALSE,gapRole_ScanRspDataLen,gapRole_ScanRspData); } else { ret = bleInvalidRange; } break;
看看有没有
ret = GAP_UpdateAdvertisingData(gapRole_TaskID,FALSE,gapRole_ScanRspDataLen,gapRole_ScanRspData);这条语句
没有的话加上应该就可以了,我动态修改过GAPROLE_ADVERT_DATA,修改GAPROLE_SCAN_RSP_DATA应该也是可以的。
另外,好像不用关闭广播直接修改就行,我尝试过先关闭广播,修改之后再开启广播,好像有问题。