我想实现当路由器或终端掉电或丢失的时候,协调器强制路由器、终端离开网络同时清除其AssociatedDevList[]。当重新上电的时候,路由器、终端设备重新加入到协调器中。预编译NV_RESTORE。
做了如下实验:当关掉终端设备、路由器一段时间后,通过调试发现协调器成功清除离线路由器、终端的AssociatedDevList[]。之后给终端设备上电,终端设备能重新加入了协调器,在AssociatedDevList[]可以找到其信息;但是给路由器重新上电,路由器却没有能重新加入到协调器中,在AssociatedDevList[]找不到其信息。不知道问题在哪里,为何同样的程序终端设备和路由器却有不同的结果!
请教TI员工了!
程序如下:
AddrMgrEntry_t addrEntry;
NLME_LeaveReq_t req;
addrEntry.user = ADDRMGR_USER_DEFAULT;
addrEntry.index = index;
if (AddrMgrEntryGet( &addrEntry ))
{
req.extAddr = addrEntry.extAddr;
//osal_memcpy(req.extAddr, addrEntry.extAddr, 8);
req.removeChildren = TRUE; //-true 子设备也脱离,false只脱离当前设备
req.rejoin = TRUE; //允许设备重新加入网络,false 不允许设备重新加入网络
req.silent = FALSE;
NLME_LeaveReq( &req );
AssocRemove(addrEntry.extAddr);
ZDApp_NVUpdate();
}