大家好,
最近遇到一个问题就是删除一个路由节点,协议栈版本是2.5.1a — cc2530,我使用的代码如下:
zAddrType_t addr_delet;
addr_delet.addrMode = Addr16Bit;
addr_delet.addr.shortAddr =addr;
AddrMgrExtAddrLookup(addr_delet.addr.shortAddr, tempbuf );
if(ZDP_MgmtLeaveReq((zAddrType_t *)&addr_delet,tempbuf,0,0,0)== ZSuccess)
MyDebug("\nSucce\n");
AssocRemove(tempbuf);
ZDApp_NVUpdate();
结果是如果路由节点当前在网络里,则会正常删除掉它;
如果删除时节点没上电,之后再给节点上电,节点仍可以和协调器通信。。。通过AddrMgrExtAddrLookup函数查询该节点的长地址为0,(是否)说明关联表已经清除掉了。节点却未清出网络,这是否是正常现象。我想问下有没有什么API可以直接将节点去除网络无论节点是否在线,还是说升级为home1.2.2a版本能做到?如果不可以的话,我就只能通过一些其他方式,等待要删除的节点上电后再删除。
VV:
你说的节点仍然和协调器通信,原因是因为节点自己还保存着网络的信息,包括父设备的信息,这个是没办法的。
你只能是在后来上电通信时,发生leave的命令。