一、L2CAP概述

1、L2CAP:即Logical Link Control and Adaptation Layer Protocol,是介于上层和底层(例如HCI)之间的一种数据交互的媒介

主要功能:

1)Protocol/channel multiplexing,协议/通道的多路复用;

2)Segmentation and reassembly,上层应用数据(即L2CAP Service Data Units,SDUs)的分割和重组;

3)Flow control per L2CAP channel,基于L2CAP Channel的流控机制;

4)Error control and retransmissions,错误控制和重传机制;

5)Support for Streaming,支持流传输(如音频、视频等,不需要重传或者只需要有限重传);

6)Fragmentation and Recombination,PDU(Protocol Data Unit)的分片和重组

7)Quality of Service,QoS的支持。

2、相关概念

(1)Upper layer:表示L2CAP的上层(统称Service Level Protocol),和L2CAP层之间使用SDU进行数据交互

(2)Lower layer:表示L2CAP的底层(在Controller内部,可以认为是HCI),和L2CAP之间使用PDU(或者PDU碎片)进行数据交互

(3)L2CAP channel:两个设备之间的逻辑链路,每个L2CAP channel都会用CID(Channel Identifiers)表示

(4)SDU或者L2CAP SDU:Service Data Unit,即L2CAP和上层交互用的数据包

(5)Segment或者SDU segment: SDU的一部分,在Enhanced Retransmission、Streaming、 Retransmission和Flow Control模式会用到,Basic L2CAP模式不会用到

(6)PDU或者L2CAP PDU:Protocol Data Unit,即L2CAP和底层交互用的数据包,以Basic L2CAP header开头,分为:B-frames、I-frames、S-frames、C-frames和G-frames.

(7)Basic L2CAP header:PDU的开头,包含数据长度和CID

(8)B-frame :即Basic information frame,用于Basic L2CAP模式的PDU,组成:Basic L2CAP header、一个完整的SDU。

(9)I-frame:即Information frame,在Enhanced Retransmission、Streaming、 Retransmission和Flow Control模式会用到,组成:Basic L2CAP header、一个SDU segment、一些额外的协议信息

(10)S-frame:即Supervisory frame,在Enhanced Retransmission、Retransmission和Flow Control模式会用到,这里面只包含协议信息,不包含SDU数据,组成:Basic L2CAP header、协议信息

(11)C-frame:即Control frame,这里面包含的是L2CAP signaling消息,C-frame是用在L2CAP signaling通道上的,组成:Basic L2CAP header、L2CAP signaling消息

(12)G-frame:即Group frame,只能用来Connectionless L2CAP通道上,用于单播或者组播,组成:Basic L2CAP header、一个完成的SDU、和PSM

(13)LE-frame :即LE Information frame,用于LE Credit Based Flow Control模式,组成:Basic L2CAP header、一个SDU segment、一些额外的协议信息

(14)Fragment:PDU的一部分,用于和底层的数据交互

(15)MTU:即Maximum Transmission Unit,SDU的最大size

(16)MPS:即PDU payload Size,PDU的最大负载size,所以在Basic L2CAP模式下或者没有碎片的情况下,MTU=MPS

(17)MTUsig:即Signaling MTU,Signaling SDU的最大size,也是C-frame除了Basic L2CAP header以外剩余的size

(18)MTUcnl:即Connectionless MTU,即G-frame除了Basic L2CAP header以外剩余的size

(19)MaxTransmit:Enhanced Retransmission和Retransmission模式下,PDU的最大重传次数,最小值是1,设置1表示禁止重传(注意:Enhanced Retransmission模式下这个值可以设置为0,表示无限重传)

3、CID(channel identifier)

(1)CID用来表示L2CAP channel的。本地设备和多个远端设备连接时,本地设备和每个远端设备都有一套独立的CID,不同远端设备之间的CID可能相同,他们之间是通过逻辑链路来区分的。

(2)CID分为NULL CID(0x0000)、Fixed Channels CID(0x0001-0x003F)和dynamically allocated CID(0x0040-0xFFFF)

注意:CID在ACL-U、AMP-U、LE-U逻辑链路上的命名区间是不一样的,ACL-U和AMP-U共享一个命名区间:

LE-U的命令区间:

(3)L2CAP command和event流程图:

(4)L2CAP channel的五种操作模式:

(a)Basic L2CAP Mode:默认模式,最常用的一种模式,如果两个设备其他模式都失败,那么可以使用这种模式

(b)Flow Control Mode:这种模式下不会重发,但是会检测和报告丢失的PDUs

(c)Retransmission Mode:这种模式要保证所有的PDUs都发送到对方设备,有一个定时器,如果没有发送到对方设备,定时器超时会重发,还可以设置重发次数(go-back-n)

(d)Enhanced Retransmission Mode:这种机制和Retransmission Mode相似,但是增加了一个POLL位(请求远端设备回复)、SREJ S-frame(提高错误检测的有效性)和RNR S-frame(代替R-bit,用来报告本地设备处于忙碌状态)

注意:Flow Control mode、Retransmission mode和Enhanced Retransmission mode时,PDUs都会被编号并被识别(注意:这里面的识别都是对方确认收到的意思)

Streaming Mode:这种模式用于实时同步数据交互时,PDUs会被编号但是不会被识别,发送端要有超时机制用来处理未及时发送的数据,接收端如果满了会覆盖之前收到的PDUs,同时报告被覆盖的PDU丢失。

(e)LE Credit Based Flow Control Mode:只能用于LE L2CAP channel

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值