zigbee任务的添加

#ifdef __cplusplus
extern "C"
{
#endif
extern void osalAddTasks( void );
#ifdef __cplusplus
}
#endif

条件编译,如果定义了__cplusplus,则代码为

extern "C"
{
extern void osalAddTasks( void );
}

否则为:
extern void osalAddTasks( void );

上面讲到的就是一个zigbee操作系统提供的添加任务的接口函数,

该函数是应用层与os直接的链接桥梁,开发人员在开发自己的特殊功

能与应用时,要把功能与应用以任务的形式添加到操作系统队列中,

调用的正是void osalTaskAdd( pTaskInitFn pfnInit,
                  pTaskEventHandlerFn pfnEventProcessor,
                  byte taskPriority);
任务添加的过程分析
1.如果任务是空的,ptr = &tasksHead *prt = newTask

,//tasksHead = newTask
说明新建任务就是任务队列的头任务,理解起来没什么问题

2.如果任务不是空的,就要看新加入的任务的优先级了,如果优先级

较低,要求比已经存在的头任务的优先级低,那么它是这样加入的:
ptr = &tasksHead;
srchTask = tasksHead;
while(srchTask){
 ptr = &srchTask->next;
 srchTask = srchTask->next;
}
*ptr = newTask;
将任务插入点逐渐后移,直到插入点位空,在while()循环结束时,

srchTask指针为空,ptr保存的已经是这个空指针的地址,此时要做

的就是把新任务的指针赋值给这个空指针,这样,新任务就添加到队

列的末尾了,ptr即为新任务指针的地址。

3.如果任务不是空的,且新任务的优先级高于当前头任务的优先级,

处理起来只需将新任务添加在当前头任务的前面,
 newTask->next = srchTask;
 *ptr = newTask;
 return;//函数立即返回

添加任务要注意,添加的信息即为任务初始化函数,任务事件处理函数,任务优先级。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值