第三部分 主机(Host)
第9章 逻辑链路控制和适配协议(L2CAP)
逻辑链路控制和适配协议(Logical Link Control and Adaptation Protocol,L2CAP)是个复用层,可以让低功耗蓝牙复用三条不同的信道。它也支持数据的分割和重组功能,使得较大的报文可以在底层无线电中传输。
9.1背景
9.2信道
低功耗蓝牙只支持固定信道。固定信道是指两个设备一建立连接就存在的、没有任何配置参数的信道。
低功耗蓝牙一共使用3条信道:
0x0004:属性协议(详见第10章)
0x0005:低功耗信令信道
0x0006:安全管理协议
9.3L2CAP数据包结构
每个L2CAP数据包的净荷前端都包含一个32bit的报头。假设使用分割和重组,数据包的长度信息必须包含在报头中,以便判断数据包的结束。使用分割和重组机制需要为每一个通过HCI接口的数据包打上标记(详见第8章),分为开始数据包和延续数据包。但是,这里没有定义怎样标记当前数据包的最后一个片段,所以,判断当前数据包是否结束的唯一方法就是发送一个新的数据包(假设这个数据包正准备发送),或者将数据包的长度信息放在开始数据包中。
如图9-1所示,报头包括2个字节的长度字段和2个字节的信道标识符。长度字段表示报头后的信息载荷字节数。
在所有的蓝牙信道上,信息载荷均始于23字节的最大传输单元(Maximum Transmission Unit,MTU)。MTU表示在一个L2CAP信道中信息载荷的最大字节数。这意味着,在所有的低功耗蓝牙中必须支持在空间传输27字节数据包——23字节载荷,4字节报头。(BLE4.0,BLE5.0?)
9.4低功耗信令信道
低功耗信令信道用于主机层级的信令。每个低功耗信令信道的数据均包含有一操作码,随后为各种参数。低功耗信令信道支持的命令操作码如下:
命令拒绝(Command Reject)
连接参数更新请求(Connection Parameter Update Request)
连接参数更新响应(Connection Parameter Update Response)
无论什么时候发送信令命令,其信息载荷总是包含一个字节的标识符,用于匹配请求和响应。