收藏 分享(赏)

Zigbee协议栈中文说明.doc

上传人:HR专家 文档编号:11315281 上传时间:2020-03-16 格式:DOC 页数:25 大小:2.83MB
下载 相关 举报
Zigbee协议栈中文说明.doc_第1页
第1页 / 共25页
Zigbee协议栈中文说明.doc_第2页
第2页 / 共25页
Zigbee协议栈中文说明.doc_第3页
第3页 / 共25页
Zigbee协议栈中文说明.doc_第4页
第4页 / 共25页
Zigbee协议栈中文说明.doc_第5页
第5页 / 共25页
点击查看更多>>
资源描述

1、Zigbee 协议栈中文说明1.概述1.1 解析 ZigBee 堆栈架构ZigBee 堆栈是在 IEEE 802.15.4 标准基础上建立的,定义了协议的 MAC 和 PHY 层。ZigBee 设备应该包括 IEEE802.15.4(该标准定义了 RF 射频以及与相邻设备之间的通信)的 PHY 和 MAC 层,以及 ZigBee 堆栈层:网络层(NWK)、应用层和安全服务提供层。图 1-1 给出了这些组件的概况。1.1.1ZigBee 堆栈层每个 ZigBee 设备都与一个特定模板有关,可能是公共模板或私有模板。这些模板定义了设备的应用环境、设备类型以及用于设备间通信的簇。公共模板可以确保不同

2、供应商的设备在相同应用领域中的互操作性。设备是由模板定义的,并以应用对象(Application Objects)的形式实现(见图 1-1)。每个应用对象通过一个端点连接到 ZigBee 堆栈的余下部分,它们都是器件中可寻址的组件。图 1-1 zigbe 堆栈框架从应用角度看,通信的本质就是端点到端点的连接(例如,一个带开关组件的设备与带一个或多个灯组件的远端设备进行通信,目的是将这些灯点亮)。端点之间的通信是通过称之为簇的数据结构实现的。这些簇是应用对象之间共享信息所需的全部属性的容器,在特殊应用中使用的簇在模板中有定义。图 1-1-2 就是设备及其接口的一个例子:图 1-1-2每个接口都能

3、接收(用于输入)或发送(用于输出)簇格式的数据。一共有二个特殊的端点,即端点 0 和端点 255。端点 0 用于整个 ZigBee 设备的配置和管理。应用程序可以通过端点 0 与ZigBee 堆栈的其它层通信,从而实现对这些层的初始化和配置。附属在端点 0 的对象被称为ZigBee 设备对象 (ZD0)。端点 255 用于向所有端点的广播。端点 241 到 254 是保留端点。所有端点都使用应用支持子层(APS)提供的服务。APS 通过网络层和安全服务提供层与端点相接,并为数据传送、安全和绑定提供服务,因此能够适配不同但兼容的设备,比如带灯的开关。APS 使用网络层(NWK)提供的服务。NWK

4、 负责设备到设备的通信,并负责网络中设备初始化所包含的活动、消息路由和网络发现。应用层可以通过 ZigBee 设备对象(ZD0)对网络层参数进行配置和访问。1.1.2 802.15.4 MAC 层IEEE 802.15.4 标准为低速率无线个人域网(LR-WPAN)定义了 OSI 模型开始的两层。PHY 层定义了无线射频应该具备的特征,它支持二种不同的射频信号,分别位于 2450MHz 波段和868/915MHz 波段。2450MHz 波段射频可以提供 250kbps 的数据速率和 16 个不同的信道。868 /915MHz 波段中,868MHz 支持 1 个数据速率为 20kbps 的信道,

5、915MHz 支持 10 个数据速率为40kbps 的信道。MAC 层负责相邻设备间的单跳数据通信。它负责建立与网络的同步,支持关联和去关联以及MAC 层安全:它能提供二个设备之间的可靠链接。1.1.3 关于服务接入点ZigBee 堆栈的不同层与 802.15.4 MAC 通过服务接入点(SAP)进行通信。SAP 是某一特定层提供的服务与上层之间的接口。ZigBee 堆栈的大多数层有两个接口:数据实体接口和管理实体接口。数据实体接口的目标是向上层提供所需的常规数据服务。管理实体接口的目标是向上层提供访问内部层参数、配置和管理数据的机制。1.1.4 ZigBee 的安全性安全机制由安全服务提供层

