概述
事件与消息的区别
在osal中
事件是驱动任务去执行某些操作的条件,当系统中产生一个事件,OSAL将这个事件传递给相应任务后,任务才能执行一个相应的操作(传递这个行为是通过调用轮训函数实现,完成操作时通过时间处理函数实现)。
事件常伴随一些信息,比如按键按下事件后,携带着是几号按键按下,所以将事件和数据封装成一个消息,然后在事件处理函数中使用osal_msg_receive()函数接收小,并做相应的消息判断,比如:AF_INCOMING_MSG_CMD消息,然后调用相应的消息处理函数。
OSAL维护了一个消息队列,每隔消息都会放到消息队列中去,当任务接收到事件后,从消息队列中获取属于自己的消息,然后调用相应的消息处理函数。
任务、事件和消息之间关系
Zstack是zigebee协议的一个实现,为更好管理,加入了OSAL(操作系统抽象层)
在OSAL中,有任务、事件、消息三个概念。
他们关系如下:
- 任务是处理事件的一个功能集合,一般有一个事件处理函数实现(ProcessEvents)
- 事件是当前系统中被触发的动作,比如:按键按下、网络状态发生改变、串口收到消息等等
- 消息则是事件及事件所携带消息的集合。发生事件是,OSAL会将时间和其消息打包到消息队列,供事件处理函数来处理。
具体流程为:
事件发生 -> 被打包为消息 -> 存放到消息队列 -> OSAL轮训任务中的事件状态 -> 有事件发生 -> 事件处理函数执行对应功能
最后
以上就是平常面包为你收集整理的OSAL任务、事件和消息之间关系.md的全部内容,希望文章能够帮你解决OSAL任务、事件和消息之间关系.md所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复