- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
z-stack中添加新任务
TI Z-stack 协议栈学习-添加新任务
1.Zstack 中如何实现自己的任务
/blog/static/1940851920097710392587/
在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 指向该任务数组(任务队列).
tasksEvents = (uint16 *)osal_mem_alloc( sizeof( uint16 ) * tasksCnt);
osal_memset( tasksEvents, 0, (sizeof( uint16 ) * tasksCnt)); //将taskSEvents
所指向的空间清零
macTaskInit( taskID++ );
nwk_init( taskID++ );
Hal_Init( taskID++ );
#if defined( MT_TASK )
MT_TaskInit( taskID++ );
#endif
APS_Init( taskID++ );
ZDApp_Init( taskID++ );
SampleApp_Init( taskID ); //用户自己需要添加的任务
}
2.任务处理调用的重要数据结构
这里要解释一下,在Zstack 里,对于同一个任务可能有多种事件发生,那么需要执
行不同的事件处理,为了方便,对于每个任务的事件处理函数都统一在一个事件处
理函数中实现,然后根据任务的ID 号(task_id)和该任务的具体事件(events)调用
某个任务的事件处理函数,进入了该任务的事件处理函数之后,再根据events 再
来判别是该任务的哪一种事件发生,进而执行相应的事件处
理.pTaskEventHandlerFn 是一个指向函数(事件处理函数)的指针,这里实现的
每一个数组元素各对应于一个任务的事件处理函数,比如
SampleApp_ProcessEvent 对于用户自行实现的事件处理函数uint16
SampleApp_ProcessEvent( uint8 task_id, uint16 events ),所以这里如果我们实
现了一个任务,还需要把实现的该任务的事件处理函数在这里添加.
const pTaskEventHandlerFn tasksArr[] = {
macEventLoop,
nwk_event_loop,
Hal_
您可能关注的文档
- 促销技巧9.doc
- 典型论据.doc
- 七年级上学期期中考试生物试题.doc
- “臭臭”,陪伴了女儿的孤单.ppt.ppt
- 语文-大联考2015届高三第七次联考语文试卷.doc
- 唐诗名篇.doc
- 1作文教学--我的愿望.ppt
- 《100以内的加减法》测试题.doc
- 鲁教版八下语文第一单元 字词.doc
- 大二班家访.doc
- 2025年青海省德令哈市事业单位考试(自然科学专技类C类)职业能力倾向测验重点难点精练试题推荐.docx
- 2025年湖南省汨罗市职业能力倾向测验事业单位考试(医疗卫生类E类)试题必威体育精装版.docx
- 2025年贵州省仁怀市事业单位考试(医疗卫生类E类)职业能力倾向测验试卷附答案.docx
- 2025年陕西省兴平市事业单位考试职业能力倾向测验(中小学教师类D类)强化训练题库推荐.docx
- 2025年贵州省凯里市事业单位考试职业能力倾向测验(自然科学专技类C类)强化训练题库必威体育精装版.docx
- 2025年福建省福安市事业单位考试职业能力倾向测验(综合管理类A类)强化训练题库必威体育精装版.docx
- 四川省广汉市事业单位考试(中小学教师类D类)职业能力倾向测验知识点试题及答案1套.docx
- 2025年辽宁省兴城市事业单位考试(医疗卫生类E类)职业能力倾向测验强化训练试题集附答案.docx
- 云南省香格里拉市职业能力倾向测验事业单位考试(医疗卫生类E类)试题必威体育精装版.docx
- 幼儿园幼小衔接数学——20以内数课件第3讲 1-5比多少.ppt
最近下载
- 《开国大典》ppt课件.pptx VIP
- Unit 4 Stage and screen 课件(共30张ppt) 外研版(2019)高中英语必修第二册.pptx VIP
- 2025年青岛职业技术学院单招职业适应性测试题库及答案一套.docx VIP
- 2024年《知识产权法》形考任务1答案.pdf VIP
- 高一数学备课组长工作总结.pptx VIP
- Moldflow模流分析入门与实战 课件 1.5 创建浇注系统.pptx
- BEVERLY 比佛利 QZBW20S-16净水机 说明书.pdf
- 困难退役军人帮扶计划书.pptx VIP
- 【优质课】《马克思主义的诞生与传播》说课课件.pptx VIP
- 畜产品质量安全知识课件.pptx
文档评论(0)