6、提供。然而值得注意的是,系统的整体安全性是在模板级定义的,这意味着模板应该定义某一特定网络中应该实现何种类型的安全。每一层(MAC、网络或应用层)都能被保护,为了降低存储要求,它们可以分享安全钥匙。SSP是通过 ZD0 进行初始化和配置的,要求实现高级加密标准(AES)。ZigBee 规范定义了信任中心的用途。信任中心是在网络中分配安全钥匙的一种令人信任的设备。1.1.5 ZigBee 堆栈容量和 ZigBee 设备根据 ZigBee 堆栈规定的所有功能和支持,我们很容易推测 ZigBee 堆栈实现需要用到设备中的大量存储器资源。 不过 ZigBee 规范定义了三种类型的设备,每种都有自己的功

7、能要求:ZigBee 协调器是启动和配置网络的一种设备。协调器可以保持间接寻址用的绑定表格,支持关联,同时还能设计信任中心和执行其它活动。一个 ZigBee 网络只允许有一个 ZigBee 协调器。ZigBee 路由器是一种支持关联的设备,能够将消息转发到其它设备。ZigBee 网格或树型网络可以有多个 ZigBee 路由器。ZigBee 星型网络不支持 ZigBee 路由器。ZigBee 端终设备可以执行它的相关功能,并使用 ZigBee 网络到达其它需要与其通信的设备。它的存储器容量要求最少。然而需要特别注意的是,网络的特定架构会戏剧性地影响设备所需的资源。NWK 支持的网络拓扑有星型、树

8、型和网格型。在这几种网络拓扑中,星型网络对资源的要求最低。ZigBee 堆栈应该可以提供 ZigBee 规范要求的所有功能,因此制造商的重点工作是开发实际的应用。为了更加容易实现,如果制造商使用某种公共模板,那么可用大多数现成的配置。如果没有合适的公共模板,则可以充分利用其它模板已经做过的工作创建自己的模板。ZigBee 协议栈体系包含一系列的层元件,其中有 IEEE802.15.4 2003 标准中的 MAC 层和 PHY层,当然也包括 ZigBee 组织设计的 NWK 层。每个层的元件有其特定的服务功能。本说明描述内容涉及 ZigBee 协议栈的各层元件,但侧重于描述最具实际和理论探讨性的

9、 APL 应用层和NWK 网络层。图 1-1 为 ZigBee 栈结构框图。2.APL 应用层介绍2.1.1 应用层简介如图 2-1 所示,ZigBee 应用层由三个部分组成,APS 子层、ZDO(包含 ZDO 管理平台)和制造商定义的应用对象。图 2-1 zigbee 协议堆栈分层结构2.1.2 应用层框架ZigBee 中的应用框架是为驻扎在 ZigBee 设备中的应用对象提供活动的环境。最多可以定义 240 个相对独立的应用程序对象,且任何一个对象的端点编号都是从 1 到 240。此外还有两个附加的终端节点,为了 APSDE-SAP 的使用:端点号 0 固定用于 ZDO 数据接口;另外一个

10、端点 255 固定用于所有应用对象广播数据的数据接口功能。端点 241-254 保留(留给未来扩展使用) 。2.1.2.1 应用 Profiles应用 profiles 是一组统一的消息,消息格式和处理方法,允许开发者建立一个可以共同使用的分布式应用程序,这些应用是利用驻扎在独立设备中的应用实体来实现的。这些应用 profiles 允许应用程序发送命令、请求数据和处理命令的请求。2.1.2.2 簇簇标识符可用来区分不同的簇,簇标识符联系着从设备流出和向设备流入的数据。在特殊的应用profiles 范围内,簇标识符是唯一的。2.1.3 ZigBee 设备对象ZigBee 设备对象(ZDO) ,描

11、述了一个基本的功能函数,这个功能在应用对象、设备 profile 和APS 之间提供了一个接口。ZDO 位于应用框架和应用支持子层之间。它满足所有在 ZigBee 协议栈中应用操作的一般需要。此外 ZDO 还有以下作用:(1)初始化应用支持子层(APS) ,网络层(NWK) ,安全服务规范(SSS) 。(2)从终端应用集合中配置的信息来确定和执行安全管理、发现、网络管理、以及绑定管理。 ZDO 描述了应用框架层中应用对象的公用接口以及控制设备和应用对象的网络功能。在终端节点 0, ZDO 提供了与协议栈中与低一层连接的接口,如果是数据则通过 APSDE-SAP,如果是控制信息则通过 APSME

