热度 14
2014-9-27 12:21
2018 次阅读|
0 个评论
http://85kaifa.taobao.com zigbee学习--osalInitTasks (OSAL_SampleApp.c) /********************************************************************* * @fn osalInitTasks * * @brief This function invokes the initialization function for each task. * * @param void * * @return none */ void osalInitTasks( void ) { uint8 taskID = 0; //osal_mem_alloc为OS内存分配函数,tasksCnt为预先定义好了的任务个数,任务列表tasksArr中列出当前的任务,tasksEvents系统所有任务的事件指针头,并将每个任务的事件清零 tasksEvents = (uint16 *)osal_mem_alloc( sizeof( uint16 ) * tasksCnt); osal_memset( tasksEvents, 0, (sizeof( uint16 ) * tasksCnt)); //初始化任务ID和对应的任务函数(tasksArr序列),mac_taskID=0 macTaskInit( taskID++ ); //对用任务 macEventLoop MAC层任务 nwk_init( taskID++ ); //对应任务nwk_event_loop 网络层任务 Hal_Init( taskID++ ); //对应任务Hal_ProcessEvent 初始化硬件 #if defined( MT_TASK ) MT_TaskInit( taskID++ ); //对应任务MT_ProcessEvent,MT_TASK在工程配置中已定义 //MT层任务:实现通过串口可控制各层,并与各层进行直接交互 #endif APS_Init( taskID++ ); //对应任务APS_event_loop 应用层由三个部分组成,APS 子层,ZDO(包含 ZDO 管理平台) 和制造商定义的应用对象 //APS:提供NWK层和APL层之间的接口,又名应用支持子层 #if defined ( ZIGBEE_FRAGMENTATION ) APSF_Init( taskID++ ) ;//对应任务APSF_ProcessEvent #endif ZDApp_Init( taskID++ ) ;//对应任务ZDApp_event_loop #if defined ( ZIGBEE_FREQ_AGILITY ) || defined ( ZIGBEE_PANID_CONFLICT ) ZDNwkMgr_Init( taskID++ ) ;//对应任务ZDNwkMgr_event_loop 初始化网络管理任务 #endif SampleApp_Init( taskID ); //对应任务SampleApp_ProcessEvent 自定义任务初始化 }