文档库 最新最全的文档下载
当前位置:文档库 › Zigbee应用档案--绑定

Zigbee应用档案--绑定

Zigbee应用档案--绑定
Zigbee应用档案--绑定

AN009: 绑定

1目的

文件的目标在于解释Zigbee绑定,如何工作,如何使用(从一个应用的角度来看)

2定义

本文术语定义如下:

z应用 ―― 一个设备的端点上处理发送与接收的特定的配置文件的软件,例如:一个灯控制开关

z ZDO―― 负责网络中设备的初始化,及为设备及其应用处理服务搜寻任务

z间接信息 ―― 一个缺少地址信息的信息,这个信息想在协调器中被绑定。这个信息缺少目标地址(从发送者到协调器)或源地址(从协调器到目标)。请不要和“MAC间接信息”混淆。

z直接信息 ―― 一个带目标地址的信息,这个信息不送到协调器中绑定

z协调器 ―― 这里指Zigbee协调器而不指MAC协调器

3什么是绑定

绑定是一种从一个应用到另一个应用(或多个应用)的信息流程控制机制,在Zigbee V1.0中,绑定机制应用在Zigbee协调器中

绑定允许一个应用发送一个信息包到网络中而不需要知道目标地址,协调器将从其绑定表中确定其目标地址,然后发送该信息到目标应用(或多个应用)。

优点:

z一个终端设备不需要在NV-RAM中存贮目标地址

z当设备在休眠中,可以委托代理

z在一对多绑定中,一个设备可以发送一个间接信息,协调器将可以发送该信息到多个设备中

缺点:

z间接信息将要先发送到协调器中而后才能发送到想要到目标中,这将减小数据吞吐量

z协调器必须有足够的资源(RAM及NV-RAM)来处理所有所需的绑定记录

z协调器将成为系统的瓶颈

z协调器使用间接信息方式来呈现网络设备的单点错误

4建立绑定表

有三种方式可以在协调器中建立绑定表

z ZDO绑定请求 - 一个代理工具可以告诉协调器来制作一张绑定记录

z ZDO终端设备绑定请求 - 两个设备可以告诉协调器它们俩想建立一个绑定记录

z协调器应用- 一个协调器应用可以建立或管理一个绑定表

4.1ZDO绑定请求

任何设备或者应用可以发送一个ZDO信息到协调器(OTA)中来在网络中为自己与/或其它设备建

立一条绑定记录。这叫辅助绑定。

4.1.1委托应用

一个应用可以通过调用ZDP_BindReq()[定义在ZDPProfile.h中]与两个应用的地址、端点以及

绑定表中需要的簇标识符来完成绑定。第一个参数dstAddr(0x0000)是协调器的地址。

请确认在ZDConfig.h文件中已使能[ZDO_BIND_UNBIND_REQUEST]属性。

同样可以使用同样的参数调用ZDP_UnbindReq( )来移除绑定记录。

协调器将发送一个ZDO绑定或去绑定响应信息,其ZDO代码将通过调用ZDApp_BindRsp( )或

ZDApp_UnbindRsp( )及其返回的行为状态来分析与告知ZDApp.c程式。

对于Bind_Response,从协调器返回的状态有ZDP_SUCCESS, DP_TABLE_FULL, ZDP_NOT_SUPPORTED。

对于Unbind Response,从协调器返回的状态有ZDP_SUCCESS, ZDP_NO_ENTRY, ZDP_NOT_SUPPORTED 。

4.1.2协调器

经过Network,APS,AF信息分析后,该信息将作为一个Bind_req或Unbind_req信息传递到ZDP_IncomingData( )[在ZDProfile.c文件中],ZDO_ProcessBindUnbindReq( )[在ZDObject.c文件中] 将被调用来分析ZDO域。

对于一个Bind_req信息来说,ZDAppBindReqCB( )[在ZDApp.c中]将被调用。这里就是可以放置自己代码地方如果你想要截取或者做任何应用改变的话。这个函数将调用APSME_BindRequest( ) [定义在APSMEDE.h中]来添加该请求到绑定表中,而后发送响应信息回到发送的应用。

对于一个Unbind_req信息来说,在APSME_UnBindRequest( )用来移除绑定记录时调用ZDApp_UnbindReqCB( ) [在ZDApp.c],而后发送响应信息回到发送的应用。

4.1.3发送一个Bind_req 或Unbind_req到一个非协调器的设备中

如果该设备不是协调器,且已经定义了ED_BIND编译标志,该设备可以接收Bind_req及Unbind_req信息来为设备端点应用中的一个设定目标地址。

如果一个Bind_req信息接收到了,ZDApp_BindReqCB( ) [在ZDApp.c中]将被调用,一个短地址将从信息的目标地址域中生成,并且一个ZDO_NEW_DSTADDR信息将发送到匹配该信息端点域中端点的应用中去。

