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.

NLME_LeaveReq在Assoc Cnf fail状态调用,无法重启

我的终端是用电池且可移动的,由于移动范围较大,我想只设置两个协调器A和B,不设置路由节点,想让节点从协调器A掉线后,主动离开网络,并尝试重新加入协调器A/B

现在我的终端在网内调用NLME_LeaveReq(rejoin=1)可以成功离开网络并进入重启流程

1、如果设备已经和父节点失去连接,在Assoc  Cnf fail(DEV_INIT或者DEV_NWK_DISC)状态调用NLME_LeaveReq,设备好像无法进入重启流程,这是什么原因啊

2、如果我在掉线后主动离开网络成功,再加入网络,协调器是否能感知我已退出网络

  • 首先如果你想加入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;

  • 想让节点从协调器A掉线后,主动离开网络,并尝试重新加入协调器A/B

    這樣的話协调器A和B就必須一直處於使能permit join的狀態,理當协调器不該一直處於使能permit join的狀態