协议栈版本Z_Mesh V1.0.0,一个协调器,一个路由,两者相隔不超过5米,点播发送。测试说明,模拟OAD更新测试,协调器发送数据给路由,路由不需要回复,只做一件事,直接串口输出接收到的所有数据。协调器每次发送一包数据(64Bytes)后收到AF_DATA_CONFIRM_CMD事件Success返回后才继续发送,失败则延时1~2秒再进行重发,主要观察发送数据的准确性以及重传的现象。从抓包数据可以看出,连续发送数据一段时间后,协调器发送的数据会出现错误,比如64个字节会少了一些字节,并且通过路由接收端输出的数据对比,确实是少了字节。此外通过抓包还看到,有些数据协调器发出来了(即收到了AF_DATA_CONFIRM_CMD事件Success返回),但接收端并没有收到。现在就想确定,AF_DATA_CONFIRM_CMD事件能否准确反映数据已经发到对方处?还是发送数据量大等其它原因导致数据出现错乱,丢包等现象。麻烦各位TI的技术解答一下。
Alvin Chen:
数据到了接收方的MAC层,接收方会回复一个MAC ACK,然后发送方在收到这个MAC ACK以后,会从底层发送一个confirm到应用层。
YiKai Chen:
當有收到AF_DATA_CONFIRM_CMD就代表接收端有收到,這是確定的
zexin zeng:
回复 YiKai Chen:
我一开始也是这么认为,但我这边反复测试发现的结果就是发送端收到成功返回,但接收端确实没有收到。
zexin zeng:
回复 Alvin Chen:
现在的问题是,发送端收到成功的confirm,但数据并没有去到接收端。
YiKai Chen:
回复 zexin zeng:
試試在接收端設個斷點在afIncomingData裡面用IAR調適看看吧