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. MYSQL数据库的数据完整性

    #转载请联系 数据库中存储的数据应该符合我们的预期, 这就是数据完整性. 那么如何实现数据完整性? 我们通过以下两方面来实现数据的完整性: 数据类型: 存储在数据库中的所有数据值均正确的状态.如果数据 ...

  2. Vue cmd命令操作

    1.安装node(安装到电脑中,不同项目不需重复安装) 安装nodejs(如果不是在C:则需要配环境变量)2.打开cmd C:创建一个文件夹(名字不要用node) 1.进入该文件夹 2.node -v ...

  3. win上配置nginx

    win上配置nginx 网上配置nginx的教程大多都是linux上的,今天贴出来nginx在win上的配置,在此篇配置中,nginx代理了Tomcat以及node服务.配置如下: 注意:根据实际经验 ...

  4. [xunsearch] 在thinkphp中使用xunsearch

    file: XunSearchController.class.php <?php namespace Home\Controller; include '/opt/xunsearch/sdk/ ...

  5. opencv对鼠标的响应

    #include <cv.h> #include <highgui.h> #include <stdio.h>   #pragma comment(lib,&quo ...

  6. Codeforces Round #394 (Div. 2) E. Dasha and Puzzle(分形)

    E. Dasha and Puzzle time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  7. ubuntu 16.04.1 LTS python 3.5.2安装

    python 3.5.2安装-----------------------apt-get -y install build-essential checkinstallapt-get install ...

  8. Android技巧:查看当前界面对应的活动

    常常接手别人的android代码,非常头疼不知道界面所对应的活动是哪一个.下面所说的方法可以完美解决. 新建一个BaseActivity类,继承自AppCompatActivity,并重写onCrea ...

  9. 触摸事件onTouchListener

    1.效果图: (1)MainAcivity.java package com.example.app3; import android.content.DialogInterface; import ...

  10. Intellij IDEA自动生成serialVersionUID

    [Setting]->[Inspections]->[Serialization issues]->[Serializable class without ’serialVersio ...