我的终端是用电池且可移动的,由于移动范围较大,我想只设置两个协调器A和B,不设置路由节点,想让节点从协调器A掉线后,主动离开网络,并尝试重新加入协调器A/B
现在我的终端在网内调用NLME_LeaveReq(rejoin=1)可以成功离开网络并进入重启流程
1、如果设备已经和父节点失去连接,在Assoc Cnf fail(DEV_INIT或者DEV_NWK_DISC)状态调用NLME_LeaveReq,设备好像无法进入重启流程,这是什么原因啊
2、如果我在掉线后主动离开网络成功,再加入网络,协调器是否能感知我已退出网络
Alvin Chen:
首先如果你想加入B ,你要擦除NV。重新加入A是自动的,如果你想加入B,就要在直接Leave rejoin=0,也就是直接擦除NV作为一个新设备去扫描A和B。
如果你的节点lost parent 会在zclSampleSw_ProcessCommissioningStatus里面处理:
case BDB_COMMISSIONING_PARENT_LOST: if(bdbCommissioningModeMsg->bdbCommissioningStatus == BDB_COMMISSIONING_NETWORK_RESTORED) { //We did recover from losing parent } else { //Parent not found, attempt to rejoin again after a fixed delay Timer_setTimeout( EndDeviceRejoinClkHandle, SAMPLEAPP_END_DEVICE_REJOIN_DELAY ); Timer_start(&EndDeviceRejoinClkStruct); } break;
YiKai Chen:
想让节点从协调器A掉线后,主动离开网络,并尝试重新加入协调器A/B這樣的話协调器A和B就必須一直處於使能permit join的狀態,理當协调器不該一直處於使能permit join的狀態