没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
Zstack 中如何实现自己的任务
在 Zstack(TI 的 Zigbee 协议栈)中,对于每个用户自己新建立的任务通常需要两个相关的处理
函数,包括:
(1). 用于初始化的函数, 如 :SampleApp_Init(), 这个函数是在 osalInitTasks() 这个
osal(Zstack 中自带的小操作系统)中去调用的,其目的就是把一些用户自己写的任务中的一些
变量,网络模式,网络终端类型等进行初始化;
(2).用于引起该任务状态变化的事件发生后所需要执行的事件处理函数,如:
SampleApp_ProcessEvent(),这个函数是首先在 const pTaskEventHandlerFn tasksArr[ ] 中进行
设置(绑定),然后在 osalInitTasks()中如果发生事件进行调用绑定的事件处理函数.
下面分 3 个部分分析.
1.用户自己设计的任务代码在 Zstack 中的调用过程
(1).main() 执行(在 ZMain.c 中)
main() ---> osal_init_system()
(2). osal_init_system()调用 osalInitTasks(), (在 OSAL.c 中)
osal_init_system() ---> osalInitTasks()
(3). osalInitTasks()调用 SampleApp_Init() , (在 OSAL_SampleApp.c 中)
osalInitTasks() ---> SampleApp_Init()
在 osalInitTasks() 中实现了多个任务初始化的设置, 其中 macTaskInit( taskID++ ) 到
ZDApp_Init( taskID++ )的几行代码表示对于几个系统运行初始化任务的调用,
而用户自己实
现的 SampleApp_Init()在最后,这里 taskID 随着任务的增加也随之递增.所以用户自己实现的
任务的初始化操作应该在 osalInitTasks()中增加.
void osalInitTasks( void )
{
uint8 taskID = 0;
//这里很重要, 调用 osal_mem_alloc()为当前 OSAL 中的各任务分配存储空间(实际上是一个
任//务数组),并用 tasksEvents 指向该任务数组(任务队列).
王向庄
- 粉丝: 18
- 资源: 344
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0