一个协调器 一个节点 ZHA1.22a,协调器收到串口数据通过无线转发给节点,通过串口打印发现偶尔有AF_DataRequest()返回成功,抓包却没有这个数据的情况。
相同的程序,使用cc2538作为协调器就会出现这个情况,cc2530作为协调器却没有这种情况。
xiaoming huang1:
请问TI的大神们,AF_DataRequest()返回0x00 可以确定数据被发送出去吗
Susan Yang:
回复 xiaoming huang1:
请问您是否有收到AF_DATA_CONFIRM_CMD?当option中使能了AF_ACK_REQUEST时,会有AF_DATA_CONFIRM_CMD事件返回
Aries Lord:
回复 xiaoming huang1:
不能,返回0x00只是表示数据只是到了NWK层的buffer里面,你的AF_DataRequest函数返回速度取决于你cortex M3 MCU的处理速度,而buffer里面的数据到射频取决于IEEE802.15.4的250kbps的速度。
buffer里面的数据是否发出去,在消息AF_DATA_CONFIRM_CMD中查询返回的status,该消息由发射FIFO发射完后的中断产生。
xiaoming huang1:
回复 Aries Lord:
感谢Susan Yang 和 Aries Lord的回复! 使能AF_ACK_REQUEST是于增加了AF层的重发机制,当消息得不到APS层应答时,会重发。 我在Z-Stack Home 1.2.2a.44539的SampleDoorLock上只增加 间隔200ms发送数据及打印 的功能,且不使能AF_ACK_REQUEST,当做协调器测试数据传输成功率,数据中的序列号依次增加,以此判断是否丢包。sniffer抓包256包中有10包数据没有发送出来,但串口打印出所有序列号,及zcl_SendCommand的返回值0x00,有可能是什么愿意能导致丢包呢?1.psd
xiaoming huang1:
回复 xiaoming huang1:
最终发现是供电的原因,换了一个更好的电源就没有丢包的情况了
sg cai:
回复 xiaoming huang1:
您好,请问您是怎么定位到供电影响的,方便透露下吗
xiaoming huang1:
回复 sg cai:
你也碰到类似的情况了吗?方便说下吗?
sg cai:
回复 xiaoming huang1:
就有观测到你标题描述的情况,不知道怎么定位问题了就问下