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.

Z-stack 3.0.0和Z-stack 3.0.1的bug,Rejoin失败时进入死机状态。

Other Parts Discussed in Thread: Z-STACK, CC2530

在文件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结果的判断。

x 出现错误。请重试或与管理员联系。