12、-SAP。的具体描述在 2.5 节。2.1.3.1 设备发现设备发现是 ZigBee 设备为什么能发现其他设备的过程。这有两种形式的设备发现请求:IEEE 地址请求和网络地址请求。IEEE 地址请求是单播到一个特殊的设备且假定网络地址已经知道。网络地址请求是广播且携带一个已知的 IEEE 地址作为负载。2.1.3.2 服务发现服务发现是为什么一个已知设备被其他设备发现的能力的过程。服务发现通过在一个已知设备的每一个端点发送询问或通过使用一个匹配服务(广播或者单播) 。服务发现方便定义和使用各种描述来概述一个设备的能力。服务发现信息在网络中也许被隐藏,在这种情况下,设备提供的特殊服务便可能不在操

13、作发生的时候到达。2.2 ZigBee 应用支持子层 APSAPS 提供了这样的接口:在 NWK 层和 APL 层之间,从 ZDO 到供应商的应用对象的通用服务集。这服务由两个实体实现:APS 数据实体(APSDE)和 APS 管理实体(APSME) 。(1)APSDE 提供在同一个网络中的两个或者更多的应用实体之间的数据通信。通过 APSDE 服务接入点(APSDE-SAP);(2)APSME 提供多种服务给应用对象,这些服务包含安全服务和绑定设备,并维护管理对象的数据库,也就是我们常说的 AIB。通过 APSME 服务接入点(APSME-SAP) 。2.2.1 范围这一小节描述了应用层部分

14、提供的服务规范和生产商定义的应用对象与 ZigBee 设备对象之间的接口。规范定义了允许应用对象传输数据的数据服务和提供绑定机制的管理服务。另外,它还定义了应用支持子层的帧格式和帧类型。如图 2-2图 2-2 zigbee 帧格式2.2.2 目的这小节的目的是定义 ZigBee 应用支持子层的功能。该功能建立在两个基础之上,一是正确运行ZigBee 网络层的驱动功能,二是制造商定义的应用对象所需要的功能。2.2.3 应用支持子层简介应用支持子层给网络层和应用层通过 ZigBee 设备对象和制造商定义的应用对象使用的一组服务提供了接口,该接口提供了 ZigBee 设备对象和制造商定义的应用对象使

15、用的一组服务。通过两个实体提供这些服务:数据服务和管理服务。APS 数据实体(APSDE)通过与之连接的 SAP,即 APSDE-SAP提供数据传输服务。APS 管理实体(APSME)通过与之连接的 SAP,即 APSME-SAP 提供管理服务,并且维护一个管理实体数据库,即 APS 信息库(NIB) 。2.2.3.1 应用支持子层的数据实体(APSDE)APSDE 向网络层提供数据服务,并且为 ZDO 和应用对象提供服务,完成两个或多个设备之间传输应用层 PDU。这些设备本身必须在同一个网络。APSDU 将提供如下服务:生成应用层的协议数据单元(APDU):APSDE 将应用层协议数据单元(

16、PDU)加上适当的协议帧头生成应用子层的协议数据单元(PDU) 。绑定:两个设备服务和需求相匹配的能力。一旦两个设备绑定了,APSDE 将可以把从一个绑定设备接受到的信息传送给另一个设备。组地址过滤:提供了基于终点组成员的过滤组地址信息的能力。可靠传输:比从网络层仅仅通过端对端的传输增加了可靠性拒绝重复:提供传送的信息不会被重复接收支持大批量的传输:提供两个设备间顺序传输大批量的数据的能力。碎片:当消息的长度大于单个网络层帧时,可以分割并重组消息。流控制:APS 提供避免传输消息淹没接收者的措施。阻塞控制:APS 层使用“尽力”原则,提供措施避免传输消息淹没中间网络。2.2.3.2 应用支持子

17、层的管理实体(APSME)APSME 应提供管理服务支持应用程序符合堆栈。APSME 应具有基于两个设备的服务和需求向匹配的能力。该服务称为绑定服务,APSME 应具有能力来构建和维护绑定表来存储这些信息。另外,APSME 应提供如下服务:1 应用层信息库管理:读取与设置设备应用层信息库属性的能力2 安全:与其他设备通过使用安全密钥建立可信关系的能力2.2.4 服务规范应用支持子层为上层实体(NHLE)与网络层提供了一个接口。APS 层理论上包含一个管理实体称为APS 层,管理实体(APSME) 。这个实体通过调用子层的管理函数来提供服务接口。APSME 还负责维护一个关于 APS 子层管理实

