移除终端设备相关的代码:
if( AddrMgrExtAddrValid( extAddr ) == TRUE )
{
req.extAddr = extAddr;
req.rejoin = FALSE;
req.removeChildren = FALSE;
req.silent = TRUE;
NLME_LeaveReq( &req );
ZDSecMgrDeviceRemoveByExtAddr( extAddr );
ZDSecMgrAddrClear( extAddr );
AssocRemove( extAddr );
ZDApp_NVUpdate( );
}
Susan Yang:
很抱歉,有些不太明白您的意思。请问能请您再说明下吗?
yong cai1:
回复 Susan Yang:
if( AddrMgrExtAddrValid( extAddr ) == TRUE ){req.extAddr = extAddr;req.rejoin = FALSE;req.removeChildren = FALSE;req.silent = TRUE;NLME_LeaveReq( &req );ZDSecMgrDeviceRemoveByExtAddr( extAddr );ZDSecMgrAddrClear( extAddr );AssocRemove( extAddr );ZDApp_NVUpdate( );}
我在协调器里使用以上代码移除了指定ExtAddr的设备;并且协调器启动时我调用了NLME_PermitJoiningRequest(0x00)来禁止设备加入,但是我将被协调器移除的设备重新上电后,设备自动又加入到协调器里来了。此时协调器是禁止任何设备加入的,并且协调器已经移除了设备相关的信息,为什么设备还能加入到协调器的网络中来,是应为设备端有保存协调器的信息,就能直接加入协调器吗?
yong cai1:
回复 Susan Yang:
我在下面描述了,请问能看明白了不?
Susan Yang:
回复 yong cai1:
q请问您现在是否预编译了NV_RESTORE? 若是的话,则需要使用uint8 zgWriteStartupOptions( uint8 action, uint8 bitOptions ) 来改动ZCD_NV_STARTUP_OPTION的值以清除NV内的信息,防止其直接加入网络
yong cai1:
回复 Susan Yang:
编译选项中加了NV_RESTORE。不过我是想在不请求终端退网的情况下,协调器直接让终端,比如终端没有处于关机状态,协调器任可以把终端移出网络,在节点开机后就不能加入网络了。