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.

[参考译文] CC2530:在ZStack 3.0 .2中,如果在等待APS-ACK时终端设备丢失了父设备,它将丢失afDataConfirm。

Guru**** 2467600 points
Other Parts Discussed in Thread: Z-STACK, SIMPLELINK-CC13XX-CC26XX-SDK

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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1090426/cc2530-in-zstack-3-0-2-if-end-device-lost-parent-when-wait-aps-ack-it-will-miss-afdataconfirm

部件号:CC2530
主题中讨论的其他部件:Z-stackSIMPLELINK-CC13XX-CC26XX-SDK

我的非困端设备正在等待APS-ACK,AF-request-packet已通过其父节点转发到目标节点。 当我强制关闭目标节点电源时,终端设备将等待18秒。 当终端设备等待APS-ACK时,我强制关闭父设备电源,终端设备将触发"ZDO_SyncIndicationCB",但 afDataConfirm不会触发。

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

    您好,Aries:

    感谢您的通知,此案例需要由您的申请处理。

    此致,
    Ryan

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

    在结束设备触发 "ZDO_SyncIndicationCB"后,如何强制我的应用程序触发"afDataConfirm"作为"APS-Ack timeout error"?   当触发"ZDO_SyncIndicationCB"时,APS-Ack等待计时器是否会释放?

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

    TI是否知道此问题并为较新的Z堆栈修复了它? 是否在简化SDK上出现此问题?

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

    您可以使用相关的EP,transID和状态(ZMacTransactionExpired)直接调用afDataConfirm。  ACK计数器由 Z-Stack的RTG层处理,无论ZDO行为如何,计数器都将过期/清除。

    我尚未确认SIMPLELINK-CC13XX-CC26XX-SDK上是否存在此类行为,是否存在问题取决于对问题的解释。  如果设备是孤立的,则显然不会接收APS ACK数据包。  这也可能是应用程序解释的内容。

    此致,
    Ryan

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

    如果Zed成为孤立,则应 尽早完成等待。

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

    当Zed孤立时,我的程序需要获取哪个AF-Request正在等待中。  ZStack中是否有APS-Ack等待计时器?

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

    Z-Stack中没有APS ACK计时器。  建议将 APSC_ACK_WAY_DURATE_Polled×2*APSC_MAX_FRAGE_RETRIES短于 MAX_poly_failure_retriES*pol_rate。  这是为了避免在消息仍在等待确认之前孤立。  如果Zed变为孤立,则它知道它已完成等待AF请求。

    此致,
    Ryan

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

    我 的APSC_ACK_WAY_DURATION轮询为"3000",但为什么发件人在6秒后传输重试数据包?

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

    当终端设备丢失其父设备时,重建路由路径需要时间,我认为不接收APS ack是正常现象。 我认为您的应用程序可以在未收到APS ACK时重新发送消息。

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

    AF_DATA_CONFIRM_CMD事件应在AF_DataRequest随时返回"成功"时触发。 如果Zed在等待APS-Ack时丢失其父项,则堆栈下层应触发 AF_DATA_CONFIRM_CMD事件 以通知应用程序。

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

    从Z-Stack用户的角度来看,我不希望发生这种情况,因此我将使用我在之前的答复中提到的解决方法。

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

    我想在"ZDO_SyncIndicationCB"中添加一个函数以执行"afDataConfirm",但我该如何做?

    当"ZDO_SyncIndicationCB"触发时,哪个 端点 和transID正在等待?

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

    如果所有AF_DateRequest都可以触发 确认事件。 应用程序可以在发送前分配缓冲区,在GET CONFIRM事件时释放缓冲区。

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

    启用APS ack后,我通常在收到APS ack后逐个发送消息。 在这种情况下,我将创建一个计时器事件(超时时间较长),以等待检查是否已收到上一个发送消息的APS ack,直到可以发送下一个消息。 对于通过AF_DATA_CONFIRM_CMD事件接收的APS ACK消息,我的应用程序将取消计时器以发送下一条消息。

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

    我还使用 AF_DATA_CONFIRM_CMD事件作为计时器。 无论发送的消息是成功还是失败,  AF_DATA_CONFIRM_CMD事件都将触发。

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

    实际上,我创建了一个单独的计时器事件,而不 是将AF_DATA_CONFIRM_CMD事件用作我的方法的计时器。

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

    APSC_ACK_WAY_DURATION轮询 以2 ms为单位,因此值3000为6秒。

    此致,
    Ryan

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

    在Nwk_global_c中,有 一些参数

    // Maximums for the data buffer queue
    #define NWK_MAX_DATABUFS_WAITING    8     // Waiting to be sent to MAC
    #define NWK_MAX_DATABUFS_SCHEDULED  5     // Timed messages to be sent
    #define NWK_MAX_DATABUFS_CONFIRMED  5     // Held after MAC confirms
    #define NWK_MAX_DATABUFS_TOTAL      12    // Total number of buffers

    APS-Ack等待缓冲区的大小是多少?

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

    我认为没有APS-Ack等待缓冲区。 APS-ACK应直接转至AF传入消息。

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

    但是,当AF_Request等待APS-ACK 并 超时时时,它将触发"afDataConfirm"。 因此必须有APS-Ack超时计时器。

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

    如我所知,Z-Stack会将新的缓冲区附加到指针以进行APS ack检查。 此大小将持续添加,直到Z-Stack无法分配内存。

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

    未被APS ACKed的消息将从Nwk_DATABUF_Sent发送回 Nwk_DATABUF_scheduled状态,该状态将在等待时间结束后过期,同时原始缓冲区将标记为Nwk_DATABUF_Done,以便可以在下次重试时删除/刷新(如果保证)。

    似乎已为SimpleLink SDK开发了一个解决方案: https://e2e.ti.com/f/1/t/109.2052万 

    此致,
    Ryan