在学习TI的ZigBee软件包带的OSAL API时,先要明白两个重要的数组。如下:
第一个数组:这是一个指向函数的指针数组:
const pTaskEventHandlerFn tasksArr[] = {
macEventLoop,
nwk_event_loop,
Hal_ProcessEvent,
#if defined( MT_TASK )
MT_ProcessEvent,
#endif
APS_event_loop,
ZDApp_event_loop,
SAPI_ProcessEvent
};
这里就是对应任务ID的任务处理函数,如果还要增加任务请在SAPI_ProcessEvent后面增加。
pTaskEventHandlerFn 是一个由typedef定义的类型,请定义如下:
typedef unsigned short (*pTaskEventHandlerFn)( unsigned char task_id, unsigned short event );
第二个重要数组:
const uint8 tasksCnt = sizeof( tasksArr ) / sizeof( tasksArr[0] );
uint16 *tasksEvents; //这个很重要
如果初看,觉得这只是个指向,其实这是一个指针数组,其数组大小的分配如下:
tasksEvents = (uint16 *)osal_mem_alloc( sizeof( uint16 ) * tasksCnt);
在void osalInitTasks( void )函数可以找到。
以上就是这两个重要数组。有关任务之间传递消息,还没有弄明白,还待进一步研究。
April 17,2010
文章评论(0条评论)
登录后参与讨论