TI中文支持网
TI专业的中文技术问题搜集分享网站

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大神帮忙解答一下,谢谢。

Susan Yang:

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

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

chao wang22:

回复 Susan Yang:

谢谢,概念知道的。

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

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

Brightness L:

回复 chao wang22:

您好,我现在遇到和您一样的问题,请问你解决了吗?

Aries Lord:

回复 chao wang22:

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

赞(0)
未经允许不得转载:TI中文支持网 » aps ack返回值
分享到: 更多 (0)