总结一下调用事件的流程,做一个调用事件的实验。
一、调用事件流程
上篇我们说了Z-Stack处理事件的流程,这个流程可以总结成以下几步:
1. 在操作系统运行的函数中,下列程序对编号为 idx 的任务的 events 事件进行处理
activeTaskID = idx;
events = (tasksArr[idx])( idx, events );
activeTaskID = TASK_NO_TASK;
2. 进入 tasksArr[idx] 数组,将第 idx 个元素作为需要调用的事件处理函数:
const pTaskEventHandlerFn tasksArr[] = {
macEventLoop,
nwk_event_loop,
Hal_ProcessEvent,
#if defined( MT_TASK )
MT_ProcessEvent,
#endif
APS_event_loop,
#if defined ( ZIGBEE_FRAGMENTATION )
APSF_ProcessEvent,
#endif
ZDApp_event_loop,
#if defined ( ZIGBEE_FREQ_AGILITY ) || defined ( ZIGBEE_PANID_CONFLICT )
ZDNwkMgr_event_loop,
#endif
zcl_event_loop,
zclSampleTemperatureSensor_event_loop
};
3. 以用户自定义的一个函数为例(上段程序的最后一各函数),进入 uint16 zcl