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.
在文件ZDApp.c中,搜索case ZDO_NWK_JOIN_IND:
原版处理如下
case ZDO_NWK_JOIN_IND: if ( ZG_BUILD_JOINING_TYPE && ZG_DEVICE_JOINING_TYPE ) { if((bdbCommissioningProcedureState.bdbCommissioningState == BDB_INITIALIZATION) || (bdbCommissioningProcedureState.bdbCommissioningState == BDB_PARENT_LOST)) { bdb_reportCommissioningState(bdbCommissioningProcedureState.bdbCommissioningState,TRUE); } ZDApp_ProcessNetworkJoin(); } break;
参照CC2652 SDK,更正为
case ZDO_NWK_JOIN_IND: if ( ZG_BUILD_JOINING_TYPE && ZG_DEVICE_JOINING_TYPE ) { if((bdbCommissioningProcedureState.bdbCommissioningState == BDB_INITIALIZATION) || (bdbCommissioningProcedureState.bdbCommissioningState == BDB_PARENT_LOST)) { if(nwkStatus == ZSuccess) { bdb_reportCommissioningState(bdbCommissioningProcedureState.bdbCommissioningState,TRUE); } } ZDApp_ProcessNetworkJoin(); } break;
当设备进行过rejoin后(无论是否rejoin成功),bdb_reportCommissioningState会从 BDB_PARENT_LOST状态中脱离出来,设备状态直接转换成DEV_END_DEVICE,影响后面ZDApp_ProcessNetworkJoin的执行。而在CC2652的z-stack中,该处理过程加入了对Rejoin结果的判断。