引用: wenlonghbo 发表于 2020-4-23 17:20
帮忙确定下 当时的devState是不是 DEV_NWK_DISC
ZDApp_ProcessOSALMsg( osal_event_hdr_t *msgPtr )
if ( ( (pChosenNwk = ZDApp_NwkDescListProcessing()) != NULL ) && (zdoDiscCounter > NUM_DISC_ATTEMPTS) )
@VV
谢谢,现在如果我使用ZDApp_StartJoiningCycle();,我通过打印串口信息发现当时的devState的确是DEV_NWK_DISC,而且此时的devStartMode == MODE_REJOIN,若在执行ZDApp_StartJoiningCycle()的前一刻重新打开Coordinator,则函数进入case ZDO_NWK_DISC_CNF---->else if ( devStartMode == MODE_REJOIN )----->if ( NLME_ReJoinRequest( ZDO_UseExtendedPANID, pChosenNwk->logicalChannel) != ZSuccess )----->ZDO_JoinConfirmCB回调函数------->case ZDO_NWK_JOIN_IND------>ZDApp_ProcessNetworkJoin()------->else if ( devState == DEV_NWK_ORPHAN || devState == DEV_NWK_REJOIN )--------->此时nwkStatus !== ZSuccess,所以进入else------->ZDApp_NetworkInit(),一直无法rejoin的话就形成死循环了。
请问为什么这个时候EndDevice无法rejoin入协调器的网络呢,我的协调器已经加入了预编译NV_INIT和NV_RESTORE,EndDevice预编译选项是NV_RESTORE,期待您的解答,谢谢!
引用: wenlonghbo 发表于 2020-4-23 17:20
帮忙确定下 当时的devState是不是 DEV_NWK_DISC
ZDApp_ProcessOSALMsg( osal_event_hdr_t *msgPtr )
if ( ( (pChosenNwk = ZDApp_NwkDescListProcessing()) != NULL ) && (zdoDiscCounter > NUM_DISC_ATTEMPTS) )
@VV
谢谢,现在如果我使用ZDApp_StartJoiningCycle();,我通过打印串口信息发现当时的devState的确是DEV_NWK_DISC,而且此时的devStartMode == MODE_REJOIN,若在执行ZDApp_StartJoiningCycle()的前一刻重新打开Coordinator,则函数进入case ZDO_NWK_DISC_CNF---->else if ( devStartMode == MODE_REJOIN )----->if ( NLME_ReJoinRequest( ZDO_UseExtendedPANID, pChosenNwk->logicalChannel) != ZSuccess )----->ZDO_JoinConfirmCB回调函数------->case ZDO_NWK_JOIN_IND------>ZDApp_ProcessNetworkJoin()------->else if ( devState == DEV_NWK_ORPHAN || devState == DEV_NWK_REJOIN )--------->此时nwkStatus !== ZSuccess,所以进入else------->ZDApp_NetworkInit(),一直无法rejoin的话就形成死循环了。
请问为什么这个时候EndDevice无法rejoin入协调器的网络呢,我的协调器已经加入了预编译NV_INIT和NV_RESTORE,EndDevice预编译选项是NV_RESTORE,期待您的解答,谢谢!
举报