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.

aps ack返回值

AF_DataRequest发送时打开了AF_ACK_REQUEST选项,使能aps ack,希望得到端到端的ack,而不仅仅是一跳的。

请问,在GenericApp_ProcessEvent中处理AF_DATA_CONFIRM_CMD的时候,如果aps ack失败,返回的错误码是什么,ZApsNoAck吗?

测试结果来看,直连ZC的时候,错误码是ZMacNoACK,mesh的时候,错误码是ZNwkNoRoute,看着像MAC ack。

这样就没法分辨返回的是 MAC ack还是APS ack。应用希望只关心APS ack,再做一些业务处理。

请TI大神帮忙解答一下,谢谢。

  • MAC ACK是点到点的,当节点收到数据的目的地址和自己的MAC add一样的时候,就会回复MAC ACK出去,带有Seq number作为match对象取代了目标地址的功能。其他节点都会收到,但并不会做处理。而APS ACK是应用层的ACK,端到端的,只有Destination得点会发出去,中间的经过的路由不会发送。

    在协议栈的ACK机制中,MAC层ACK是默认开启的。

  • 谢谢,概念知道的。

    我想问的是在AF_DATA_CONFIRM_CMD处理ack的时候,如何判断是不是APS ACK?

    我开了应用层的APS ACK,希望在AF_DATA_CONFIRM_CMD处理APS ACK。

  • 您好,我现在遇到和您一样的问题,请问你解决了吗?
  • 开启APS ACK有多次重传,但是error码并不能准确指示ApsNoAck的情况,MacNoAck和NwkNoRouter的优先级比ApsNoAck更高。
    另外纠正一下Susan Yang的说法,MAC ACK并非无关节点不处理,MAC ACK本身就是广播发送的,在IEEE802.15.4的早期规范里,任何节点收到与自己无关的广播MAC ACK,会修正CSMA的定时时间。