18、体的数据库。这是一个关于 APS 子层信息库(AIB)的数据库.图 2-3描述了 APS 子层的构成和接口。图 2-3 应用支持之层参考模型APS 子层通过两个服务指针(SAPs)提供两种服务。APS 数据服务通过 APS 子层数据实体服务指针SAP(APSDE-SAP) ,APS 管理服务通过 APS 则层管理实体服务指针 SAP(APSME-SAP).这两个服务通过 NLDE-SAP 和 NLME-SAP 接口 (见 3.2 小节)提供了 NHLE 和网络层之间的接口。网络层和 APS 子层之间的 NLME-SAP 接口只支持 NLME-GET 和 NLME-SET 原语,其他的 NLME

19、-SAP 原语只可以通过ZDO 实现(见 2.5 小节) 。除了这些外部接口以外,在 APSME 和 APSDE 之间还有一个内部的接口,支持 APSME 使用 APS 数据服务。2.2.4.1 APS 数据服务APS 子层数据实体 SAP(APSDE-SAP)支持在两个同等的应用实体之间传输应用协议数据单元。表2-1 列出了 APSDE-SAP 支持的原语。每一个原语将在下面的小节论述。2.2.4.1.1 APSDE-DATA.request该原语请求从本地 NHLE 向一个同等的 NHLE 实体传输 NHLE PDU(ASDU)。2.2.4.1.1.1 服务原语的语法该原语的语法如下:AP

20、SDE-DATA_requestDstAddrModeDSTAddressDstEndpointProfiledClusterldSrcEndpointasduLengthasduTxOpiontsRadiusCounter表 2.2 详细说明了 APSDE-DATA.request 原语的参数。2.2.4.1.1.2 产生当有一个数据 PDU(ASDU)由本地 NHLE 向一个同等的 NHLE 传输时,由本地 NHLE 生成该原语。2.2.4.1.1.3 2当 APS 子层实体接收到该原语时,便开始传输提供的 ASDU。如果 DstAddrMode 参数为 0x00,并且接收该原语的设备的

21、APSDE 支持绑定表,那么在绑定表中根据参数 SrcEndpoint 和 ClusterId 所指定的 endpoint 和 cluster identifiers 寻找相关联的绑定表入口。如果没有绑定表入口,APSDE 将发送状态参数为 NO_BOUND_DEVICE 的语 APSDE-DATA.confirm 原语。如果找到了一个或多个绑定表入口,APSDE 将构建 APDU,其 endpoint 信息从绑定表入口获得,当通过网络层传输信息帧时,其 destination address 信息从绑定表入口获得。如果存在多于一个绑定表入口,当接收到相应的 NLDE-DATA.confirm

22、 原语,按上面描述的,APSDE将构建并向下一个绑定表入口传输 APDU,直到没有绑定表入口剩余。如果接收到该原语设备的APSDE 不支持绑定表,那么 APSDE 将发送状态参数为 NOT_SUPPORTED 的 APSDE-DATA.confirm 原语。如果 DstAddrMode 参数为 0x02,DstAddress 参数包含扩展的 64 位 IEEE 地址,首次必须使用NIB(见表 2.24)属性中的 nwkAddressMap 映射相应的 16 位网络地址。如果找不到相应的 16 位网络地址,那么 APSDE 将发送状态参数为 NO_SHORT_ADDRESS 的 APSDE-DA

23、TA.confirm 原语。如果找到了相应的 16 位网络地址,其值将被用在 NLDE-DATA.request 原语中,参数 DstEndpoint 将被置在作为结果的 APDU 中。如果 DstAddrMode 参数为 0x01,表明为群地址,参数 DstAddress 将被解释为 16 位的全地址。这个地址将被放置在 APS 头中的群地址域,参数 DstEndpoint 将被忽略,APS 头中的 destination endpoint 域将被省略。APS 头中的帧控制域的 delivery mode 子域值在这种情况下为 0x03.如果 DstAddrMode 参数为 0x02,Dst

