Z-Stack学习笔记

Technorati 标签: Z-Stack profile

1. 栈配置profile

栈参数的集合需要被配置为一定的值,连同这些值在一起被称之为栈配置。ZigBee联盟定义了这些由栈配置组成的栈参数,ZigBee联盟已经定了许多标准的配置文件(公共模板),比如远程控制开关配置文件和光传感器配置文件,这些配置文件定义了设备的应用环境、设备类型以及用于设备间通信的簇。公共的配置文件可以确保不同供应商是设备在相同应用领域的互操作性。

每个配置文件可以定义最多256个集群(Cluster),每个集群最多可以有65536个属性。ZigBee设备有模板定义,以应用对象(Application Objects)的形式实现,每个对象通过一个端点(双向的)连接到ZigBee堆栈的余下部分,端点之间的通讯是通过一个称之为簇的数据结构(簇标示符)来实现的,簇是应用对象之间共享信息所需的全部属性的容器。

两个特殊的端点:

        应用程序使用端点0来配置和管理ZigBee协议栈,此应用程序称之为ZigBee设备对象(ZDO)。

        端点255用于向所有端点的广播。

        端点241~254为扩展保留端点,其他端点(1~240)为应用程序可使用的端点。

  • 所有端点都使用APS(应用支持子层)提供的服务,

      

ZigBee2006协议栈规定了一些参数的值。

MAC_DEPTH = 5

MAX_ROUTERS = 6

MAX_CHILDREN = 20

 

整个地址空间不能超过216,参数的合法性校验可用CSkip.xls来确保。如果使用自定义的栈配置,进行如下配置

 

 

2. Z-Stack寻址

应用程序通常使用AF_DataRequest.

组寻址,使用组寻址时,地址模式设置为afAddrGroup并且addr.shortAddr设置为组ID。

 

3.绑定

绑定是一种两个应用设备之间信息流的控制机制。绑定机制允许应用程序发送一个数据包而不需要知道目标地址,APS层从它的绑定表中确定目标地址,然后将数据包继续向目标应用或者目标组发送。

3.1 建立绑定表

  有三种方式建立一个绑定表

   1. ZigBee 设备对象绑定请求(ZigBee Device Object Bind Request):

       利用ZDO的配置文件ZDP相关的功能函数实现,EndDevice_Bind_Rsp响应。   

ZDP_BindReq()建立绑定表,参数有目的网络地址、源网络地址,源端点,簇ID,目的地址模式,目的地址端点,安全模式。

ZDP_UnbindReq(),采用和ZDP_BindReq相同的参数,用于删除一个绑定表。

目的设备端进入ZDApp_ProcessMsgCBs来响应这些请求。ZDP_Bindreq请求对于bind_rsp响应,ZDP_UnbindReq请求对于unbind_rsp响应

 

  2. ZigBee设备对象终端绑定请求(ZigBee Device Object End Device Bind Request):在指定的时间内,通过按下选定设备上的按钮或者类似动作来绑定,需要协调器的协助。涉及到的函数有ZDP_EndDeviceBindReq(发送绑定请求)和ZDO_MatchEndDeviceBind。 或者 zb_BindDevice()和zb_AllowBind,zb_AllowBindConfirm这三个个函数对   ZDApp_ProcessMsgCB来解析响应各种请求。

  3. 设备程序绑定管理(Device Application):

        设备应用程序建立或者管理一个绑定表.

 

由于所有绑定信息都在ZigBee协调器中,所有只有协调器才能接受绑定请求。

ZDO绑定API

ZDO Binding API                   ZDP Binding Service Command

ZDP_EndDeviceBindReq()        End_Device_Bind_req      构建并发送节点设备绑定请求

ZDP_EndDeviceBindRsp()        End_Device_Bind_rsp       请求协调器利用簇ID绑定应用

ZDP_BindReq()                      Bind_req

ZDP_BindRsp()                      Bind_rsp

ZDP_UnbindReq()                  Unbind_req

ZDP_UnbindRsp()                  Unbind_rsp

 

 

4.ZigBee设备对象ZDO

