zigbee3.0学习笔记@开发指导书@绑定

#绑定
源绑定
不需知道目标地址,由APS层在绑定表中确定目标地址
此调试方法依赖于cluster id和ZDO消息的使用
##绑定表
4种建立绑定表方法:

  • ZDO绑定请求-----调试工具创建
  • ZDO终端绑定请求-----2个设备告诉协调器需要建立绑定,协调器将在匹配并在两个设备中创建绑定表。
  • 应用程序----应用程序可以构建或者管理绑定表
  • 调试过程中启动设备的发现和绑定

###ZDO绑定请求
任何设备或者应用程序都可以发送ZDO信息给另一个设备为网络中的另一个设备构建绑定记录,这称为辅助绑定,这将为发送设备创建绑定条目。
###应用程序绑定
建立绑定接口ZDP_BindReq(TransSeq, dstAddr, Status, SecurityEnable)[defined in ZDProfile.h]
移除绑定接口ZDP_UnbindReq(TransSeq, dstAddr, Status, SecurityEnable)
参数dstAddr是源地址的短地址
目标设备发送一个响应消息 ZDApp_ProcessMsgCBs()[ZDApp.c]
Bind Response协调器返回的消息:ZDP_SUCCESS,ZDP_TABLE_FULL,ZDP_INVALID_EP,ZDP_NOT_SUPPORTED
Unbind Response协调器返回的消息:ZDP_SUCCESS,ZDP_NO_ENTRY,ZDP_INVALID_EP,ZDP_NOT_SUPPORTED
###ZDO终端绑定请求
使用场景:按钮或者其他类似操作在特定的超时时间进行绑定
在超时时间内,协调器收集绑定请求消息,并根据profile ID和cluster ID创建绑定表
绑定超时时间(默认16秒)APS_DEFAULT_MAXBINDING_TIME[define in nwk_globals.h]
协调器绑定过程中,协调器注册函数ZD_RegisterForZDOMsg()–ZDApp_RegisterCBs()[defined in ZDApp.c]用来接收终端绑定请求,当消息收到后发送到ZDApp_ProcessaMsgCBs()进行解析和处理。
协调器终端设备绑定是一个切换过程。第一次执行此流程,将在请求设备中创建一个绑定条目,第二次执行流程,将删除请求设备中的绑定。这就是为什么它将发送一个解绑请求,并等待是否解绑成功,如果成功绑定条目存在并被删除,否则将发送一个绑定请求来创建绑定条目。
当协调器匹配2个终端设备的绑定请求时,它就启动了在请求设备中创建源绑定条目的过程,假设协调器找到了匹配的终端绑定请求:
1.发送ZDO解绑请求到第一个设备。以删除现有的绑定条目。
2.等待解绑响应,如果返回ZDP_NO_ENTRY,发送绑定请求以在源设备中创建绑定条目;如果返回ZDP_SUCCESS,移动到第一个设备的cluster ID
3.等待绑定响应,接收到时移动到第一个设备的cluster ID
4.第一个设备完成后,第二个设备执行同样的流程
5.当两个设备都完成后,发送ZDO终端绑定响应给两个设备
###设备应用程序绑定管理器
绑定表管理

  • bindAddEntry()------添加条目到绑定表
  • bindRemoveEntry()--------从绑定表删除条目
  • bindRemoveClusterIdFromList()-------从现有的绑定表条目移除一个cluster ID
  • bindAddClusterIdToList()-------添加cluster ID到现有绑定表条目
  • bindRemoveDev()-----通过引用一个地址删除所有条目
  • bindRemoveSrcDev()—通过引用源地址删除所有条目
  • bindUpdateAddr()-----把条目更新到另一个地址
  • bindFindExisting()------查找绑定表条目
  • bindIsClusterIDinList()-----检查绑定表条目中的cluster ID
  • bindNumBoundTo()----(源地址和目标地址)具有相同地址的条目数量
  • bindNumOfEntries()-----绑定表中条目的数量
  • bindCapacity()---------最大条目数量
  • BindWriteNV()-------NV中的更新表
    ##配置源绑定
    f8wConfig.cfg
    NWK_MAX_BINDING_ENTRIES ------绑定表最大条目数量 4
    MAX_BINDING_CLUSTER_IDS-------每个绑定条目的最大cluster ID 数量 4
    绑定表在static RAM中维护,会影响RAM的使用
    每个绑定条目6个字节,其中MAX_BINDING_CLUSTER_IDS 2个字节
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
BINDING KuangJunBin:本文是作者根据TI Z-Stack开发文档,ZigBee Specification-2007,《Zigbee Wireless Networking》等英文资料整合和翻译而成,采用中英双语对照方便读者理解,文中翻译不当之处,望广大同行不吝赐教。推广ZigBee技术,提高国内电子行业的国际影响力,是我们无线通讯工程师的愿景。本文欢迎转载,请保留作者信息和出处,作为支持我继续努力前行的动力,谢谢! E-mail:kuangjunbin@gmail.com In the Zigbee 2006 release,the binding mechanism is implemented in all devices and is called source binding. Binding allows an application to send a packet without knowing the destination address,the APS layer determines the destination address from its binding table,and then forwards the message on to the destination application(or multiple applications)or group. ZigBee2006版本中规定,在全部节点中实现绑定机制,并将其称为源绑定绑定机制允许一个应用服务在不知道目标地址的情况下向对方(的应用服务)发送数据包。发送时使用的目标地址将由应用支持子层(APS)从绑定中自动获得,从而能使消息顺利被目标节点的一个或多个应用服务,乃至分组接收。 Binding Table 1.Defined in RAM,but can be saved in Flash if the NV_RESTORE compiler option is used 2.Stored on source node(REFLECTOR compiler option required) 3.Entries map messages to their intended destination 4.Each entry in the binding table contains the following: typedef struct { uint16 srcIdx;//Source index uint8 srcEP;//Source endpoint uint8 dstGroupMode;//Specifies normal or group addressing uint16 dstIdx;//Destination index or group address uint8 dstEP;//Destination endpoint uint8 numClusterIds;//Number of cluster IDs in the clusterIdList below uint16 clusterIdList[MAX_BINDING_CLUSTER_IDS]; }BindingEntry_t; 绑定 1. 绑定存放的位置是内存中预先定义的RAM块,如果编译选项NV_RESTORE被激活,也能保存在Flash里。 2. 绑定放置在源节点(需要激活编译选项REFLECTOR)。 3. 绑定的条目把需要发送的消息映射到它们的目标地址上。 4. 绑定中每个条目(entry)包括以下内容: 绑定条目结构体的定义
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值