蓝牙单连接间隔下多ATT数据包传输交互流程问询
BLE ATT大文件分块传输的连接间隔内流程判定
两种传输流程均存在,具体取决于你采用的ATT/GATT交互模式:
- 若使用标准ATT请求-响应模型(比如主动拉取数据的
ATT_READ_REQ/ATT_READ_BLOB_REQ操作),对应第二种传输流程ATT协议原生为单请求-单应答的同步设计,每一个ATT响应必须对应一个独立的请求。你需要拉取3个最大载荷的数据包,就需要主机依次发送3次读请求,每次请求指定对应的文件偏移,因此单连接间隔内的传输序列和你描述的第二种完全一致:
M->S、IFS、S->M(p1)、IFS、M->S、IFS、S->M(p2)、IFS、M->S、IFS、S->M(p3)、IFS - 若使用GATT通知/指示推送模型,且主机已经提前开启对应特征的通知权限,对应第一种传输流程
通知、指示类PDU是从机主动发起的传输,不需要主机逐次发送请求触发。只要当前连接间隔的剩余时长足够承载3个数据包的传输,从机就可以在收到主机的一次启动传输请求后,按照IFS间隔连续发送p1、p2、p3三个数据包,中间不需要主机插入额外请求,和你描述的第一种传输序列一致。
如果你要最大化单连接间隔的传输效率,优先选择通知推送模式,可减少多次请求带来的带宽损耗。如果必须使用请求-响应模式,也可开启ATT请求队列,在连接事件前半段一次性发送所有读请求,后半段连续接收响应,同样能接近第一种流程的吞吐量。
内容的提问来源于stack exchange,提问作者Talia
相关产品推荐
相关产品推荐

