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:Zed 进程不检查目的 IEEE 地址,而是保留来自父级的请求广播

Guru**** 2595805 points


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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1073271/cc2652p-zed-processes-leave-request-broadcast-from-parent-without-checking-destination-ieee-address

部件号:CC2652P

在 SDK 5.40中,有一个问题(ZigBee-1515)被告知已解决,但我认为不是这样。

在 ZigBee R22中,当父节点的子列表表中没有此终端设备的信息时,父节点将向终端设备发送 NWk-leave-request-command。 并且启用了此  Nwk-leave-request-command 的“重新加入”标志,并且它没有 IEEE 地址。  

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

    您好,Aries,

    这是我们之前 的 E2E 线程。  

    Zigbee PRO 规范以3.6.1.10.3.1的形式声明:“如果设备是 ZigBee 协调器 ,或者消息已发送到广播地址,则应删除该消息,不应执行进一步的处理。”  ZDO_ProcessMgmtLeaveReq 现在以静默方式丢弃任何广播的数据包来解决这一问题:

      if (inMsg->wasBroadcast)
      {
        // 3.6.1.10.1 R22 - silently discards leave frame if broadcast
        return;
      }

    您的设置是否没有观察到这一点?  另一项更改是,如果不是目标节点,终端设备将不会停止轮询:

      if ( ZG_BUILD_ENDDEVICE_TYPE )
      {
        // Stop polling if not rejoining network and the Leave is destined for this device
        if ( (req.rejoin == FALSE) && (req.extAddr == NULL) )
        {
          // Stop polling and get ready to reset
          nwk_SetCurrentPollRateType(POLL_RATE_DISABLED,TRUE);
        }
      }

    此致,
    瑞安

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

    这是否意味着,如果需要删除终端设备,信任中心应该向 其父节点发送 MgmtLeaveReq 命令。 现在,广播发送已不再有效,信任中心应该记住每台终端设备的父节点?

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

    我理解您的意思,并要求研发团队进一步解释规范的意图。   您可以选择仅放弃 ZG_Build _ENDDEVICE_TYPE 节点的广播管理休假请求,但这可能与规范不一致。

    此致,
    瑞安

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

    如果终端设备的父节点不是信任中心,则 turst-center 可以通过直接向其发送任何命令来启动它吗? 过去,信任中心应该知道终端设备的父节点的短地址。

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

    终端设备应仅接受其直接父设备的休假请求。  因此,信任中心(通常是 ZC)需要知道父节点的地址,才能发出管理假请求,让 ZR 处理并转换为向 Zed 发出的 Nwk 休假请求。

    此致,
    瑞安

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

    许多其他信任中心很难知道父节点的地址。 在 SDK 5.40中,我发现终端设备可以接受  由其父节点中继的管理离开请求。

      if ( ( ZG_BUILD_ENDDEVICE_TYPE ) && ( ZG_DEVICE_ENDDEVICE_TYPE ) )
      {
        // 3.6.1.10.3 R22 - silently discard leave frame not delivered by parent device
        if(inMsg->macSrcAddr != _NIB.nwkCoordAddress)
        {
          return;
        }
      }

    这些代码表示,无论由谁生成,终端设备都只接受由其父节点中继的命令。

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

    我已经向软件开发部确认,这是根据 Zigbee 规范的解释而设计的。  您可以通过删除代码或在 TC 上创建查找表来选择打破此规范要求。

    此致,
    瑞安

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

       按照软件开发的设计代码,TC 不需要 查找表。 “inMsg->macSrcAddr”表示该命令由父节点中继。生成此命令的用户并不重要。

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

    您能否向我显示一个嗅探器日志,其中显示父母从 ZC 转发管理假请求,而不是将其转换为孩子的休假请求?

    此致,
    瑞安

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

    我 没有在设备上运行新的 SDK。 但是,该代码可以证明这一点。

      if ( ( ZG_BUILD_ENDDEVICE_TYPE ) && ( ZG_DEVICE_ENDDEVICE_TYPE ) )
      {
        // 3.6.1.10.3 R22 - silently discard leave frame not delivered by parent device
        if(inMsg->macSrcAddr != _NIB.nwkCoordAddress)
        {
          return;
        }
      }

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

    感谢您的澄清。

    此致,
    瑞安