低功耗蓝牙学习笔记-L2CAP

注:本篇博客摘抄《BLE4.0 低功耗蓝牙协议总结 作者:刘权》的部分内容,该文档是学习ble很好的文档,推荐!

L2CAP的全称是逻辑链路控制和适配协议。L2CAP是一个复用层,可以让低功耗蓝牙复用三条不同的信道。它也支持数据的分隔和重组功能,使得较大的报文可以在底层无线电中传输。

 

L2CAP信道

L2CAP有个很简单的概念,信道。信道是指数据包序列,连接两个设备上的一对服务。在两个设备允许同时启用多条信道。低功耗蓝牙只支持固定信道。固定信道指的是两个设备一建立连接就已经存在的、没有任何配置参数的信道。

这里整个低功耗蓝牙中第三次出现信道,但这里的信道是针对主机而言。低功耗蓝牙中主机抽象出属性协议、安全管理等模块,当控制器接受到来自对端设备的数据而发送给主机时,主机需要分辩这些数据给到谁,有可能给到属性协议、安全管理或者L2CAP层自身的低功耗蓝牙信令。这就是低功耗蓝牙LACAP存在的含义。

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

信道0x0004,用于属性协议

信道0x0005,用于低功耗蓝牙信令通道

信道0x0006,用于安全管理

 

L2CAP数据包结构

在所有低功耗蓝牙信道上,信息载荷均始于23字节的最大传输单元(MTU)。在链路层规定数据报文加密/未加密报文不超过27字节的限制,L2CAP头部占了4字节,所以L2CAP Payload信息载荷只有23字节的最大长度。

 

低功耗蓝牙信令通道

低功耗蓝牙信令通道用于主机层级的信令,每个低功耗蓝牙信令信道的数据包均含有一操作码,随后为各种参数。

低功耗蓝牙信令通道支持的命令操作码如下:

  • 命令拒绝

  • 连接参数更新请求

  • 连接参数更新响应

关于 payload信息载荷详细说明如下:

Code:操作码,对于 BLE 来说其实只有 3 个可用的命令

Identifier: 标识符, 这个的作用是确保应答包对应哪个请求包,发送一个请求包,接收到应答包中的 identity 值如果和请求包中的一致,说明是对这个请求包的应答。 identity 的值发送每个请求命令都是不同的值,而对方设备的应答信息中的 ID 和发送请求中的ID 是一样的,确保对其应答。 0x00 是一个非法的值,不能用。 

Length:长度,这个长度表示的是后面 data 中的字节数。 

 Data:数据,每个操作码都有固定格式的数据。

命令拒绝

命令拒绝操作码,用于对接收到的不支持的数据包的回应。这个命令是沿用经典蓝牙的,它的数据格式如下:

Reason 占用两个字节,对于 BLE 只有 2 个值是可用的,如下:

Data:数据长度为 0 或者大于 0 字节的数,主要是对原因进行描述补充, 而“命令不理解”是没有数据需要进行说明的。只有
“ Signaling MTU exceeded”有两个字节的数据去应答能接收的最大的字节数是多少,对于 BLE 就是 MTU=23bytes。

连接参数更新请求和响应

主机通过 LL 层就可实现连接参数更新,那么从机也有更新连接参数的权利, 通过这个命令即可。而且这个命令只能有从机发送给主机,如果从机接收到这个命令后,会回复命令拒绝。

里面的 4 个参数都是给的范围,也就是说从机不能最终决定具体连接参数值,从机只能给主机提 出 自 己 的 想 法 , 如 果 主 机 同 意 更 新 , 那 么 需 要 主 机 发 送“ LL_CONNECTION_UPDATE_REQ”这个命令详细连接参数给从机,然后从机等到“瞬时”到后进行参数更新。

如果仅仅是从对等层来说, 当从机发送 Connection Parameter Update request 命令,主机需要发送Connection Parameter Update response 这个命令去回应:

Result 为 2 个字节的结果代码。 当主机同意修改连接参数的时候, Result 为 0x0000, 也就是接受 参数 更 新 的 建 议 。 当 主 机 不 同 意 修 改 连 接 参 数 的 时 候 ,Result=0x0001,拒绝参数更新 。

参数更新过程:

1. 从机向主机发送连接参数更新请求(想法)

2. 如 果 主 机 同 意 更 新 , 那 么 需 要 主 机 发 送“LL_CONNECTION_UPDATE_REQ”这个命令详细连接参数给从机然后从机等到“瞬时”到后进行参数更新。

3. 主机 L2CAP 层连接参数应答

采集从机L2CAP层连接参数更新请求:

采集主机LL层连接参数更新请求:

采集主机L2CAP层连接参数应答:

发布了18 篇原创文章 · 获赞 6 · 访问量 6349

猜你喜欢

转载自blog.csdn.net/lewanhah01/article/details/104075484