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:AP ACK检查

Guru**** 2539500 points
Other Parts Discussed in Thread: Z-STACK

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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/574193/cc2538-aps-ack-checking

部件号:CC2538
主题中讨论的其他部件:Z-stack

您好,TI:

快速提问。

如何检查终端设备是否收到APS ACK? 如何将其与应用程序代码中的MAC ACK区分开来?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    1.您可以在AF_DataRequest的选项参数中使用AF_ACK_REQUEST从目的地请求APS ACK。
    2.您可以找到zcl_registerClusterOptionList是在zcl.c中实现的
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您的意思是有两种方式? 还是以上两种方法之一?

    我已经在选项参数的AF_DataRequest中使用了AF_ACK_REQUEST。 我可以在Ubiqua中看到,但我需要在我的应用程序代码中有一个国家/地区来计算APS ACK的数量。

    我知道AF_DATA_CONFIRM_CMD可以检查MAC ACK。 如果它还可以检查APS ACK,那么如何区分它是Mac还是AP?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    1.能否指定在APS ACK上测试的Z-Stack版本和示例?
    2. AF_DATA_CONFIRM_CMD用于APS ACK而非MAC ACK。 Mac ack不会设置为应用程序。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我使用的是Z-Stack Home版本1.2 .2a。

    我做的第一件事是,我向协调员发送了一个虚拟数据包,但AF_DataRequest选项中没有AF_ACK_REQUEST。 当我在AF_DATA_CONFIRM_CMD中断点时,afDataConfirm有数据。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果afDataConfirm有数据,您似乎已经获得APS ack。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这没有意义,因为我没有在选项中使用AF_ACK_REQUEST,但我在AF_DATA_CONFIRM_CMD中获得了一些信息。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在AF_DATA_CONFIRM_CMD中,我将检查序列号以确保它是我所需的APS ACK。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    afDataConfirm_t结构没有序列号:

    typedef结构

    OSAL_EVENT_HDR_t HDR;
    UINT8端点;
    UINT8 TransID;
    } afDataConfirm_t;


    这取自:

    案例AF_DATA_CONFIRM_CMD:
    //此消息作为发送数据包的确认信息接收。
    //状态为ZStatus_t类型[在ZComDef.h]中定义]
    //消息字段在AF.h中定义
    afDataConfirm =(afDataConfirm_t *) MSGpkt;

    sentEP = afDataConfirm->端点;
    (void)sentEP;//此信息现在未使用
    sentTransID = afDataConfirm->transID;
    (void)sentTransID;//此信息现在未使用

    sentStatus = afDataConfirm->hdr.status;
    //收到确认时采取的操作。
    如果( sentStatus != ZSuccessess )

    //数据没有发送--做点什么
    }
    中断;
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    afDataConfirm->transID是我的意思是序列号。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果我在此功能中手动增加transID:

    afStatus_t AF_DataRequest( afAddrType_t *dstAddr,endPointdesc_t *srcEP,
    UINT16 CID,uint16 len,uint8 * buf,uint8 * transID,
    UINT8选件,uint8 radius (uint8半径)

    和SET OPTIONS = AF_DISCOP_ROUTE,然后我检查AF_DATA_CONFIRM_CMD,它已在AF_DataRequest中递增。

    我不认为我真正检查的是真正的APS ACK。 我认为它仍然是MAC ACK。 是否可以验证此问题?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我在我的应用程序中使用APS ACK,它可以与transID正常配合使用。 我建议您使用Ubiqua Packet Analyzer同时检查无线消息以进行验证。