蓝牙定时事件处理
大家好:
我现在在使用osal_start_timerEX()函数启动一个定时改变广播内容的事件,广播内容写在了一个二维数组中,具体代码
if(events & SBP_PERIODIC_CIRCLEEVT)
{
//停止广播
GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &initial_advertising_enable );
//改变广播内容
SimpleProfile_advertData();
//定时
osal_start_timerEx( simpleBLEPeripheral_TaskID, SBP_PERIODIC_CIRCLEEVT, TimeInterval );
// return (events ^ SBP_PERIODIC_CIRCLEEVT);
}
在SimpleProfile_advertData(); 函数中我做了以下操作:
GAPRole_SetParameter( GAPROLE_ADVERT_DATA,30, UserAdvertData[g1_count%3] );
GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &connAdv );
NPI_WriteTransport(UserAdvertData[g1_count%3],sizeof( uint8 )*30);
g1_count++;
按照逻辑应该是隔一段事件打印出一条数据,可是现在在串口打出的数据有时候是两条,有时候是一条,而且g1_count是每条都自增的,本来应该是第一条数据,第二条数据,第三条数据这样的,串口显示的是第三条,第二条,第一条这样的,这是怎么回事啊?大神们,帮帮忙吧
baozhu,
你每次修改广播参数的时候有没有先把广播停止呢?
hi Yan,
我每次启动改变广播内容之前有关闭广播的,就是下面的第一句,难道它放的位置有问题?
if(events & SBP_PERIODIC_CIRCLEEVT)
{
//停止广播
GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &initial_advertising_enable );
//改变广播内容
SimpleProfile_advertData();
//定时
osal_start_timerEx( simpleBLEPeripheral_TaskID, SBP_PERIODIC_CIRCLEEVT, TimeInterval );
// return (events ^ SBP_PERIODIC_CIRCLEEVT);
}