ZDO是一个特殊的应用程序,是应用层其他端点与应用支持子层管理实体交互的接口,主要提供一下功能:

1. 初始化应用支持子层、网络层

2. 节点管理 :设备发现(获取其他设备是否存在)和服务发现(获取其他设备提供服务的功能)。

在无信标的网络中,加入的节点只对其父节点可见,而其他节点可以通过ZDO的功能来确定网络的整体拓扑结构以及新发现节点能够提供的功能。ZDO提供网络监测、获取路由和绑定信息,发起脱离网路过程等一系列节点管理功能。

3. 安全加密管理,主要包括安全Key的建立和发送,以及安全授权

4. 网络的维护功能,涉及的函数为ZDApp_Init

5. 绑定管理:绑定的功能由应用支持子层APS提供,绑定功能的管理由ZDO提供,它确定了绑定表的大小、发起和解除等功能

 

ZDO_RegisterForZDOMsg  注册ZDO消息绑定

ZDO_CB_MSG 接收到的ZDO消息事件

例如ZDP_NwkAddrReq()响应对于NWK_addr_req的请求,ZDP_NWKAddrRsp()的响应对于NWK_addr_rsp的请求等等

ZDO管理API,这些消息用来获得设备状态和更新表格

ZDP Management API                    ZDP Network Management Service Command

ZDP_MgmtNwkDiscReq()                  Mgmt_NWK_Disc_req              扫描网络请求

ZDP_MgmtNwkDiscRsp()                  Mgmt_NWK_Disc_rsp               

ZDP_MgmtLqiReq()                         Mgmt_Lqi_req                        为目标设备产生返回邻居列表请求

ZDP_MgmtLqiRsp()                          Mgmt_Lqi_rsp

ZDP_MgmtRtgReq()                         Mgmt_Lqi_req                        为目标设备产生返回路由列表请求

ZDP_MgmtRtgRsp()                          Mgmt_Rtg_rsp

ZDP_MgmtBindReq()                         Mgmt_Bind_req                      为目标设备产生返回绑定表请求

ZDP_MgmtBindRsp()                          Mgmt_Bind_rsp

ZDP_MgmtLeaveReq()                       Mgmt_Leave_req                  请求目标设备脱离网

ZDP_MgmtLeaveRsp()                        Mgmt_Leave_rsp

ZDP_MgmtDirectJoinReq()                   Mgmt_Direct_Join_req            请求目标设备直接加入其他设备

ZDP_MgmtDirectJoinRsp()                    Mgmt_Direct_Join_rsp

ZDP_MgmtPermitJoinReq()                   Mgmt_Permit_Join_req           请求远端设备允许或者不允许关联

ZDP_MgmtPermitJoinRsp()                    Mgmt_Permit_Join_rsp

 

 

APS绑定表相关:http://bbs.ednchina.com/BLOG_ARTICLE_428609.HTM

时间: 2024-10-28 15:11:10

Z-Stack学习笔记的相关文章

Core Data Stack学习笔记

Entity Entities 实体->数据表一个实体可以表示一个数据模型 1> 通过图形化界面可以建立一个模型关系图,可以指定一对多,多对一,多对多的数据关系 -在数据库开发中,少用多对多关系 2> 通过工具能够自动生成对应的模型文件 3> 数据保存 NSManagedObject 被管理的对象-开发中设计的实体,本身都是被管理对象的子类 使用CoreData的一个注意事项:如果开发时,修改过数据模型,最好将沙盒中的数据库文件删除! 使用CoreData开发的步骤 1. 首先创建

BZOJ 2038: [2009国家集训队]小Z的袜子(hose)【莫队算法裸题&&学习笔记】

