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.

[参考译文] CC2538:在 devState = DEV_END_DEVICE_UNauth 后旁路器件复位

Guru**** 2465890 points


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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1176456/cc2538-bypass-device-reset-after-devstate-dev_end_device_unauth

器件型号:CC2538

您好!

由于实时 并发症,我想删除 ZDUApp_ResetTimerStart (MAX_DEVICE_unauth_TIMEOUT); 在 ZDApp 中:

      if ( ZG_SECURE_ENABLED && ( ZDApp_RestoreNwkKey( TRUE ) == false ) )
      {
        // 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 );
      }

我不想重置设备、而是继续扫描要加入的网络。

是否有人可以指导我如何执行此操作?

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

    Panagiotis、您好!

    这与 此 E2E 主题的调查类似。  您可以选择创建一个不同的计时器、该计时器使用 SystemResetSoft 在不调用 zgWriteStartupOptions 的情况下重置器件(请参阅 ZDApp 中的 ZDO_DEVICE_RESET 事件)、或将器件 ZDApp 状态恢复为 devStartMode = MODE_REjoined、 _tmpRejoinState = true、 和 _nib.nwkState = nwk_init (请参阅 mode_rejoin devStartMode 实例)以再次尝试加入过程。

    此致、
    Ryan

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

    我通过写以下内容修复了它:

    if ( ZG_SECURE_ENABLED && ( ZDApp_RestoreNwkKey( TRUE ) == false ) )
    {
    // wait for auth from trust center
    ZDApp_ChangeState( DEV_END_DEVICE_UNAUTH );
    
    devStartMode = MODE_JOIN;
    _NIB.nwkState = NWK_INIT;
    ZDApp_ResetNwkKey(); // Clear up the old network key.
    // Clear the neighbor Table and network discovery tables.
    nwkNeighborInitTable();
    NLME_NwkDiscTerm();
    // setup a retry
    ZDApp_NetworkInit(10000);

    我已经用两个协调器对其进行了测试。 一个具有相同的 TC link 密钥、另一个具有不同的密钥。 当我尝试使用不同的 TC 密钥加入协调器时、它会输入上面的代码并重新启动 DEV_NWK_DISC 的 DEV 状态 、之后、当我尝试使用相同的密钥加入协调器时、它会按预期加入。

    我知道、在执行上述代码之前、我必须创建一个计时器来等待器件是否成功加入、但现在、我已经制定了一个临时解决方案来查看它是否起作用。

    我还有一个问题。 我们已将器件设置为能够在启动后的前30分钟加入网络。 上述任何代码是否对启用加入计时器有任何影响? 我的意思是、无论发生什么情况(设备加入网络除外)、它都会扫描网络以加入30分钟。

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

    我不希望启用加入计时器受到影响、但如果对 ZDApp 进行了更改、您应该进一步测试和验证您的应用。

    此致、
    Ryan

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

    很棒!!!

    感谢您的帮助!!!