我需要在scanRspData里带上电量,所以每隔一段时间要刷新scanRspData的内容。现在的主要问题是,怎么修改,我试过直接调用
GAPRole_SetParameter( GAPROLE_SCAN_RSP_DATA, sizeof ( scanRspData ), scanRspData );但没修改过来。我也试过先暂停广播再修改,修改完后开启广播,但这样也不行。是不是专门有个更新的函数?
顺便问下,因为我们对功耗要求比较高,我准备每隔1分钟读一下电量值再放到scanRspData里,这样合理吗?
Yan:
Weichao,
你需要先停止广播之后,再去修改scanRspData,然后再使能广播。
每隔一分钟读取电量没问题。
Weichao Fang:
回复 Yan:
Yan,
我试过先停止广播,修改完再开启广播,但是收到的scanRspData还是没有变。
是调用这个函数的吗?GAPRole_SetParameter( GAPROLE_SCAN_RSP_DATA, sizeof ( scanRspData ), scanRspData )
Q C:
回复 Weichao Fang:
你进去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应该也是可以的。另外,好像不用关闭广播直接修改就行,我尝试过先关闭广播,修改之后再开启广播,好像有问题。
zhl cui:
回复 Q C:
你的问题解决了吗, 我的现象是能修改 ,但是修改了相应包后 下次部分手机扫描不到设备了