2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 9894  Solved: 4561[Submit][Status][Discuss] Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命…… 具体来说,小Z把这N只袜子从1到N编号,然后从编号L到R(L 尽管小Z并不在意两

嵌入式学习笔记101-uboot_1.1.6移植(1)

根据前篇博文(嵌入式学习笔记100-uboot1.1.6初体验)最后的结论,现在开始将其实现: a. 修改makefile的CROSS_COMPILE指定编译器 arm-linux-gcc -v –> gcc version 3.4.5 CROSS_COMPILE = /opt/EmbedSky/crosstools_3.4.5_softfloat/gcc-3.4.5-glibc-2.3.6/arm-linux/bin/arm-linux- chmod -R 777 u-boot-1.1.6/

OpenGL学习笔记:拾取与选择

转自:OpenGL学习笔记:拾取与选择 在开发OpenGL程序时,一个重要的问题就是互动,假设一个场景里面有很多元素,当用鼠标点击不同元素时,期待作出不同的反应,那么在OpenGL里面,是怎么知道我当前鼠标的位置是哪一个物体呢? OpenGL有一套机制,叫做Picking, 里面涉及到几个核心概念: 1. selection mode. 选择模式 2. name stack. 名字栈 3. hit record. 命中记录 4. viewing volume. 视角范围 在OpenGL的pick

现代C++学习笔记之一入门篇:智能指针(C++ 11)

原始指针:通过new建立的*指针 智能指针:通过智能指针关键字(unique_ptr, shared_ptr ,weak_ptr)建立的指针 在现代 C++ 编程中,标准库包含智能指针,该指针用于确保程序不存在内存和资源泄漏且是异常安全的. 在现代 C++ 中,原始指针仅用于范围有限的小代码块.循环或者性能至关重要且不会混淆所有权的 Helper 函数中. 1 void UseRawPointer() 2 { 3 // Using a raw pointer -- not recommended

义隆单片机学习笔记之(三) 应用例程

常用寄存器: 0x01 (R1) 计时器 0x02 (R2)程序计数器 PC 0x03 (R3)状态寄存器 0x04 (R4)间址寄存器 0x05 (R5)IO PORT 5 0x06 (R6)IO PORT 6 ----- (IOC5)P5的输入输出配置 ----- (IOC6)P6的输入输出配置 0x0f (ISR,读)中断信号指示寄存器(第三位有效,分别对应于3个中断源) 0x0f (IOCF,写)中断屏蔽标志 0x0E (IOCE)(IO60作为中断输入的配置与看门狗的开关在一个寄存器中

ufldl学习笔记与编程作业:Multi-Layer Neural Network(多层神经网络+识别手写体编程)

ufldl学习笔记与编程作业:Multi-Layer Neural Network(多层神经网络+识别手写体编程) ufldl出了新教程,感觉比之前的好,从基础讲起,系统清晰,又有编程实践. 在deep learning高质量群里面听一些前辈说,不必深究其他机器学习的算法,可以直接来学dl. 于是最近就开始搞这个了,教程加上matlab编程,就是完美啊. 新教程的地址是:http://ufldl.stanford.edu/tutorial/ 本节学习地址:http://ufldl.stanfor

Python 学习笔记 6

6.1 字典 字典就是一个关联数组(或者称为哈希表).它是通过关键字索引的对象的集合.使用大括号{}来创建一个字典. print "字典" dic={ "username":"beazley", "home":"/home/beazley", "uid":500 } print dic uu=dic["username"] dd=dic["home"

孙鑫视频VC++深入详解学习笔记

Lesson1: Windows程序运行原理及程序编写流程 Lesson2: 掌握C++基本语法 Lesson3: MFC框架程序剖析 Lesson4: 简单绘图 Lesson5: 文本编程 Lesson6: 菜单编程 Lesson7: 对话框编程 Lesson9: 定制应用程序的外观 Lesson10: 绘图控制 Lesson11 图形的保存和重绘 Lesson12 文件操作 Lesson 13: 文档串行化 Lesson14 网络编程 Lesson 15 多线程 Lesson 16 线程同步

ARM基础知识学习笔记

/*****************数电知识*******************/ PN结(Positive-Negative) 三极管:BJT(双极结型三极管Bipolar Junction Transistor)               FET(场效应管Field Effect Transistor)          (单极结型) 1.MOSFET (金属氧化物半导体Metal Oxide Semiconductor FET)               2.JFET(结型Junct