24、Address 参数包含 16 位的网络地址,并且提供参数DstEndpoint,当目的网络地址用于应用响应,并且网络地址部位后面的数据传输请求保留时,上层只能使用 DstAddrMode 为 0x02.应用程序可以通过使用参数 RadiusCounter 来限制在网络中传输数据帧的跳数。如果参数RadiusCounter 为 0x00,网络层在网络中传输信息帧没有约束。如果参数 RadiusCounter 为非零,则网络层将允许信息帧在网络中传输存在最多 RadiusCounter 跳。如果 DstAddrMode 参数为 0x01,表明为群地址,或者 DstAddrMode 参数为 0x0

25、0,并且相应的绑定表入口包含哪一个群地址,那么 APSME 将检查 NIB(见表 3.42)中的属性 nwkUseMulticast 值。如果属性值为 FALSE,那么输出帧的帧控制域中的 delivery mode 子域设为 0b11,16 位的目的群地址将设置输出帧 APS 头中的 group address 域,该帧将以广播方式传输。传输该帧的原语 NLDE-DATA.request 的 DstAddr 参数设置为值 0xfffd,广播给所有 RxOnWhenIdle=TRUE 的设备。如果属性 nwkUseMulticast 值为 TRUE,那么该帧将使用网络层多点传送方式传输,群地址

26、不用放置在输出帧的 APS 头中。如果参数 TxOptions 指定使用安全传输,则 APS 子层将使用安全服务为 ASDU 提供安全(见 4.2.4小节) 。如果安全处理失败,则 APSDE 发送状态参数为 SECURITY_FAIL 的 APSDE-DATA.confirm 原语。APSDE 使用 NLDE-DATA.request 原语向网络层传输构造帧。当接收到 NLDE-DATA.confirm 原语,APSDE 则发送 APSDE-DATA.confirm 原语,其状态参数值域从网络层接收到的一致。APSDE 通过每次发送使 NLDE-DATA.request 原语的 Discov

27、erRoute 参数值为 0x01 确保网络层中的路由发现始终激活。如果传输的 ASDU 大于合适的单个帧,当没有请求确认传输或者在 TxOptions 域的 fragmentation permitted 标志位设为 0 时,则放弃传输 ASDU,APSDE 将发送状态参数为 INVALID_REQUEST 的APSDE- DATA.confirm 原语。如果传输的 ASDU 大于合适的单个帧,当请求确认传输并且在 TxOptions 域的 fragmentation permitted 标志位设为 1 时,ASDU 将按照 2.2.8.3.5 小节所述分裂为多个 APDU。如果请求传输和安

28、全处理,那么每一个 APDU 都要进行处理。注意不要使用分裂处理,除非相应的上层文件或者相互明确表明帧的传输允许分裂处理,并且说明了块的数量和总共传输的大小。2.2.4.1.2 APSDE-DATA.confirm该原语报告从本地 NHLE 向一个同等的 NHLE 传输 PDU 数据的结果。2.2.4.1.2.1 服务原语的语法该原语的语法如下:APSDE-DATA.confirm DstAddModeDstAddressDstEndpointSrcEndpointStatus表 2.3 详细介绍了 APSDE-DATA.confirm 原语的参数。2.2.4.1.2.2 产生该原语有本地 A

29、PS 子层产生作为对 APSDE-DATA.request 原语的响应。该原语返回的状态参数值为SUCCESS,表明请求传输成功,或者为错误代码 NO_SHORT_ADDRESS , NO_BOUND_DEVICE 或SECURITY_FAIL 或者为任何 NLDE-DATA.confirm 原语返回的状态值。这些状态值的路由在 2.2.4.1.2小节中进行了详细的描述。2.2.4.1.2.3 接收接收到该原语,发起设备的上层被通报请求传输的结果。如果传输成功,状态参数值设置为SUCCESS。否则,状态参数表明错误。2.2.4.1.3 APSDE-DATA.indication该原语表明一个

30、PDU 数据向本地应用实体的 APS 子层传输。2.2.4.1.3.1 服务原语的语法该原语的语法如下:APSDE-DATA.indicationDstAddrModeDSTAddressDstEndpointSrcAddrModeSARCAddressSrcEndpointProfieldClusterldasduLengthasduWasBroadcastSecurityStatusLinkQuality表 2.4 详细描述了 APSDE-DATA.indication 原语的参数。1.3.2 产生该原语由 APS 子层产生,当从本地网络层实体接收到适当地址的数据帧时,APS 子层向上层发

