This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

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这两个事件,这样就造成了事件之间的冲突,即使你没有启动这个事件,别的事件也会启动这个事件。我就犯过这样的错误,建议你排查一下。