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事件的更多相关文章

  1. JNI详解---从不懂到理解

    转载:https://blog.csdn.net/hui12581/article/details/44832651 Chap1:JNI完全手册... 3 Chap2:JNI-百度百科... 11 C ...

  2. zigbee 中 OSAL 事件传递机制和消息传递机制

    一.概述 OSAL (Operating System Abstraction Layer) ,翻译为"操作系统抽象层". OSAL 就是一种支持多任务运行的系统资源分配机制.OS ...

  3. 【转】zigbee终端无法重连的问题解决

    zigbee终端无法重连的问题解决 1.zigbee重连的原因 (1)zigbee由于各种原因的干扰导致信号太差而掉线. (2)协调器重启. 2.zigbee终端重连的处理 (1)zigbee掉线后会 ...

  4. 【转】ZigBee终端入网方式深入分析

    前述 继之前对终端Direct Join的分析,发现很多东西还很模糊,存在很多问题.终于找到时间继续深入挖下去,这次应该比较完整地搞清了终端的入网机制,并纠正之前的几个认识偏差. 由于Z-Stack网 ...

  5. 【转译】加入ZigBee联盟,共画物联网的未来

    Zigbee联盟是物联网全球革命的领导者,创造了随心控制的时代.Zigbee简化了无线产品的整合.加快了市场化,同时让那些希望引入高能效的无线控制的厂商,降低了成本和风险.我们的联盟成员在开放的全球环 ...

  6. [ZigBee] 16、Zigbee协议栈应用(二)——基于OSAL的无线控制LED闪烁分析(下)

    说在前面:上一篇介绍了无线LED闪烁实现的OSAL部分,本篇介绍如何实现无线数据收发及数据处理: 上一篇是用SI跟着流程查看源码,我个人认为以架构的思维去了解代码能让人更清晰 ::ZMain.c程序入 ...

  7. zigbee学习之路(十五):基于协议栈的按键实验

    一.前言 经过上次的学习,相信大家已经初步学会使用zigbee协议进行发送和接受数据了.今天,我们要进行的实验是按键的实验,学会如何在协议栈里实现按键中断. 二.实验功能 在协议栈上实现按键中断,BU ...

  8. zigbee学习之路(十四):基于协议栈的无线数据传输

    一.前言 上次实验,我们介绍了zigbee原理的应用与使用,进行了基于zigbee的串口发送协议,但是上个实验并没有实现数据的收发.在这个实验中,我们要进行zigbee的接受和发送实验. 二.实验功能 ...

  9. zigbee学习之路(十二):zigbee协议原理介绍

    一.前言 从今天开始,我们要正式开始进行zigbee相关的通信实验了,我所使用的协议栈是ZStack 是TI ZStack-CC2530-2.3.0-1.4.0版本,大家也可以从TI的官网上直接下载T ...

随机推荐

  1. [译]Java8的函数式接口

    Java8引入了 java.util.function 包,他包含了函数式接口,具体的描述在以下api说明文档中: 函数式接口为lambda表达式和方法引用提供目标类型.每个函数式接口有一个单独的抽象 ...

  2. 安装并启用rabbitmq服务器

    1.确保Erlang已经安装 2.安装rabbitmq服务器 [root@bogon yum.repos.d]# rpm --import https://dl.bintray.com/rabbitm ...

  3. a标签实现不跳转点击

    <a class="tiao" href="./index.php"></a> JS实现无跳转a标签 <script type=& ...

  4. AC日记——Magazine Ad codeforces 803d

    803D - Magazine Ad 思路: 二分答案+贪心: 代码: #include <cstdio> #include <cstring> #include <io ...

  5. IE8的 JS 引擎如此不堪(二) - 解决方案

    上一篇,IE8的JS引擎内存不停增长,是因为动态生成了一个image对象导致的.有了病因,就开始寻找治疗方法. 1.使用一个固定的img对象,但是无法获取地址改变后的图片大小,最总还是放弃: 2.寻找 ...

  6. UTC时间

    世界的每个地区都有自己的本地时间,在Internet及无线电通信时,时间的统一非常重要! 整个地球分为二十四时区,每个时区都有自己的本地时间.在国际无线电通信中,为统一而普遍使用一个标准时间,称为通用 ...

  7. HDU 6081 度度熊的王国战略【并查集/数据弱水题/正解最小割算法】

    链接6081 度度熊的王国战略 Time Limit: 40000/20000 MS (Java/Others) Memory Limit: 32768/132768 K (Java/Others) ...

  8. CF981C Useful Decomposition【树/思维】

    [链接]:CF [题意]:给定一棵树,要求拆成若干条简单路径,并且这些路径都经过一个公共节点.给出任意一个解决方案,如不存在输出No. [分析]: 因为是一棵树, 所以如果要求任意两条路线至少有一个公 ...

  9. 训练指南 UVALive - 3126(DAG最小路径覆盖)

    layout: post title: 训练指南 UVALive - 3126(DAG最小路径覆盖) author: "luowentaoaa" catalog: true mat ...

  10. Linux命令之fdisk

    fdisk fdisk [选项] <disk>  改变分区表 fdisk [选项] –l <disk>  列出所有分区表 fdisk –s <partition(分区编号 ...