This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC2530: ZStack 2.51 a 版本 协调器主动删除已入网的终端或路由节点的信息,函数返回true,1秒之后再发一次返回false,再过一两秒,协调器就自动复位了,所有的节点也都退网了,并没有实现删除单个终端或路由的功能,请问这个函数操作是否有其他方式

Part Number: CC2530
Other Parts Discussed in Thread: Z-STACK

方法一,协调器根据16位短地址找mac地址,然后调用ZDP_MgmtLeaveReq()删除该节点信息

现象:节点入网成功后,协调器接收到删除节点操作消息,执行以下函数,第一发 ret返回 true(1),第二次发 ret返回 false(0),过一两秒后协调器自动重启了,之前入网的节点也都掉网了

/*********************方法一 start**************************/

zAddrType_t addr_delet;
uint8 IEEEbuf[8]={0};
uint8 ret[1];
addr_delet.addrMode = Addr16Bit;
addr_delet.addr.shortAddr =shortaddr;
AddrMgrExtAddrLookup(addr_delet.addr.shortAddr, IEEEbuf );
if(ZDP_MgmtLeaveReq((zAddrType_t *)&addr_delet,IEEEbuf ,FALSE,FALSE,FALSE)== ZSuccess){
HalUARTWrite(0,ret,1);//打印删除终端成功标志
}else{
HalUARTWrite(0,ret,1);//打印删除终端成功标志
}

/*******************方法一 end**********************/

方法二:协调器根据16位短地址找mac地址,然后调用AssocRemove()删除该节点信息

现象:节点入网成功后,协调器接收到删除节点操作消息,执行以下函数,第一发 ret返回 true(1),第二次发 ret返回 false(0),过一两秒后协调器就自动重启了,之前入网的节点也都掉网了

/*********************方法二 start**************************/

NLME_LeaveReq_t req;
req.extAddr = IEEEbuf;
req.removeChildren = FALSE;
req.rejoin = FALSE;
req.silent = FALSE;
ret[0]=NLME_LeaveReq(&req); //通过leave命令 清除 stale device相关条目;
ret[0]=AssocRemove(IEEEbuf);//这个函数调用才能生效,前面一行的不行


return ret[0];

/*******************方法二 end**********************/

TI大佬求教