蓝牙那些事儿(5)——关于重传

终于讲到l2cap层了。

L2CAP的功能包括 协议/信道复用, 分段重组(segmentation and reassembly, SAR),各信道流控和错误控制

这里的信道不是指的多少频段多少频段的物理信道,而是指l2cap层面向上层应用开放的channel,上层应用就是根据l2cap层的channel id来判断是否是属于自己profiledata的。

我们接着上回没讲完的话题。

基本上大多数情况下,有hci层的流控就够了,但是好歹l2cap是提供了这个服务的,我们学习一下总没错。

L2cap的逻辑信道可以工作在5种不同的模式下(可以理解为5种不同的使用场景)

1、Basic L2CAP Mode(equivalent to L2CAP specification in Bluetooth v1.1) 默认模式,在未选择其他模式的情况下,用此模式。
2、Flow Control Mode 此模式下不会进行重传,但是丢失的数据能够被检测到,并报告丢失。
3、Retransmission Mode 此模式确保数据包都能成功的传输给对端设备。
4、Enhanced Retransmission Mode 此模式和重传模式类似,加入了Poll-bit等提高恢复效率。
5、Streaming Mode 此模式是为了真实的实时传输,数据包被编号但是不需要ACK确认。设定一个超时定时器,一旦定时器超时就将超时数据冲掉。
6、LE Credit Based Flow Control Mode 被用于LE设备通讯。

一般来说,我们工作在第一种模式,这种模式下,l2cap层是没有流控和重传的。

蓝牙的重传其实在LC层已经有了,通过ARQ,基本上是一问一答的形式。

L2cap层的重传其实应该和流控放在一起讲,在flow control mode和retransmission mode下,有一种s-frame的专用包,其中包含了seq number的信息(注意,在lc层提供的seq,只有0和1两种,因为lc层的arq机制是严格的一问一答,所以seq只有0和1就够了)

L2cap层有点不同,可以设置一个tx window,连续发送多包之后,再要求对方应答,这样带来的好处是效率的提升。

下面是重传模式的时序图:

流控模式和重传模式的区别是,流控模式下不重传,但是会报告丢包。

复习一下流控和重传:

蓝牙的重传和流控一般来说LC层就可以coverl2cap层虽然提供了相关服务,但是实际应用中很少使用到。对于LC层来说,重传基于ARQ机制,流控取决于controller buffe,由LC层更新packet header中的flow位。另外,对于本地的hci transport接口,存在两种流控,一是hci command,通过hci command complete event进行流控,一般的controller只支持单命令;二是hci acl data,存在两个方向的流控,通过hci read buffer size commandhci host buffer size commandhci host number of completed packets commandhci number of completed packets event四个命令、事件进行流控。

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值