31、送该原语。如果 ASDU 头的帧控制域表明该帧安全保护,则按照 4.2.4 小节的描述进行安全处理。该原语由 APS 子层产生,当通过 NLDE-DATA.indication 原语从网络层接收到适当地址的数据帧时,发送给上层实体。如果 APDU 头的帧控制域表明该帧安全保护,则按照 4.2.4 小节的描述进行安全处理。接收到的帧的源地址必须通过 NIB(见表 2.24)中的属性 nwkAddressMap 映射为相应的扩展的 64位 IEEE 地址。如果能找到相应的 64 为 IEEE 地址,则 APSDE 发送该原语,其参数 SrcAddrMode 设为 0x02,SrcAddress 参

32、数设为相应的 64 位 IEEE 地址。如果找不到相应的 64 位 IEEE 地址,APSDE 将发送该原语,其参数 SrcAddrMode 设为 0x01,参数 SrcAddress 设为接收帧包含的 16 位源地址。2.2.4.1.3.3 接收接收到该原语,上层被通报有数据到达该设备。2.2.4.2 APS 管理服务APS 管理实体 SAP(APSME-SAP)支持上层和 APSME 层之间传输管理命令。表 2.5 总结了 APSME 通过APSME-SAP 接口支持的原语。各原语的详细描述见下面小节。2.2.4.3 绑定原语这组原语定义了设备上层如何将一个绑定记录加入(提交)其本地绑定表

33、或将绑定记录从本地绑定表中移除。只有支持绑定表或者绑定表存储器的设备支持这些原语。如果其他设备从上层接收到这些原语,那么这些原语将被忽略。2.2.4.3.1 APSME-BIND.request该原语允许支持绑定的设备上层通过在本地绑定表中建立一个入口请求将两个设备绑定。2.2.4.6.1.1 服务原语的语法该原语的语法如下:APSME-BIND.request SrcAddrSrcEndpointClusterldDstAddrModeDstAddrDstEndpoint表 2.6 详细描述了 APSME-BIND.request 原语的参数。2.2.4.3.1.2 产生该原语由上层产生发送

34、给 APS 子层,在支持绑定表的设备上发起绑定操作。2.2.4.3.1.3 接收一旦被当前没有加入到网络或不支持绑定表的设备接收到该原语,那么 APSME 将发送状态参数为ILLEGAL_REQUEST 的 APSME-BIND.confirm 原语。如果支持绑定表的设备的 APS 子层从 NHLE 接收该原语,APSME 将试图直接从其绑定表中建立指定的入口。如果可以建立入口,APSME 将发送状态参数为 SUCCESS 的 APSME-BIND.confirm 原语。如果因为其绑定表缺乏能力而无法建立入口,APSME 将发送状态参数为 TABLE_FULL 的 APSME-BIND.con

35、firm 原语。2.2.4.3.2 APSME-BIND.confirm该原语使设备得到其上层请求绑定两个设备的结果。2.2.4.3.2.1 服务原语的语法该原语的语法如下:APSME-BIND.confirm StatusSrcAddrSrcEndpointClusterldDstAddrModeDstAddrDstEndpoint表 2.7 详细描述了 APSME-BIND.confirm 原语的语法。2.2.4.3.2.2 产生该原语由 APSME 产生作为 APSME-BIND.request 原语的响应发送给 NHLE。如果请求成功,那么状态参数将表明一个成功的绑定请求。否则,状态参

36、数则为错误码 ILLEGAL_DEVICE、 ILLEGAL_REQUEST 或 TABLE_FULL。2.2.4.3.2.3 接收接收到该原语,上层就被通知其绑定请求的结果。如果绑定请求成功,状态参数设置为 SUCCESS。否则,状态参数表明错误。2.2.4.3.3 APSME-UNBIND.request该原语允许支持绑定的设备上层通过在本地绑定表中移除一个入口请求将两个设备解除绑定。2.2.4.3.3.1 服务原语的语法:APSME-UNBIND.request SrcAddrSrcEndpointClusterldDstAddrModeDstAddrDstEndpoint表 2.8 详

