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.

[参考译文] CC2652P:ZigBee 终端设备重新加入问题

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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1357610/cc2652p-zigbee-end-device-rejoin-question

器件型号:CC2652P

我的客户正在对 Zigbee 应用使用 CC2652P、但在重新加入测试期间遇到了问题。 在测试中、200个终端设备同时断电并重新通电。 在下电上电后、大多数终端器件可以按预期重新加入、但由于 DEV_END_DEVICE_UNauth 的复位计时器、少数器件无法重新加入。

重新加入期间、普通器件的状态机为 DEV_init -> DEV_Nwk_SEC_REGING_CURR_CHANNEL -> DEV_END_DEVICE ->失败的器件为  DEV_INIT -> DEV_Nwk_SEC_REGING_CURR_CHANNEL -> DEV_Nwk_SEC_REGING_ALL_CHANNEL -> DEV_ENDEV_END_DEVICE_UNAUTH   我没有找到描述这些状态详细情况的文档、您能否详细说明这些状态代表什么以及器件如何在这些状态之间切换?

客户的目标是避免终端设备因  DEV_END_DEVICE_UNauth 而复位、有没有好的方法?

SDK 版本为 simplelink_cc13xx_cc26xx_sdk_6_40_00_13、该网络具有200个终端设备和20个路由器。

此致、

沭阳

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

    尊敬的沭阳:

    如果这些器件是此时唯一重新加入的器件、我是否正确地假定这些器件会重新加入?  如果是这样、则出现这种行为是因为 Zigbee 父节点有太多的重新加入响应要寻址、因此错过了几个。  您可以为 App_Reset 启动以外的 MAX_DEVICE_UNauth_timeout 设置计时器,并选择自定义方法重新加入超时行为。  这一观察结果也是建议错开器件重新加入时间的原因。

    此致、
    瑞安

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

    您好、Ryan、

    如上所述的沭阳

    失败的设备为  DEV_init -> DEV_Nwk_SEC_REGING_CURR_CHANNEL -> DEV_Nwk_SEC_REGING_ALL_CHANNEL  -> DEV_END_DEVICE_unauth 。 [/报价]

    您能否详细说明一下 器件如何在两种状态之间切换?

    此致、
    新津市

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

    来自 ZD_app.c 中的 App_Process Join

      else if ( devState == DEV_NWK_ORPHAN ||
                devState == DEV_NWK_SEC_REJOIN_CURR_CHANNEL ||
                devState == DEV_NWK_TC_REJOIN_CURR_CHANNEL ||
                devState == DEV_NWK_TC_REJOIN_ALL_CHANNEL ||
                devState == DEV_NWK_SEC_REJOIN_ALL_CHANNEL )
      {
        // results of an orphaning attempt by this device
        if (nwkStatus == ZSuccess)
        {
          //When the device has successfully rejoined then reset retryCnt
          retryCnt = 0;
          bdbSecureRejoinAttempts = 0;
    
          // Verify NWK key is available before sending Device_annce
          // Device performing TC rejoin shall wait until (new) NWK key received
          if ( ZDApp_RestoreNwkKey( TRUE ) == false ||
               devState == DEV_NWK_TC_REJOIN_CURR_CHANNEL ||
               devState == DEV_NWK_TC_REJOIN_ALL_CHANNEL )
          {
            if ( ZSTACK_END_DEVICE_BUILD )
            {
              nwk_SetCurrentPollRateType(POLL_RATE_TYPE_JOIN_REJOIN,TRUE);
            }
            // wait for auth from trust center
            ZDApp_ChangeState( DEV_END_DEVICE_UNAUTH );
    
            // Start the reset timer for MAX UNAUTH time
            ZDApp_ResetTimerStart( MAX_DEVICE_UNAUTH_TIMEOUT );
          }

    此致、
    瑞安