event事件处理问题
在事件处理函数中需要处理5个事件,发现放在最后一个if里面的事件总是得不到处理,已经设置了定时启动该事件了,请问需要怎么做?
发现
if ( events & START_DISCOVERY_EVT )
{
simpleBLECentralStartDiscovery( );
return ( events ^ START_DISCOVERY_EVT );
}
这个事件一直会执行,即使我把启动事件的地方注释掉了,它还是会执行
/*if ( simpleBLECharHdl == 0 )
{
osal_start_timerEx( simpleBLETaskId, START_DISCOVERY_EVT, DEFAULT_SVC_DISCOVERY_DELAY );
}*/
geen,
啥工程呢?
追踪一下在工程里面如何触发你的START_DISCOVERY_EVT 事件啊。
TI 提供的例程是通过按键IO触发的。
在MasterSlaveSwitch工程中,事件是在static void simpleBLECentralEventCB( gapCentralRoleEvent_t *pEvent )函数中 case GAP_LINK_ESTABLISHED_EVENT:下
if ( simpleBLECharHdl == 0 )
{
osal_start_timerEx( simpleBLETaskId, START_DISCOVERY_EVT, DEFAULT_SVC_DISCOVERY_DELAY );
}
触发的;我把这个触发事件注释掉了还是回去执行START_DISCOVERY_EVT事件
不排除的一个原因,事件定义的数字必须是一个二进制位,如0x0008,0x0004,0x0001这样的数字,如果你定义0x0003,可能就会触发0x0002和0x0001这两个事件,这样就造成了事件之间的冲突,即使你没有启动这个事件,别的事件也会启动这个事件。我就犯过这样的错误,建议你排查一下。