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.

新问题Zstack HA 1.22:我们的Enddevice产品在实际使用中发现设备会出现掉网的现象,掉网后一定的情况下会失去密钥甚至是恢复到出厂时的网络状态。

Zstack HA 1.22下发生的问题:我们公司的Enddevice产品在实际使用中发现设备会出现经常性的掉网的现象,掉网后一定的情况下会失去密钥甚至是恢复到了出厂时的网络状态,经过查看ZDO层的代码,发现确实有这样的交互机制,Enddeivce设备在掉网重连多次后会失去密码及网络信息。

我们的产品需求:在实际应用中,我们希望的是产品如果出现掉网,那不管网络环境多么差,都应该是一个反复性的Rejion网络恢复的过程,直到成功恢复为止,而不应该删除自己所保存的网络的信息,我想知道TI在协议栈这块有没有这样的机制?或者说如何来做调整。

  • 把下面代码屏蔽下做测试

    // Do a normal join to the network after certain times of rejoin retries
    else if( AIB_apsUseInsecureJoin == true )
    {
    devStartMode = MODE_JOIN;
    }

  • 这个问题 我也遇到过。

    我的做法是:

    ZDApp_ProcessNetworkJoin()函数中  这段红色的代码 屏蔽

         else if(devStartMode == MODE_REJOIN)
          {
            if ( ZSTACK_END_DEVICE_BUILD )
            {
              devStartMode = MODE_REJOIN;
              _tmpRejoinState = true;
              _NIB.nwkState = NWK_INIT;

              if( prevDevState == DEV_NWK_SEC_REJOIN_CURR_CHANNEL )
              {
                runtimeChannel = MAX_CHANNELS_24GHZ;
                prevDevState = DEV_NWK_SEC_REJOIN_ALL_CHANNEL ;
              }
              else if ( prevDevState == DEV_NWK_SEC_REJOIN_ALL_CHANNEL)
              {
                // Set the flag that will ask the device to do trust center network layer rejoin.
                //_NIB.nwkKeyLoaded = FALSE;
                //ZDApp_ResetNwkKey(); // Clear up the old network key.
              #ifdef DEBUG_REJOIN
                HalUARTWrite(0,"Don't clearing network key\n", sizeof("Don't clearing network key\n"));
              #endif            
                runtimeChannel = (uint32) (1L << _NIB.nwkLogicalChannel);
                prevDevState = DEV_NWK_TC_REJOIN_CURR_CHANNEL ;
              }

    应该就可以了

  • 嗯 是的 我把那部分注释掉,然后把这一块的逻辑调整了一下,让终端设备即便掉网了,也是在本信道持续发送重连请求。