蓝牙L2CAP(经典蓝牙)

本文详细解析了BluetoothCoreSpecificationv5.4中L2CAP协议的核心概念,包括SDU和PDU结构、MTU和MPS参数、多种传输模式如基本、流控、重传和增强重传,以及L2CAP通道、B/G/C/I/S/K帧的用途。还介绍了配置过程、数据处理流程和不同控制模式的应用。
摘要由CSDN通过智能技术生成

内容资料来源于 Bluetooth Core Specification v5.4 Vol 3 Part A:Logical link control and adaptation layer protocol specification

1、L2CAP(Logical link control and adaptation layer protocol)

2、功能:多路复用、分段重组

3、架构

4、基本概念

(1)SDU(service data unit),从上层协议或应用传来的数据

(2)PDU(protol data unit),l2cap封装后的数据,PDU的类型有B-frame、I-frame、S-frame、C-frame、G-frame、K-frame

(3)MTU(maximum Transmission Unit), SDU的最大长度

(4)MPS(Maximum PDU payload Size),PDU负载的最大长度

(5)CID(channl identifier),l2cap通道id

(6)MaxTransmit,重传模式和增强重传模式中的最大重传次数

5、传输模式

(1)Basic L2CAP Mode,默认模式,没有流控制,也没有重传,只是收发

(2)Flow Control Mode,流控制模式,不会重传,但可检测到数据丢失

(3)Retransmission Mode,重传模式,有流控制,也会重传

(4)Enhanced Retransmission Mode, 增强重传模式

(5)Streaming Mode,流模式,实时传输,无ack

(6)LE Credit Based Flow Control Mode,(LE的,不管)

(7)Enhanced Credit Based Flow Control Mode,(LE的,不管)

6、L2CAP通道

7、PDU

(1)B-frame,面向连接的通道的数据格式(通道已建立连接),用来传输数据。

(2)G-frame,面向无连接的通道数据格式(通道未连接),用来发送广播数据、发送定向广播数据(指定某个设备的广播数据)

0x0002:固定为0x0002的CID

PSM:Protocol/Service Multiplexer,上层每个协议都会有一个唯一且固定的PSM,相当于上层协议的编号。

(3)C-frame,信号数据格式,用来收发命令的,格式和B-frame一样,但payload有具体规定

payload:

--code:命令类型,可取值如下

--identifier:1个字节,用来匹配命令和回复的,命令和回复中该字节的值应当是相同的

(4)I-frame,用来支持流控制模式(flow control),重传模式(retransmission)和流模式(streaming),详情看相关模式章节

(5)S-frame,S-frames are used to acknowledge I-frames and request retransmission of

I-frames,I-frame的ACK和请求I-frame进行重传,这里具体先不管,看相关传输模式章节
(6)K-frame,挖个坑
(7)LE,LE的

8、L2CAP命令(C-frame里面payload内容)

(1)  reject respone(0x01),commond错误或响应错误时发送reject respone

Reason:被拒绝的原因,可取值如下

Reason data

(2)L2CAP_CONNECTION_REQ(0x02) ,请求建立L2CAP通道连接,内容很简单
Source CID指建立连接后传输数据通道的本地CID,而非命令CID(0x0001)
(3)L2CAP_CONNECCTION_RSP(0x03),请求连接的响应
Result:取值如下
Status:只有当result = Pending时才被定义(只有result=pending时,这个值才是有意义的)
(4)L2CAP_CONFIGURATION_REQ(0x04),更具体的看configuration章节
Flags:只有最低位(bit)是有用的,表明是否支持Extend Flow Specification option(不知道干啥用的)
(5)L2CAP_CONFIGURATION_RSP(0x05)
Flags:两字节,只有最低位是有用的,最低位为Continuation flag,当两边的L2CAP都支持Extend Flow Specification option时,该bit位应当设置为0
result:
(6)L2CAP_DISCONNECTION_REQ(0x06)
(7)L2CAP_DISCONNECTION_RSP(0x07)

9、configuration

(1)configuration

 

Flags:只有最低位(bit)是有用的,表明是否支持Extend Flow Specification option

configuration options:

具体的就不解释了,经典的TLV格式,看一下具体的选项
(2)MAXIMUM TRANSMISSION UNIT (MTU):MTU大小,configuration options如下
(3)FLUSH TIMEOUT OPTION
(4)QUALITY OF SERVICE (QOS) OPTION
(5)RETRANSMISSION AND FLOW CONTROL OPTION
(6)FRAME CHECK SEQUENCE (FCS) OPTION
(7)EXTENDED FLOW SPECIFICATION OPTION
(8)EXTENDED WINDOW SIZE OPTION

10、通用流程

(1) CONFIGURATION PROCESS
(2) FRAGMENTATION AND RECOMBINATION
(3)ENCAPSULATION OF SDUs
(4)DELIVERY OF ERRONEOUS L2CAP SDUS
(5)OPERATION WITH FLUSHING ON ACL-U LOGICAL LINKS
(6)CONNECTIONLESS DATA CHANNEL
(7)OPERATION COLLISION RESOLUTION
(8)PRIORITIZING DATA OVER HCI
(9) SUPPORTING EXTENDED FLOW SPECIFICATION FOR
BR/EDR AND BR/EDR/LE CONTROLLERS

11、流控制模式

12、重传模式

13、增强重传模式

14、流模式

  • 13
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
传统蓝牙L2CAP(Logical Link Control and Adaptation Protocol)连接流程如下: 1. 建立物理连接:首先,两台蓝牙设备需要建立物理连接。设备A作为主设备,设备B作为从属设备。主设备使用发现和配对流程找到从属设备,并建立物理链路。链路建立后,主设备和从属设备之间可以进行蓝牙通信。 2. L2CAP信道配置:建立物理连接后,主设备将通过LMP(Link Manager Protocol)命令发送L2CAP信道配置请求给从属设备。请求中包含了需要建立的L2CAP信道的相关信息,如协议类型、服务类型等。从属设备收到请求后,确认并回复L2CAP信道配置响应。 3. SDP查询:建立L2CAP信道后,主设备可能需要查询从属设备所提供的服务,这时就需要使用SDP(Service Discovery Protocol)进行查询。主设备发送SDP查询请求给从属设备,请求中包含了需要查询的服务类型等信息。从属设备收到请求后,回复SDP查询响应,提供相应的服务信息。 4. L2CAP连接:在L2CAP信道配置和SDP查询完成后,主设备与从属设备之间的L2CAP连接建立成功。此时,两台设备之间可以使用L2CAP协议进行数据传输。主设备可以通过发送L2CAP消息给从属设备,从属设备收到消息后可以进行相应的处理或回复。 综上所述,传统蓝牙L2CAP的连接流程包括建立物理连接、L2CAP信道配置、SDP查询和L2CAP连接建立。这个流程确保了设备之间的连接和通信,并为后续的数据传输提供了支持。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值