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

请问Zstack的mac层的ack的作用是什么?

1.MAC层ACK不用于确认数据成功,而是拿来做冲突检测和低功耗 。这个观点是对吗?不管是对的还是错的,能解释解释吗?

2.因为协议栈的版本不是最新了,没有child eging但是需要做心跳,所以想问问:APS层和mac层的ack,是在哪儿检测到自己接收到了ACK呢? 

Viki Shi:

1、是用于确认数据成功的

2、APS层发送数据的时候,option是APS_ACK_REQUEST , 返回ZSuccess说明ACK成功

user4733766:

回复 Viki Shi:

我知道心跳可以用返回值来判断(仅仅说明数据包达到了下一跳节点),但是当目的节点不在下一跳的位置而需要进过几个路由器,又怎么判断自己是否接收到了mac层或者是aps层的ack应答呢?   麻烦大牛解释解释,困扰几天了

Aries Lord:

回复 Viki Shi:

纠正一下

1,MAC ACK是广播发送的,MAC层收到ACK后判断不是自己的,会增加CSMA回退(Z-stak的处理在rxStartIsr中好像是直接跳过的)。低功耗节点发送MAC Data Request后,会根据对应的ACK中的PEND标记,确定父节点是否有数据发给自己,并延续20ms的接收,这样既能收到数据又不会浪费能耗。

2,在消息AF_DATA_CONFIRM中判断发送成功,而不是在AF_DataReuqest函数的返回中。AF_DataReuqest返回只是说明发送数据格式正确,数据进入CC2530的发送缓存。

Yue TANG:

回复 user4733766:

mac的ACK就是管点对点的。多跳的ACK需要应用层的ack, 参考zstack developer guide的

第8节.  End-to-end acknowledgements

VV:

为什么要有mac ack,你可以详细参考下IEEE802.15.4的标准!

dong liu9:

回复 Aries Lord:

请问,在收到对方的应答时,AF_DATA_CONFIRM事件下会收到什么消息,意思是我在这个事件下判断什么内容来说明发送成功了?

dong liu9:

回复 VV:

请问通过发送心跳包的方式来判断设备在没在网络中,到底该怎么实现呢?一直搞不懂!1、是节点周期性给路由发送数据,然后等待应答,如果一段时间后节点没收到应答就代表自己不再网络中了?     2、还是路由周期性给节点发,当收不到节点的应答时,说明节点不再网络中了。    时用1的方式还是2的方式呢,而且应答的时间判断怎么实现,期待你的解答

dong liu9:

回复 Yue TANG:

终端设备,发送给某个特定路由和协调器算多跳ack吗,如果算多跳ack,那我在应用层什么地方接受ack?期待您的回答谢谢

dong liu9:

回复 Aries Lord:

发送成功后,在本应用层的AF_DATA_CONFIRM时间下会受到什么内容或者判断什么东西?

dong liu9:

回复 Yue TANG:

看不懂,比如

1、终端节点广播数据给协调器,但是需要确认协调器收到数据,那么在终端节点调用AF_DataRequest( )发送数据时,发送选项需要配置为AF_DISCV_ROUTE||AF_ACK_REQUEST 吗?

2、当协调器收到数据后是自动回复确认信息,还是在应用层的什么地方添加回复内容

3、然后终端节点会在系统消息的AF_DATA_CONFIRM_CMD怎么处理、处理什么?

期待你的回答,先谢谢了

赞(0)
未经允许不得转载:TI中文支持网 » 请问Zstack的mac层的ack的作用是什么?
分享到: 更多 (0)