Zigbee事件
ZIGBEE事件有两类。系统定义事件和用户定义事件。
系统类事件是协议栈已定义好的。用户类事件是我们用户层面来定义的。
事件类号採用一个16bit的常量,使用独热码编码,独热码是仅仅有一个bit为1,其它全为0的一种码制,採用独热码的长处是操作方便,能够使用简单的位操作指令实现,如:提取系统类事件用events & SYS_EVENT_MSG。清除系统类事件用events ^ SYS_EVENT_MSG;因为事件类号是16bit,也就是说zigbee事件类仅仅有16个。系统类事件SYS_EVENT_MSG使用0x8000,故自己定义事件类仅仅有15个。可採用0x4000至0x0001。
事件处理函数为:app_ProcessEvent( byte task_id, UINT16events ),可见调用此函数将传递两个參数,task_id任务号和events事件类号;事件处理函数首先依据事件类号来推断是何种类型事件。然后依据任务号得到消息指针pMsg,最后依据消息指针结构里的事件号pMsg->event来详细处理事件,event为8bit的常量,系统event在ZComDef.h里定义。
在ZigBee协议栈中,不论什么通信数据都是利用帧的格式来组织的,协议栈的每一层都有特定的帧结构;AF定义了两种帧类型,键值对(Key Value Pair,KVP)和报文(Message,MSG)。KVP消息主要用于传输一些较为简单的变量格式;但因为Zigbee的非常多应用领域中的消息较为复杂并不适用KVP格式。因此Zigbee协议规划定义了MSG类型。MSG对数据格式不作要求。适合不论什么格式的传输数据。因此能够用于传送数据量大的消息。
以下对系统event说明(当中AF_代表应用框架,ZDO_代表设备对象):
1、AF_DATA_CONFIRM_CMD:Data confirmation数据收到确认;A设备发送数据,B设备收到数据后将返回应答ack给A。A收到此ack将触发AF_DATA_CONFIRM_CMD事件;F_DataRequest函数參数options如设AF_ACK_REQUEST,则要求对方设备回复ack。
2、AF_INCOMING_MSG_CMD:Incoming MSG type message收到报文类型的消息;A设备用AF_DataRequest函数发出报文消息,B设备收到报文消息将触发AF_INCOMING_MSG_CMD事件。
3、AF_INCOMING_KVP_CMD:Incoming KVP type message收到键值对类型的消息。
4、AF_INCOMING_GRP_KVP_CMD:Incoming Group KVP type message收到群键值对类型的消息。
5、KEY_CHANGE:Key Events按键触发事件。
6、ZDO_NEW_DSTADDR:ZDO has received a new DstAddr for this app ZDO终端获得新地址。匹配描写叙述符请求(Match Descriptor Request)响应指示(比如:自己主动匹配)。如A设备增加绑定后。A设备触发ZDO_NEW_DSTADDR事件。
7、ZDO_STATE_CHANGE:ZDO has changed the device's network state ZDO网络状态改变;当A设备的网络状态改变时,A就会触发此消息。如SampleApp_NwkState = DEV_INIT也会触发(我理解。不知对不正确)。
8、ZDO_MATCH_DESC_RSP_SENT:ZDO match descriptor response was sent ZDO描写叙述符匹配响应发送;A设备发送ZDP_MatchDescReq函数请求描写叙述符匹配绑定,B设备收到后发送ZDP_MatchDescRsp函数响应,B设备发送响应函数后触发ZDO_MATCH_DESC_RSP_SENT事件。
9、ZDO_CB_MSG:ZDO incoming message callback 收到ZDO反馈消息;A设备用函数ZDO_RegisterForZDOMsg注冊了特定消息,A设备才干用ZDO_CB_MSG消息接收解析此特定消息;应用绑定样例:A设备发送绑定请求,B设备收到后发送匹配响应,A设备收到响应触发ZDO_CB_MSG事件。
///////////////////////未完待续
Zigbee事件的更多相关文章
- JNI详解---从不懂到理解
转载:https://blog.csdn.net/hui12581/article/details/44832651 Chap1:JNI完全手册... 3 Chap2:JNI-百度百科... 11 C ...
- zigbee 中 OSAL 事件传递机制和消息传递机制
一.概述 OSAL (Operating System Abstraction Layer) ,翻译为"操作系统抽象层". OSAL 就是一种支持多任务运行的系统资源分配机制.OS ...
- 【转】zigbee终端无法重连的问题解决
zigbee终端无法重连的问题解决 1.zigbee重连的原因 (1)zigbee由于各种原因的干扰导致信号太差而掉线. (2)协调器重启. 2.zigbee终端重连的处理 (1)zigbee掉线后会 ...
- 【转】ZigBee终端入网方式深入分析
前述 继之前对终端Direct Join的分析,发现很多东西还很模糊,存在很多问题.终于找到时间继续深入挖下去,这次应该比较完整地搞清了终端的入网机制,并纠正之前的几个认识偏差. 由于Z-Stack网 ...
- 【转译】加入ZigBee联盟,共画物联网的未来
Zigbee联盟是物联网全球革命的领导者,创造了随心控制的时代.Zigbee简化了无线产品的整合.加快了市场化,同时让那些希望引入高能效的无线控制的厂商,降低了成本和风险.我们的联盟成员在开放的全球环 ...
- [ZigBee] 16、Zigbee协议栈应用(二)——基于OSAL的无线控制LED闪烁分析(下)
说在前面:上一篇介绍了无线LED闪烁实现的OSAL部分,本篇介绍如何实现无线数据收发及数据处理: 上一篇是用SI跟着流程查看源码,我个人认为以架构的思维去了解代码能让人更清晰 ::ZMain.c程序入 ...
- zigbee学习之路(十五):基于协议栈的按键实验
一.前言 经过上次的学习,相信大家已经初步学会使用zigbee协议进行发送和接受数据了.今天,我们要进行的实验是按键的实验,学会如何在协议栈里实现按键中断. 二.实验功能 在协议栈上实现按键中断,BU ...
- zigbee学习之路(十四):基于协议栈的无线数据传输
一.前言 上次实验,我们介绍了zigbee原理的应用与使用,进行了基于zigbee的串口发送协议,但是上个实验并没有实现数据的收发.在这个实验中,我们要进行zigbee的接受和发送实验. 二.实验功能 ...
- zigbee学习之路(十二):zigbee协议原理介绍
一.前言 从今天开始,我们要正式开始进行zigbee相关的通信实验了,我所使用的协议栈是ZStack 是TI ZStack-CC2530-2.3.0-1.4.0版本,大家也可以从TI的官网上直接下载T ...
随机推荐
- 【SQL】索引
1.定义 索引:一种数据结构,典型的是B-树,有键值对,键对应属性的某个值,值对应该键的存放位置. 建立索引的目的:加快查询速度 比如: SELECT * FROM Movies ; 如果有studi ...
- 【C++】类内函数与内联函数
今天本来在休息,结果小伙伴问了我个问题,把我的三观都颠覆了.get到了新的知识点,这里记录一下. 内类的函数,都默认为是内联函数!! 这居然是真的.然后我就懵了.因为内联函数应该是定义在头文件里比较好 ...
- 【python】正则表达式相关
注意:Python3.X 的print要有括号, Python 2.x的不需要 放上学习时写的例子: import re m = re.match(r'(\w+) (\w+)(?P<sign&g ...
- python 判断平年还是闰年
while 1: s = input('请填入一个年份:') s = int(s) year = False if s % 100 == 0 and s % 400 == 0: year = True ...
- Selenium2+python自动化55-unittest之装饰器(@classmethod)【转载】
前言 前面讲到unittest里面setUp可以在每次执行用例前执行,这样有效的减少了代码量,但是有个弊端,比如打开浏览器操作,每次执行用例时候都会重新打开,这样就会浪费很多时间. 于是就想是不是可以 ...
- 学习apache commons lang3的源代码 (1):前言和R
本系列主要是针对lang3的3.7版本的源代码进行学习,并适当举例.一共大概150多个java文件,争取30天内学习完毕. 26个英文字母 争取每天学习1个字母开头的类们. 今天,就学习R开头的吧. ...
- 第一篇:动态防火墙firewalld和静态防火墙iptables
动态防火墙firewalld firewalld提供了一个动态管理的防火墙,它支持网络(network)/防火墙区域(firewall zones )来定义网络连接( network connecti ...
- 架构妄想:AJAX + REST
William Vambenepe的最新文章,AJAX + REST是最新的架构妄想,让我们回想起了一个具有15年历史的架构,它曾被寄期望对Web产生革命性的影响. 在该架构里,Web服务器将返回包含 ...
- hdu 2215 & hdu 3932(最小覆盖圆)
Maple trees Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- MVC模型绑定
在项目中使用MVC的时候,我们无需像WebForm那样手动获取值再赋值到Model上,这得益于MVC的模型绑定,下面就介绍下复杂类型的模型绑定 Controller: public class Hom ...