ZigBee协议栈绑定试验为什么终端节点LED不亮
发布网友
发布时间:2022-04-25 20:39
我来回答
共1个回答
热心网友
时间:2022-06-17 05:47
您好,“终端设备绑定请求”这一命名有误导的嫌疑。这一请求不仅仅适用于终端设备,而且适用于对希望在协调器上绑定的两个设备中匹配的簇实施绑定。一旦这个函数被调用,将假设REFLECTOR这一编译选项在所有希望使用这一服务的节点中都已经打开。具体操作如下:
(1) (Bind Req) Device 1 --> Coordinator <--- Device 2 (Bind Req)
协调器首先找出包含在绑定请求中的簇,然后对比每一设备的IEEE地址,如果簇可以匹配,而且这几个设备没有已经存在的绑定表,那他将发送一个绑定应答给每一个设备。
(2) Device 1 <--- NWK Addr Req ------ Coordinator ------- NWK addr Req ----> Device 2
(3) Device 1 ----> NWK Addr Rsp ---> Coordinator <---- NWK addr Rsp <--- Device 2
(4) Device 1 <----- Bind Rsp <----- Coordinator -----> Bind Rsp ----> Device 2
在《Z-Stack编程指南--绑定》一章中有下面的一段对终端绑定请求的描述。
该绑定机制在一个选定的设备上使用一个按键动作或类似动作在一个定制的超时周期内进行的绑定
行为。在定制的超时周期内在协调器上收集该终端设备绑定请求信息,基于配置文件标识符与簇标识
符的一致性将产生一个绑定表条目。
在用户指南[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( )
从绑定表中移除该条目。然后,一条响应信息将发送到这两个“终端设备” 。追问可是我还是没有明白怎么回事