z-stack协议栈如何控制节点加入网络?
一个节点设备在未加入网络前,先禁止加入网络,需加入网络时,通过操作按键允许加入网络,如何操作?
The joining permission can be configured using the NLME_PermitJoiningRequest() function. The function has one parameter, PermitDuration, which defines the length of time which the coordinator/router will be allowing associations. The values 0x00 and 0xff indicate that permission disabled or enabled, respectively without a time limit. Values 0x01 – 0xFE are the number of seconds to allow joining.
To enable/disable joining on all routers in the network, the ZC (Zigbee Coordinator) can issue Mgmt_Permit_Joining_req message with broadcast address by calling the ZDP_MgmtPermitJoinReq() function. The following codes snippet shows how to use the function:
zAddrType_t dstAddr; ........... // enable permit joining on all routers dstAddr.addrMode = AddrBroadcast; dstAddr.addr.shortAddr = NWK_BROADCAST_SHORTADDR_DEVZCZR; ZDP_MgmtPermitJoinReq(&dstAddr, 0xFF, 1, FALSE); ........... // disable permit joining on all routers dstAddr.addrMode = AddrBroadcast; dstAddr.addr.shortAddr = NWK_BROADCAST_SHORTADDR_DEVZCZR; ZDP_MgmtPermitJoinReq(&dstAddr, 0x00, 1, FALSE);
More information regarding the function can be found in the SWRA195 Z-Stack Application Programming Interface (API) document.
對不起,有些疑惑還請W釋疑~
(1)這個動作是否有針對性? 還是協調器、路由器或是終端設備都可以使用。
(2)這個動作使用的時機與目的?
(3)要使用此功能,編譯環境該如何設定?
(4)啟動設備預設為不要入網,該在何處設定初始值?
(5)已經入網的設備,需要再次做此動作嗎?
BR
Alan
这个功能的目的是为了允许或者禁止新的设备加入网络,主要针对已经在网络里面的设备,并且只有协调器和路由器有这个功能,因为协调器和路由器有接收新设备的能力,终端设备只能加入别的设备,不能接受其他设备。
NLME_PermitJoiningRequest()只针对设备自己操作,相当于本地的。
ZDP_MgmtPermitJoinReq是通过无线的方式发送出去,不仅对自己有效,而且发送无线数据控制其他的路由设备。
很详细。问一下,贴的那一段英文是哪个文档上的,好像不是Documents里面的文档。
http://processors.wiki.ti.com/index.php/Z-Stack_FAQ
VV:
上文说的三条指令: dstAddr.addrMode = AddrBroadcast; 是如下图的位置吗?
dstAddr.addr.shortAddr = NWK_BROADCAST_SHORTADDR_DEVZCZR;
ZDP_MgmtPermitJoinReq(&dstAddr, 0xFF, 1, FALSE);