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.

[参考译文] ZED 使用的通道的更改顺序。

Guru**** 661510 points
Other Parts Discussed in Thread: CC2538, CC2650, Z-STACK
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1250964/the-sequence-in-which-the-channel-used-by-the-zed-is-changed

器件型号:CC2650EMK
主题中讨论的其他器件:CC2538CC2650Z-stack

您好!  

我已经 开发了 基于 Z Stack 1.2.2HA 的 Zigbee 终端设备 (CC2650),这些设备可以与协调器 CC2538通信。

我正在调查 ZED 在重新连接序列期间失败时的 Z-stack 程序。
(ZD8p.c、ZD8p_NetworkProcessJoin 具有 nwkStatus 的函数! =成功)
如果 prevDevState 为 DEV_NWK_SEC_REJING_ALL_CHANNEL、
runtimeChannel =(UINT32)(1L <<_NIB.nwkLogicalChannel);
出现上述程序以更改 ZED 使用的通道。 我的理解是否正确?

另外、假设此代码执行重新连接序列期间需要3个故障、我的说法是否正确?

如果有任何帮助,将不胜感激。

此致、  
村田裕也

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    1.当器件确实重新加入时、它将首先尝试连接先前加入的通道、即_NIB.nwkLogicalChannel/

    2.您的意思是:"重新连接序列中需要3次失败才能执行此代码?"

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的答复。

    1.当器件确实重新加入时、它将首先尝试连接先前加入的通道、即_NIB.nwkLogicalChannel/

    我知道 ZED 在初次尝试时使用相同的频道重新加入。
     当第二次或第三次重新加入失败时、信道似乎已更改。
    (请 参阅下面代码中带下划线的部分)。

    此致、

    ZD8p.c、ZD8p_ProcessNetworkJoin ()、  

    如果(nwkStatus == ZSuccessess)
    ~~~
    ~~~

    否则
    {
    if ( devStartMode == mode_resume )
    {
     如果(++tryCnt <= MAX_RESUME_RETRY)
     {
      if (_NIB.nwkPanId == 0xFFFF )
        devStartMode = MODE_JOIN;
      否则
      {
        devStartMode = MODE_REJINK;
        tmpRejoinState = true;
        prevDevState = DEV_NWK_SEC_REJING_CURR_CHANNEL;
       }
      }
      //在重新加入某些次后正常加入网络
      else if ( AIB_apsUseInsecureJoin == true )
      {
       devStartMode = MODE_JOIN;
      }
     }

    否则、if (devStartMode == MODE_REGIN)
    {
     if ( ZStack_end_device_build )
     {
      devStartMode = MODE_REJINK;
      tmpRejoinState = true;
      _nib.nwkState = NWK_init;

      if (prevDevState == DEV_NWK_SEC_REGUING_CURR_CHANNEL)
      {
       runtimeChannel = MAX_CHANNEL_24GHz;
       prevDevState = DEV_NWK_SEC_REJING_ALL_CHANNEL;
      }
     否则为(prevDevState =DEV_Nwk_SEC_REGUING_ALL_CHANNEL)
     {
      //设置要求设备重新加入信任中心网络层的标志。
      _NIB.nwkKeyLoaded = false;
      ZApp_ResetNwkKey ();//清除旧的网络密钥。
      runtimeChannel =(UINT32)(1L <<_NIB.nwkLogicalChannel);
      prevDevState = DEV_NWK_TC_REJING_CURR_CHANNEL;
      }
      否则,如果(prevDevState == DEV_NWK_TC_REGUING_CURR_CHANNEL)
      {
      runtimeChannel = MAX_CHANNEL_24GHz;
      prevDevState= DEV_NWK_TC_REJING_ALL_CHANNEL;
      }

     }

    f8wConfig.cfg

    //*默认通道是通道11 - 0x0B */
    //通道定义如下:
    // 0:868 MHz 0x00000001
    // 1 - 10:915MHz 0x000007FE
    // 11 - 26:2.4GHz 0x07FFF800
    //
    //-DMAX_CHANNEL_868MHz 0x00000001
    //-DMAX_CHANNEL_915MHz 0x000007FE
    //-DMAX_CHANNEL_24GHz 0x07FFF800
    //-DDEFAULT_CHANLIST=0x04000000 // 26 - 0x1A
    //-DDEFAULT_CHANLIST=0x02000000 // 25 - 0x19
    //-DDEFAULT_CHANLIST=0x01000000 // 24 - 0x18
    //- DDEFAULT_CHANLIST=0x800000 // 23 - 0x17
    //- DDEFAULT_CHANLIST=0x00400000 // 22 - 0x16
    //- DDEFAULT_CHANLIST=0x00200000 // 21 - 0x15
    //-DDEFAULT_CHANLIST=0x00100000 // 20 - 0x14
    //-DDEFAULT_CHANLIST=0x00080000 // 19 - 0x13
    //- DDEFAULT_CHANLIST=0x00040000 // 18 - 0x12
    //- DDEFAULT_CHANLIST=0x00020000 // 17 - 0x11
    //- DDEFAULT_CHANLIST=0x00010000 // 16 - 0x10
    //-DDEFAULT_CHANLIST=0x00008000 // 15 - 0x0F
    //- DDEFAULT_CHANLIST=0x00004000 // 14 - 0x0E
    //- DDEFAULT_CHANLIST=0x00002000 // 13 - 0x0D
    DDEFAULT_CHANLIST=0x00001000 // 12 - 0x0C
    //-DDEFAULT_CHANLIST=0x00000800 // 11 - 0x0B

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    设备会在开始时尝试原始信道、如果无法在原始信道上重新加入、则会尝试其他信道。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如果我不想更改频道、我可以评论一下代码中带下划线的部分吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我想您应该始终使用 runtimeChannel =(UINT32)(1L <<_NIB.nwkLogicalChannel); 如果您不想更改频道。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    非常感谢。
    我会尽量听取你的意见。