ZigBee四种绑定 在TI Z-Stack协议栈中应用
就会启动绑定过程,为发出请求的设备建立源绑定条目。假设在ZDO终端设备绑定请求中找到匹配,协调器将采取以下步骤:
1.协调器发送一个ZDO解除绑定请求给第一个设备。终端设备绑定是一个切换过程,所以解除绑定请求需要发送给第一个设备,以便移除一个已有的绑定条目。 2.等待ZDO解除绑定的应答,如果返回的状态是ZDP_NO_ENTRY,协调器可以发送一个ZDO绑定请求,在源设备(ZDP_EndDeviceBindReq()第一个参数指定的地址)中建立绑定条目。假如此时返回的状态是ZDP_SUCCESS,可继续处理第一个设备的簇标识符(解除绑定指令已经移除了绑定条目,即已经切换完成)。 3.等待ZDO绑定应答。收到以后,继续处理第一个设备的下一个簇标识符。 4.等第一个设备完成了以后,在第二个设备上实行同样的过程。 5.等第二个设备也完成了,协调器向两个设备发送ZDO终端设备绑定应答消息。 注意打开编译选项:REFLECTOR和ZDO_COORDINATOR ZDApp_SendEndDeviceBindReq() 优点: 1.绑定信息保存在网络反射设备(例如协调器、路由器)中,可以节省目标设备的内存空间。 2.网络反射设备总是处于监听网络的状态。所以,如果其中一个被绑定的节点广播网络地址改变的消息,网络反射设备就可以马上更新相应的绑定表条目。这样,其他被绑定的节点即使处于休眠状态(没有收到该节点网络地址改变的消息),随后向该节点(网络地址已改变)发送的消息,(在)网络反射设备(协助下)仍能准确定位。 缺点: 1.一个与多个设备绑定的节点不能只向一个或若干个配对的设备发送消息。网络反射设备会向全部已绑定的设备本别发送单播消息。 2.发送消息的设备无法收到目标设备接收情况的通告。(没有像AF_ACK_REQUEST标志位那样返回接收情况的功能!) 3.所有的消息必须经过网络反射设备传输,降低了网络的带宽。 进一步分析: 与六个设备绑定的某个设备,向网络反射器发送一个消息后,会导致反射器发送六个单播消息。假设一个网络被分成两个相等的地理区域A和B,网络反射器在两区之间的中央。如果发送消息的设备在A区的深处,接收消息的(六个)设备在B区的深处,那么每次通过绑定(向反射器)发送一个消息,A区的网络流量将会是对六个接收设备分别发送消息时的六分之一。(这是优点!)但如果发送和接收的设备都邻近在一个区的深处(假设离反射器很远),那么(其中一个设备通过反射器的绑定功能想其他设备发送一个消息)该区的网络流量将会是对六个接收设备分别发送单跳消息的许多倍。(这是缺点!) 设备的应用服务-设备上的一个应用服务可以建立或者维护一个绑定表。进入设备上绑定条目的另一种方法是由应用服务本身去管理绑定表。 这意味着应用服务通过调用以下的绑定表管理函数,可以在本地进入或者移除绑定表的条目。 管理绑定表使用的API: bindAddEntry()–绑定表中加条目 bindRemoveEntry()–绑定表中移除条目 bindRemoveClusterIdFromList()–从一个已有的绑定表条目中移除一个簇标识符 bindAddClusterIdToList()–在一个已有的绑定表条目中加入一个簇标识符 bindRemoveDev()–移除某目标地址的所有条目 bindRemoveSrcDev()–移除某源地址的所有条目 bindUpdateAddr()–更新条目到新的地址 bindFindExisting()–查找一个绑定条目 bindIsClusterIDinList()–在绑定条目中查找一个已有的簇标识符 bindNumBoundTo()–某一地址(源地址或目标地址)绑定条目的个数 bindNumOfEntries()–绑定表条目的个数 bindCapacity()–允许的最大绑定条目数 BindWriteNV()–在NV中保存新的绑定表 WhichBindingMethodToUse? 我们应该选择哪一种绑定方式? Automatic +nouserinteractionrequired +notoolcos |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |