TI中文支持网
TI专业的中文技术问题搜集分享网站

cc2640如何实现动态更新ibeacon广播数据

最近调试cc2640 的时候遇到了 一个问题,我想实现ibeacon数据的动态修改,于是设置了一个二值信号量,当串口接收到新的UUID后,更新全局数组advertData[ ],然后发布信号量,如下:

if(buf[0] == 0x55)
{
for(i=0; i<size-1; i++)
advertData[9+i] = buf[1+i];
Semaphore_post(semBinHandle);
}

在另一个任务里等待信号量,等到信号量后设置advertData参数,如下:

void TaskIBEACON_taskFxn(UArg a0, UArg a1)
{ uint8_t initialAdvertDisable = FALSE;
uint8_t initialAdvertEnable = TRUE;
Semaphore_Params semParams;
Semaphore_Params_init(&semParams);
semParams.mode = Semaphore_Mode_BINARY;
semBinHandle = Semaphore_create(1,&semParams,NULL);
while(1)
{
Semaphore_pend(semBinHandle,(~(0)));
GAPRole_SetParameter(GAPROLE_ADVERT_ENABLED, sizeof(uint8_t),&initialAdvertDisable);
GAPRole_SetParameter(GAPROLE_ADVERT_DATA, sizeof(advertData), advertData);
GAPRole_SetParameter(GAPROLE_ADVERT_ENABLED, sizeof(uint8_t),&initialAdvertEnable);
}
}

程序运行正常,单步测试 广播关闭、更新参数、广播开启都顺序执行了,但问题是手机扫描到的ibeacon UUID不变,跪求大佬解答

Viki Shi:

参考这边类似帖: e2echina.ti.com/…/145247

user5338910:

回复 Viki Shi:

advertData[]只能在周期Event里面更改吗?我想实现的功能是串口接收到数据时才进行更改,所以要在串口接收回调函数里面更改advertData[],并且我单步测试观察变量值时发现advertData[]是已经被更改了的,但手机扫描到的数据却不变,所以我想可能是参数没设置进发送数据里

赞(0)
未经允许不得转载:TI中文支持网 » cc2640如何实现动态更新ibeacon广播数据
分享到: 更多 (0)