37、细描述了 APSME-UNBIND.request 原语的参数。2.2.4.3.3.2 产生该原语有上层产生发送给 APS 子层,在支持绑定表的设备上发起解除绑定操作。2.2.4.3.3.3 接收一旦被当前没有加入到网络或不支持绑定表的设备接收到该原语,那么 APSME 将发送状态参数为ILLEGAL_REQUEST 的 APSME-UNBIND.confirm 原语。如果支持绑定表的设备的 APS 子层从 NHLE 接收该原语,APSME 将在绑定表中查找指定的入口。如果入口存在,APSME 将移除这个入口并发送状态参数为 SUCCESS 的 APSME-UNBIND.confirm 原语(

38、见 2.2.4.3.4 小节) 。如果没有找到入口,APSME 将发送状态参数为 INVALID_BINDING 的 APSME-UNBIND.confirm 原语。如果该设备不在网络中,APSME 将发送状态参数为 ILLEGAL_DEVICE 的APSME-BIND.confirm 原语。2.2.4.3.4 APSME-UNBIND.confirm该原语使设备得到其上层请求解除两个设备绑定的结果。2.2.4.3.4.1 服务原语的语法该原语的语法如下:APSME-UNBIND.confirm StatusSrcAddrSrcEndpointClusterldDstAddrModeDstAd

39、drDstEndpoint表 2.9 详细描述了 APSME-UNBIND.confirm 原语的语法。2.2.4.3.4.2 产生该原语由 APSME 产生作为 APSME-UNBIND.request 原语的响应发送给 NHLE。如果请求成功,那么状态参数将表明一个成功的解除绑定请求。否则,状态参数则为错误码 ILLEGAL_DEVICE、 ILLEGAL_REQUEST 或 INVALID_BINDING。2.2.4.3.4.3 接收接收到该原语,上层就被通知其解除绑定请求的结果。如果解除绑定请求成功,状态参数设置为SUCCESS。否则,状态参数表明错误。2.2.4.4 信息库的维护这组

40、原语定义了设备上层如何读取和写入 AIB 中的属性。2.2.4.4.1 APSME-GET.request该原语允许设备上层从 AIB 中读取属性值。2.2.4.4.1.1 服务原语的语法该原语的语法如下:APSME-GET.request AIBAttribute表 2.10 描述了该原语的参数。2.2.4.4.1.2 产生该原语由上层产生并发送给 APSME 来读取 AIB 中的属性。2.2.4.4.1.3 接收接收到该原语,APSME 试图从数据库中得到 AIB 属性。如果在数据库中没有相应的 AIB 属性表标识符,APSME 将发送状态参数为 UNSUPPORTED_ATTRIBUTE

41、 的 APSME-GET.confirm 原语。如果成功得到了 AIB 属性,APSME 将发送状态参数为 SUCCESS,包含 AIB 属性标识符和属性值的APSME-GET.confirm 原语。2.2.4.4.2 APSME-GET.confirm该原语向上层报告从 AIB 中读取属性值的结果。2.2.4.4.2.1 服务原语的语法该原语的语法如下:APSME-GET.confirm StatusAIBAttributeAIBAttributeLengthAIBAttributeValue表 2.11 描述了该原语的参数。2.2.4.4.2.2 产生该原语由 APSME 产生,发送给上层

42、作为对 APSME-GET.request 原语的响应。该原语返回状态SUCCESS,表明请求读取 AIB 属性请求成功,或者返回错误码 UNSUPPORTED_ATTRIBUTE.这些状态在2.2.4.4.1.3 小节进行了描述。2.2.4.4.2.3 接收接收到该原语,上层得知读取 AIB 属性请求的结果。如果读取 AIB 属性请求成功,状态参数设置为 SUCCESS。否则,状态参数表明错误。2.2.4.4.3 ASPME-SET.request该原语允许设备上层将属性值写入 AIB。2.2.4.4.3.1 服务原语的语法该原语的语法如下:APSME-SET.request AIBAttr

43、ibuteAIBAttributeLengthAIBAttributeValue表 2.12 描述了该原语的参数。2.2.4.4.3.2 产生该原语由上层产生并发送给 APSME 在 AIB 中写入一个属性值。2.2.4.4.3.3 接收接收到该原语,APSME 试图将给定的数据库中的值写入 AIB 属性。如果在数据库中没有 AIB 属性参数指定的属性,APSME 将发送状态参数为 UNSUPPORTED_ATTRIBUTE 的 APSME-SET.confirm 原语。如果 AIB 属性值参数给定的值超过了有效的属性范围,APSME 将发送状态参数为INVALID_PARAMETER 的 A

