|
查看: 7|回复: 0

[BLE SDK] 接收长包后断链,如何判断接收buffer是否已满?

[复制链接]

145

主题

338

回帖

1584

积分

管理员

积分
1584
发表于 昨天 10:43 | 显示全部楼层 |阅读模式 来自 上海
Information
说明:   建议参照本版块置顶帖内容输入必要信息
芯片型号: -
SDK及版本: -
设备接收长包(大包数据)时,出现收了几包后连接断开的情况,如何判断底层接收 buffer 是否已满?底层会不会因为 buffer 覆盖导致数据错乱?

回答:

1、现版本 SDK 不存在底层接收 buffer 覆盖的问题:底层会检测接收 buffer 是否用完,如果用完就不会再回 ACK,对端会重传。

2、可以这样查看接收 FIFO 是否已满:
  1. ((u8)(blt_rxfifo.wptr - blt_rxfifo.rptr) & 63)
复制代码

当该值接近 buffer 深度时,说明接收 FIFO 已满,应用层需要及时取走数据。

3、排查方向:确认应用层是否及时处理了接收数据(特别是长包分片时),以及对端是否在 buffer 满时仍持续发包导致超时断链。

本版积分规则

关注公众号
隐私政策|Telink forum

相关侵权、举报、投诉及建议等,请发 E-mail:forum@telink-semi.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.|沪ICP备17008231号-1 |沪公网安备31011502403548号

在本版发帖返回顶部