在使用ZDP_MgmtPermitJoinReq()函数函数中遇到一个问题,具体情况如下,请各位能帮忙解答,谢谢!
我的Zigbee网络中有一个协调器,一个路由器(0x4B32),一个待入网设备(路由器),上电后协调器和路由器都设置了禁止其它设备入网。
我想实现的功能是:首先待入网设备通过外部操作调用ZDOInitDevice(0);让其自动启动;然后协调器向路由器(0x4B32)发送ZDP_MgmtPermitJoinReq()指令后,待入网设备通过向路由器(0x4B32)入网。
目前的问题是:实际上协调器向路由器(0x4B32)发送ZDP_MgmtPermitJoinReq()指令后,0x4B32并没有开启入网,当然设备也没有加入网络。通过抓包发现协调器有发数据包给0x4B32,但是0x4B32的Assoc仍然为0,按道理应该为1才对,这样才能开启入网。但是我通过NLME_PermitJoiningRequest()指令本地开启0x4B32的允许入网,这时Assoc为1,其他设备能够正常入网。
我的疑问是:0x4B32接收到协调器发过来的ZDP_MgmtPermitJoinReq()指令后,后续的工作是协议栈自动处理开启入网功能;还是需要用户根据接收到的指令开启入网功能?
抓包结果见附件。
Colin Ye:
我同样也遇到这样的问题,一模一样,也是调用ZDP_MgmtPermitJoinReq()函数 无任何效果!
后来我自己写了个广播的函数,协调器先调NLME_PermitJoiningRequest() 用来控制入网允许,再通过广播发送指令(自己定义是否允许加网的指令),路由设备收到命令再调用NLME_PermitJoiningRequest()。
VV:
回复 Colin Ye:
你抓包下就知道什么情况了。
wu wu4:
回复 VV:
你好 现有协调器A 路由B 路由C,均有NV_RESTORE,A初始化时ZDP_MgmtPermitJoinReq()禁止设备加入,B/C初始化没有禁止设备加入。A允许B加入网络后,B可以NV了网络信息。A/B重新上电后,B正常可以加入网络。在这时,由于B没有禁止设备加入,而A是在B上电之前就已经ZDP_MgmtPermitJoinReq()禁止设备加入,所以B不会受到A广播的ZDP_MgmtPermitJoinReq,那么作为新设备的C是否可以通过B加入到网络呢??