zigbee协议栈,如果一个终端给路由器或者协调器发送数据,发送成功的话,协调器或者路由器会有一个应答机制回复终端发送成功吗?如果有,那么又是怎么发生这个过程,丢包又怎么会出现;如果没有,是否自己需要设置一个应答来返回给终端。
Susan Yang:
一般数据的发送是由AF_DataRequest来完成的。AF_DataRequest 函数的调用会触发afDataConfirm(…)函数,数据的发送结果也由afDataConfirm(…)函数返回.
Viki Shi:
有应答机制。但是丢包还是会出现,收不到ACK的情况也有
mingze peng:
回复 Susan Yang:
你的意思afDataConfirm函数是除了确认终端已经把数据发送出去,还可以确认协调器是否已经收到数据,并且能返回一个应答让终端响应
mingze peng:
回复 Viki Shi:
那么这个应答机制有具体的函数或者接口表示出来么
Susan Yang:
回复 mingze peng:
当数据到了接收方的MAC层,对方会回复一个MAC ACK,然后发送方在收到这个MAC ACK以后,会从底层发送一个AF_DATA_CONFIRM_CMD到应用层。
当数据到了接受放的应用层,则会回复一个APS ACK。MAC ACK是默认常开的,而APS ACK需要使能AF_ACK_REQUEST
mingze peng:
回复 Susan Yang:
AF_ACK_REQUEST好像只有单播的时候用到,广播和绑定机制可以用吗