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

关于连续调用AF_DataRequest的问题

最近在使用过程中发现,如果在一个循环中多次调用AF_DataRequest的话,如果总的APS payload超过70字节,就会发生有些包没有发送出去的问题。

这个问题的原因,我猜测是ZStack底层的缓冲区有限导致的。

那么问题就来了,怎么才能知道当前AF_DataRequest处于可以调用的状态呢?只有知道这个我才能设计上层的缓冲机制,从而避免短时间内多次调用AF_DataRequest产生的丢包问题

VV:

当应用层的Payload超过单包能发送的Payload以后,底层会自动实现分包发送。

你出现丢包的原因可能是快速连续调用AF_DataRequest

建议你在两次调用AF_DataRequest的时候,最一点延时。

chengzi chen:

回复 VV:

VV您好,连续的两次调用AF_DataRequest加多少延时比较合适,我在做的是两次AF_DataRequest间隔500ms,end device端不会马上收到coordinator发送的包,有的包会延时几百个ms.

Ant Killer:

回复 chengzi chen:

个人觉得,按照经验也好,或者实测也好,确定一个延时,并不是个好办法,而是个无奈的办法。难道协议栈就没办法指示它的发送通道是否有空闲?

VV:

回复 chengzi chen:

协调器的数据到End Device的时间,是取决于End Device的data Request的时间。

协调器刚开始是把数据buffer在底层,等待End Device来Data Request的时候才把数据发出去的。

赞(0)
未经允许不得转载:TI中文支持网 » 关于连续调用AF_DataRequest的问题
分享到: 更多 (0)