ble l2cap 工作过程_BLE主机之L2CAP层

本文介绍L2CAP 部分

L2CAP 的全称是 逻辑链路控制和适配协议,  L2CAP 是低功耗蓝牙的复用层,该层定义两个基本概念

L2CAP 信道和L2CAP 信令,L2CAP 信道是一个双向数据通道,通向对端设备上的某一特定的协议或规范,

经典蓝牙使用 L2CAP 的大部分功能,包括动态信道标识符,协议服务多路复用器、增强

的重传、流模式等、相比而言,低功耗蓝牙只用到了 L2CAP 的较少功能。此处略过。

低功耗蓝牙部分的 L2CAP 的功能总结为:

1,支持数据的分割和重组,使得较大的报文可以在底层无线电中进行传输。

2,复用信道,低功耗蓝牙中复用三条不同的信道。

低功耗蓝牙中值使用固定信道:一个用于信令信道,一个用于安全管理器,还有一个用于

属性协议。本问只介绍信令信道。

由于信道传输的内容是报文,所以先去看看报文结构;

L2CAP 层数据报文

L2CAP 报文结构如下:

净荷前端包含一个32位即4字节的报头,包括长度和信道标识符。

长度标识后面的信息载荷部分的字节数,经典蓝牙中信息载荷还可以包含额外的报头和信息。但在低功耗蓝牙

的L2CAP 层中并没有其他有意义的信息结构。

由于低功耗蓝牙的信息载荷最大是23字节,MTU=23,所以所有低功耗蓝牙必须支持在空间传输27字节

数据包,(23字节信息载荷和4字节L2CAP 报头),

由于本文介绍信令信道,所以在此先介绍 L2CAP 数据报文中的 L2CAP 命令数据包

L2CAP 命令数据包

L2CAP 命令数据包通过 L2CAP 数据包进行传输,见下面的结构,位于L2CAP 报文的信息载荷部分。

结构解析如下:

操作码:

操作码包括下面三种:

命令拒绝(command reject)

连接参数更新请求(connection parameter update request)

连接参数更新响应(connection parameter update response)

标识符1字节

用于匹配请求和响应,如,请求的标识符为0x35,则响应该请求的数据包也必须包含0x35作为标识符。

而下一个请求不允许重复,需要依次递增,如果用完再从头开始,但是不使用0x00,这样的好处是

可以多个请求同时发送。

L2CAP 信道

信道的概念

信道是指一个数据包序列,连接两个设备上的一对服务。

低功耗只支持固定信道。

固定信道指的是两个设备一建立就已经存在的没有任何配置参数的信道。

信道通过信道标识符进行标识,L2CAP 信道标识符如下:

低功耗蓝牙一共使用3条信道:

0x0004用于属性协议

0x0005用于低功耗信令信道

0x0006用于安全管理。

本文只介绍低功耗蓝牙信令信道

低功耗信令信道

低功耗信令信道用于主机层级的信令。

信令信道传输的为 L2CAP 命令数据包。数据包结构在前面 L2CAP 数据报文部分已经描述。

下面通过不同命令数据包的用途分析来了解低功耗信令信道的用途。

不同的命令操作码有不同的用途,下面来介绍不同的命令的操作码的用途来分析;

命令拒绝

用于拒绝设备收到的不支持的信息包,该命令与经典蓝牙中的命令拒绝完全一样,它包含一个原因代码以及相关的

信息,原因代码就是表达拒绝的原因。

“命令不理解”: 标识设备收到了不支持的命令

“信令MTU溢出”: 表示设备接收到的命令大于23字节

连接参数更新请求和响应

用于从设备更新链路层的连接参数,这些参数包括连接事件间隔(从设备希望主设备允许从设备发送数据包的频率)

、以及从设备延迟、还有监控超时。

连接参数更新过程如下:

什么情况下需要更新连接参数呢?

在连接过程中,有时候连接事件的间隔太短,导致电量消耗过快,在从设备延迟大还好说,否则的话,从设备

会频繁的侦听链路,此时,从设备就可能需要更新链路参数,来降低电量的消耗。

要注意的是,

1,连接参数更新请求命令仅用于从设备向主设备发送,因为主设备随时都能启动链路层连接参数更新。

如果是主设备发送。从设备会人为这是一个错误。返回命令不理解。

2,从设备可以在任何时候发送该命令,收到该信息的主设备可以修改连接参数,然后返回对应的响应。

主设备也可以不同意从设备的请求参数,然后发送结果代码为拒绝的连接参数更新响应。此时从设备

要么接受主设备希望的正在使用的连接参数,要么终止连接。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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、付费专栏及课程。

余额充值