zigbee学习之APS数据服务

本文详细探讨了zigbee协议中的APS数据服务,包括APSDE-DATA.request、APSDE-DATA.confirm和APSDE-DATA.indication三个关键原语的语义、生成及接收结果,阐述了数据在对等应用实体间的传输过程和绑定表的应用。
摘要由CSDN通过智能技术生成

APS子层提供了两种服务,通过两种服务访问点( SAPs)访问。 它们是APS数据服务,通过APS子层数据实体SAP ( APSDE-SAP) 访问, 以及APS管理服务, 通过APS子层管理实体SAP ( APSME-SAP)访问。这两种服务通过NLDE-SAP 和(在有限的范围内) NLME-SAP接口 ,提供了NHLE和NWK层之间的接口。 NWK层和 APS子层之间的 NLME-SAP接口只支持 NLME-GET和NLME-SET原语:所有其它NLME-SAP原语只能通过ZDO访问 。 除了这些外部的接口,在APSME和APSDE之间还有一个隐蔽接口,它允许APSME使用APS数据服务。

APS子层数据实体SAP ( APSDE-SAP) 支持应用协议数据单元在对等应用实体之间的传输。 表2.1列出了APSDE-SAP支持的原语

1.APSDE-DATA.request

该原语请求一个从本地NHLE到一个或多个对等NHLE实体传输一个NHLEPDU( ASDU) ;

1.1 服务原语的语义

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.2 原语生成

每当一个数据PDU ( ASDU) 要被传输给一个对等的NHLE(上层实体)时, 该原语由一个本地的NHLE生成。

1.3 接收结果

在接收此原语时,APS 子层实体开始传输所提供的ASDU。

如果DstAddrMode 参数设置为0x00 且本原语被支持绑定表的一个设备的APSDE 接收,就分别根据SrcEndpoint 和ClusterId 参数指定的端点和cluster 标识符,查询绑定表,寻找相关的绑定表条目。如果没有找到绑定表条目,APSDE 发出状态为NO_BOUND_DEVICE 的 APSDE-DATA.confirm 原语。如果找到一个或多个绑定表条目,那么APSDE 检查每个绑定表条目的目标地址信息。如果这表示一个设备本身,那么APSDE 就发出一个APSDE-DATA.indication 原语给上层,DstEndpoint 参数设置为绑定表条目的目标端点标识符。否则,如果存在的话,APSDE 建立端点信息来自绑定表条目的APDU,并当通过NWK 层传输该帧时,使用绑定表条目的目标地址信息。如果存在多个绑定表条目,那么APSDE 按照上面所述处理每个绑定表条目;直到没有剩余的绑定表条目。如果这个原语由不支持绑定表的一个设备的APSDE 接收,APSDE 发出状态为NOT_SUPPORTED 的APSDE-DATA.confirm 原语 。

如果DstAddrMode 参数设置为0x03,DstAddress 参数包含一个扩展64 位IEEE 地址,必须首先通过使用nwkAddressMap NIB 属性(见表3.43)映射为一个相应的16 位NWK 地址。如果找不到一个相应的16 位NWK 地址,APSDE 就发出状态为NO_SHORT_ADDRESS 的 APSDE-DATA.confirm原语。如果找到了一个相应的16 位NWK 地址,它将被用于NLDE-DATA.request 原语的调用,DstEndpoint 参数的值将被放在由此产生的APDU 中。在这种情况下,APS 头的帧控制域的传送模式子域值应该是0x00。

如果DstAddrMode 参数的值是0x01,表示组寻址,DstAddress 参数将被解释为一个16 位的组地址。该地址将被放在APS 头的组地址域中,DstEndpoint 参数将被忽略,目标端点域将从APS 头中省略。在这种情况下,APS 头的帧控制域的传送模式子域值应该是0x03。

如果DstAddrMode 参数设置为0x02, DstAddress 参数包含一个16 位的NWK 地址,且DstEndpoint参数被提供。在目标NWK 地址用于立即应用响应的情况下,上层只使用DstAddrMode 值为0x02 的模式,且NWK 地址不再为以后的数据传输请求保留。

应用程序可以通过设置NLDEDATA.request 原语的RadiusCounter 参数为一个非零值,限制一个帧传输可以通过网络转发的跳数。

2. APSDE-DATA.confirm

该原语报告请求从一个本地NHLE 传输一个数据PDU(ASDU)到一个对等NHLE 的结果。

2.1 服务原语的语义

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.2 原语生成

本原语由本地APS 子层实体在响应一个APSDE-DATA.request 原语时生成。本原语返回一个状态值 SUCCESS ,表示传输请求成功,或一个 NO_SHORT_ADDRESS,NO_BOUND_DEVICE 或SECURITY_FAIL 的错误代码,或任何NLDE-DATA.confirm 原语返回的状态值。

2.3 接收结果

在接收本原语后,发出设备的上层被通知其传输请求的结果。如果尝试传输成功,状态参数将被设置为SUCCESS。否则,状态参数将指示错误。

3. APSDE-DATA.indication

本原语表示从APS 子层传输一个数据PDU(ASDU)到本地应用实体。

3.1 服务原语的语义

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2 原语生成

当从本地NWK 层实体收到一个适当寻址数据帧,或随后收到一个DstAddrMode 参数设置为0x00且绑定表条目指示帧送到设备本身的APSDE-DATA.request 时,本原语由APS 子层生成并发给上层。如果ASDU 头的帧控制域指明帧被保护。

当从本地网络层实体收到一个适当寻址数据帧时,本原语由APS 子层实体产生,通过NLDE-DATA.indication 原语发给上层实体。

如果帧未被保护或安全处理成功,APSDE 必须检查帧是否被分段。如果扩展头包含在APDU 头中且扩展帧控制域的分段子域表示帧被分段,但是这个设备不支持分段,APSDE 就设置状态参数为DEFRAG_UNSUPPORTED。如果扩展头包含在APDU 头中且扩展帧控制域的分段子域表示帧被分段,且这个设备支持分段,但是当前不能重组该帧,APSDE 就设置状态参数为DEFRAG_DEFERRED。

在所有其它情况下,APSDE 设置状态参数为SUCCESS。

如果状态参数不是设置为SUCCESS,APSDE 设置 ASDULength 参数为0,ASDU 参数为空字节集合。

3.3 接收结果

在接收到本原语后,上层被通知数据到达设备。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高咩咩在人间

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值