Other Parts Discussed in Thread: Z-STACK
希望节点退网后不再主动搜索网络,而是等用户按键动作之后再重新加网,并且希望也可以重加入之前的网络,所以我的处理流程是如下两步:
1)先 NLME_LeaveReq(&req),且其中req.rejoin = true;,
req.extAddr = NULL;
req.removeChildren = false;
req.rejoin = true;
req.silent = false;
sta = NLME_LeaveReq(&req);
2)等DEV_NWK_DISC发生后执行ZDApp_StopJoiningCycle();
因为看代码ZDApp_StopJoiningCycle()必须在DEV_NWK_DISC、DEV_INIT、DEV_NWK_BACKOFF状态下才有效, NLME_LeaveReq()之后会发生ZDO_STATE_CHANGE,所以我等状态变为DEV_NWK_DISC再执行ZDApp_StopJoiningCycle();
case ZDO_STATE_CHANGE:
zclSensor_NwkState = (devStates_t)(MSGpkt->hdr.status);
if(zclSensor_NwkState==DEV_NWK_DISC)
{
ZDApp_StopJoiningCycle();
}
break;
但是 发现执行ZDApp_StopJoiningCycle()之后节点还是会继续加网的动作,加入到原来的网络。这是为什么?
看ZDApp_StopJoiningCycle()的代码发现只有一个“continueJoining=FALSE”的操作,而搜索整个工程看到continueJoining变量只有在ZDApp.c中有两个赋值的操作,没有任何使用到的地方,这是ZDApp_StopJoiningCycle()无效的原因? 应该怎么做才能实现NLME_LeaveReq()之后不再执行搜索网络的动作?