44、PSME-SET.confirm 原语。如果成功写入了 AIB 属性,APSME 将发送状态参数为 SUCCESS 的 APSME-SET.confirm 原语。2.2.4.4.4 APSME-SET.confirm该原语向上层报告向 AIB 属性中写入属性值的结果。2.2.4.4.4.1 服务原语的语法该原语的语法如下:APSME-SET.confirm StatusAIBAttribute表 2.13 描述了该原语的参数。2.2.4.4.4.2 产生该原语由 APSME 产生,发送给上层作为对 APSME-SET.request 原语的响应。该原语返回状态SUCCESS,表明将属性值写入

45、AIB 属性的请求成功,或者返回错误码 INVALID_PARAMETER 或UNSUPPORTED_ATTRIBUTE.这些状态在 2.2.4.4.3.3 小节进行了描述。2.2.4.4.4.3 接收接收到该原语,上层得知写入 AIB 属性请求的结果。如果写入 AIB 属性请求成功,状态参数设置为 SUCCESS。否则,状态参数表明错误。2.2.4.5 组管理这组原语允许上层在当前设备中通过在组表中添加和移除入口来管理每个端点的组关系。2.2.4.5.1 APSME-ADD-GROUP.request该原语允许上层请求一个特定的组的组关系加入到特定的端点。2.2.4.5.1.1 服务原语的语

46、法该原语的语法如下:APSME-ADD-GROUP.request GroupAddressEndpoint表 2.14 描述了该原语的参数。2.2.4.5.1.2 产生当上层要将一个特定组的关系加入一个端点时产生该原语,设置了组地址的帧将被传送给该端点。2.2.4.5.1.3 接收如果接收到该原语,其 GroupAddress 参数的值超出了有效范围,APSME 将向上层发送状态参数为INVALID_PARAMETER 的 APSME-ADD-GROUP.condirm 原语。同样,如果 Endpoint 参数值为 0x00 或当前设备的其它没有执行的端点,APSME 将发送状态参数为 IN

47、VALID_PARAMETER 的 APSME-ADD-GRROUP.confirm 原语。完成上述参数检测后,APSME 将检查组表中是否存在包含给定参数 GroupAddress 和 Endpoint 的入口。如果该入口已存在于组表中,APSME 将向上层发送状态参数为 SUCCESS 的 APSME-ADD-GROUP.confirm 原语。如果没有该入口,表中还有入口空间,APSME 将在组表中建立一个新的入口,其参数为给定的 GroupAddress 和 Endpoint 值。入口加入到 APS 组表后,APSME 将发送 NLME-SET.request 原语来确保相应的网络层组表

48、中的 nwkGroupIDTable 属性与 APS 子层中的组表包含的组地址列表相一致。一旦两个表一致了,APSME 将向上层发送状态参数为 SUCCESS 的 APSME-ADD-GROUP.confirm 原语。如果没有给定参数 GroupAddress 和 Endpoint 的入口并且组表中没有建立另一个入口的空间,APSME 将向上层发送状态参数为 TABLE_FULL 的 APSME-ADD-GROUP.confirm 原语。2.2.4.5.2 APSME-ADD-GROUP.confirm该原语使得设备得知其将一个组添加到端点的请求结果。2.2.4.5.2.1 服务原语的语法该原

49、语的语法如下:APSME-ADD-GROUP.confirm StatusGroupAddressEndpoint表 2.15 描述了该原语的参数。2.2.4.5.2.2 产生该原语由 APSME 产生并发送给上层作为对 APSME-ADD-GROUP.request 原语的响应。如果 APSME-ADD- GROUP.request 成功,那么状态参数值为 SUCCESS。如果 APSME-ADD-GROUP.request 中的参数为无效值,那么状态产生设置为 INVALID_PARAMETER。如果 APSME 试图加入一个组表入口,但表中已没有加入其它入口的空间,状态参数设置为 TABLE_FULL。2.2.4.5.2.3 接收上层接收到该原语,则得知添加组请求的结果。状态参数值如上面所述。2.2.4.5.3 APSME-REMOVE-GROUP.request该原语允许上层请求将一个特定的组的组关系从特定的端点中移除。2.2.4.5.3.1 服务原语的语法该原语的语法如下:APSME-REMOVE-GROUP.request GroupAddressEndpoint表 2.16 描述了该原语的参数。2.2.4.5.3.2 产生当上层要将一个特定组的关系从一个端点中移除时产生该原语,设置了组地址的帧将不被传送给该

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 实用文档 > 简明教程

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报