应用范例被缺省设定为间接发送输出的信息,如果应用接收到一个新的目标地址ZDO_NEW_DSTADDR,输出的信息将被作为一个直接信息发送到新的目标地址,应用范例仅可一次处理一个ZDO_NEW_DS TADDR,但是我们可以将它们的目标地址,端点,簇标识符存入一个数组阵列中,这样该应用就可以维护一个属于自己的“本地绑定表”。

4.2ZDO终端设备绑定请求

该绑定机制在一个选定的设备上使用一个按键动作或类似动作在一个定制的超时周期内进行的绑定行为。在定制的超时周期内在协调器上收集该终端设备绑定请求信息,基于配置文件标识符与簇标识符的一致性将产生一个绑定表条目。

在用户指南[SRC 与SLC]中的应用范例是一些终端设备绑定执行的例子。(按每个设备上SW2开关)。你将注意到所有的应用范例都有一个处理按键事件的函数(如,在TransmitApp.c中的TransmitApp_HandleKeys( ) )。这个函数调用ZDApp_SendEndDeviceBindReq( )[在ZDApp.c文件中],它可以收集所有应用端点的信息,并且调用ZDP_EndDeviceBindReq( ) [在ZDProfile.c文件中]来发送信息到协调器中。

协调器将接收[ZDP_IncomingData( ),在ZDProfile.c中]和分析[ZDO_ProcessEndDeviceBindReq( ),在ZDObject.c中]这个信息,并且调用ZDApp_EndDeviceBindReqCB( )[在ZDApp.c中]来调用ZDO_DoEndDeviceBind( )[在ZDObject.c]来处理该请求。

当协调器接收到两个匹配终端设备绑定请求时,将通过调用nwk_AddBindEntry( )函数来创建一个绑定记录。如果已存在这两个匹配终端设备请求的绑定记录,则协调器将调用nwk_RemoveBindingEntry( )从绑定表中移除该条目。然后,一条响应信息将发送到这两个“终端设备”。

4.3本地协调器绑定管理器

本部分将细述函数来写一个应用来管理协调器绑定表,这个应用是协调器代码的一部分或是一个PC 应用程式应用在MT接口的一部分。

ZDO_ProcessMgmtBindReq( )[在ZDObject.c中]是一个读取绑定表的范例,它调用APSME_GetRequest( )来读取Zigbee定义的绑定表条目的数量(apsNumBindingTableEntries),然后,一次性读取绑定表条目(aspBindingTable)。

通过调用APSME_BindRequest( )来进入一个新的绑定表条目[在APSMEDE.h中],SrcAddr与DstAddr

定义为zAddrType_t类型,且一直为64bit 地址,调用APSMEDE_BindRequest( )之前或之后,调用ZDP_NwkAddrReq( )[在ZDProfile.c中]来得到源与目标地址的16bit 短地址。

调用APSMEDE_UnBindRequest( )[在APSMEDE.h中]来移除一个绑定表条目,重新使用源与目标地址的64bit长地址。

5工作机制

假设协调器已设定好一张有效的绑定表,作为一个典型的情节模式将发生如下步骤:

1、这个发送应用将发送一间接的数据信息给协调器,这个信息被标记为间接且目标地址缺失。

2、协调器接收到这个信息,如果该APS的ACK使用,协调器将发送一个APS的ACK回到原

发送应用。这指示该协调器收到了该信息。

3、协调器将使用发送者的地址与端点及信息的簇标识符来查寻绑定记录,如果在绑定表中有一

个匹配的,协调器将发送该信息到绑定记录中的目标应用中去。这个信息是间接的且源地址

缺失。

4、目标设备接收到该信息,如果信息的APS层ACK使能,则目标设备将发送一个APS的ACK

回到协调器

5、步骤3与4可以多次重复来为更多的那些匹配原发送的地址、端点及信息的簇标志符的绑定

记录直到信息发送到所有的绑定到发送者应用的簇标志符的应用。

6协调器绑定配置设定

首先,编译标志COORDINATOR_ BINDING必须设置为协调器的绑定属性。

顶层通过调用APSME_BindRequest( )[在APSMEDE.h中]建立绑定记录一次一个簇标志符,但每一个绑定表条目可以为每一对源地址/端点-目标地址/端点保持多个簇标志符。这样,我们可以在一个绑定表条目中保持5个绑定记录如果所有的绑定都是在相同两个应用(地址/端点)之间建立的。

NWK_MAX_BINDING_ENTRIES[在BindingTable.h中]是最大的绑定表条目数量,要改变每一条绑定表条目的簇标志符的数量,修改MAX_BINDING_CLUSTER_IDS。修改任一个参数数目来增加协调器的绑定容量,但是要记住,必须有足够的NV-RAM空间来存贮相同数量的绑定表条目。

请查看BindingEntry_t[在BindingTable.h中]来了解绑定表条目的结构,但不要改变该结构,这个绑定表不存贮任何地址,它使用连接设备清单(包括每一个绑定表的设备的短地址与长地址)的一个索引。

如果改变了NWK_MAX_BINDING_ENTRIES,则同样需要改变连接设备清单的大小,NWK_MAX_DEVICE_LIST放在nwk_globals.h文件中,记住,这也同样存贮在NV RAM中。

相关文档