ble l2cap 工作过程_蓝牙(七)L2CAP层协议解析

1、L2CAP概述

L2CAP-全称是逻辑链路控制与适配层,为两个通信的蓝牙设备提供一个端到端的通道。

L2CAP主要功能:

1.协议信道复用(protocol/channel multiplexing)

2.分段与重组(segmentation and reassembly SAR)

3.每个信道流控(per-channel flow control)

4.差错控制(error control)

2、L2CAP逻辑信道

2.1、逻辑信道

L2CAP逻辑信道分配情况如下:

CID即channelID,

0x0001信道作为发送信令的信道,如发送Conn_req;

0x0002被作为无连接(两个设备间未建立ACL通路)的信道使用;

0x0040-0xFFFF是动态分配的,如在SDP服务发现时候就需要动态分配一个CID,和对端的CID连接后进行通信。

在BLE设备中0x0005作为BLE设备的信令通道;如果设备支持BLE功能,0x0005作为其信令通道,则0x0004和0x0006也会被强制分配给BLE,分别作为ATT和SecurityManager信道。

其中的0x0004-0x0005被分配给BLE(低功耗蓝牙):

2.2、信道模式

逻辑信道分为5中模式,最后一种是LE设备特有的:

Basic L2CAP Mode是默认模式,在未选择其他模式的情况下,就是用此模式。

Flow Control Mode模式下,不会进行重传,但是丢失的数据能够被检测到,并报告丢失。

Retransmission Mode确保数据包都成功的传输给对端设备。使用go-back-n(见附录)策略简化协议并限制缓冲区。

Streaming Mode是为了真实的等时传输,数据包被编号但是不需要ACK确认。设定一个超时定时器,一旦定时器超时就将超时的数据干掉。

LE Credit Based Flow Control Mode模式是唯一被用于LE设备的信道模式。

3、帧类型及结构

面向连接的信道包括除了0x0002的固定信道、两个信令信道(0x0001与0x0005)和动态分配的信道。面向无连接的信道有0x0002。

B帧

用于基础L2CAP模式下的面向连接信道。其中的Length为Information payload的长度,不包括包头长度。Information payload的长度范围是0~65535.

ChannelID为接收方的CID。

G帧

用于基础L2CAP模式下面向无连接的信道。G帧用于固定的无连接信道0x0002。

Length为PSM+Information payload长度之和。

PSM(Protocol/Service Multiplexer)协议服务复用,例如:SDP,RFCOMM等。

I/S帧

用于重传、流控或者流模式下面向无连接的信道。

I帧(Information frame)被用于L2CAP实体之间的信息传递;

S帧被用于I帧的确认和请求重传。

Length为除了Basic L2CAP header外的数据长度。

需要指出的是:只有在服务数据包SDU需要分段,并且是第一个L2CAP包的时候才需要L2CAP SDU Length段。

Control字段与L2CAP模式有关

a、标准Control字段用于重传模式和流控模式下

ReqSeq字段:被接收方用于应答I帧,当发送失败的时候发起重传的帧序列号。

TxSeq字段:发送I帧的序列号,用于分段与重组。

SAR字段:分段与重组,用于表示SDU包的开始结尾,占用2bit。

R字段用于实现流控,默认R=0。

R=0:可以重传,使能重传定时器,关闭监视定时器。

R=1:不可重传,使能监视定时器,关闭重传定时器,从而实现流控。

S字段表示S帧的类型,例如01代表之前发送的I帧被拒绝。

b、增强Control字段用于增强重传模式和流模式下

P字段:P=1请求一个接收方的回复

F字段:回复一个P=1的请求帧。

c、扩展Control字段用于扩展重传模式和流模式下

LE帧

Channel ID为接收方的CID。

C帧

控制帧(Control frame)在信令信道(传统蓝牙0x0001,BLE是0x0005)上传输。

在信令信道0x0001上可以多个控制命令同时包含于一个C帧中,但是0x0005信道上一个C帧只能够包含一个控制命令。

控制命令的数据格式如下

Code表示控制命令的固定编号,例如连接请求为0x02;

Identifier为请求方设置此标志,回应方回复请求帧的时候需要和请求帧的Identifier一致。

Length表示data的长度。

Data依据不同的命令而定的。

4、各种命令

各种命令的格式如上所述的C帧,具体的命令及简述如下:

配置参数

5、连接过程

6、L2CAP状态机

xsophiax

发布了91 篇原创文章 · 获赞 15 · 访问量 5万+

私信

关注

标签:Control,重传,蓝牙,信道,模式,字段,L2CAP,解析

来源: https://blog.csdn.net/xsophiax/article/details/104052416

Bluetooth低能耗(BLE)是一种用于低功耗无线通信的无线技术,用于在Android设备之间进行短距离数据传输。BLE L2CAP(逻辑链路控制和适配协议)是BLE协议栈中的一个重要组成部分。 BLE L2CAP位于BLE协议栈的顶部,负责管理数据包的传输。它提供了两种不同的模式来支持连接导向和无连接导向的数据传输: 1. 基本模式(Basic mode):在基本模式下,BLE L2CAP提供类似于传统蓝牙的传输方式。它支持可靠的、面向连接的数据传输,并提供流控制和数据完整性检查。在此模式下,BLE L2CAP通过可靠的通道传输数据。 2. 适配器模式(Adapter mode):在适配器模式下,BLE L2CAP提供类似于传统蓝牙的无连接导向的数据传输方式。它提供了多个通道,每个通道可以以不同的方式传输数据,例如无连接、不可靠传输等。适配器模式使得传输更加灵活,适用于一些需要快速传输的场景。 BLE L2CAP还提供其他功能,如MTU(最大传输单元)管理,通过更大的MTU可以减少传输开销。此外,BLE L2CAP还负责分包和重组数据包,以保证数据的有效传输。 在Android开发中,开发人员可以使用Android的BLE API来使用BLE L2CAP。这些API提供了相关的函数和方法来管理BLE连接、创建L2CAP通道和发送/接收数据。 总之,BLE L2CAP是Android BLE协议栈中的一个重要组成部分,负责BLE设备之间的低功耗数据传输。它提供了基本模式和适配器模式,以满足不同类型的传输需求。在Android开发中,开发人员可以使用BLE API来利用BLE L2CAP的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值