蓝牙核心规范(V5.2)7.1-深入详解之L2CAP(2)上

简介: 蓝牙核心规范(V5.2)7.1-深入详解之L2CAP(2)上

本小结主要阐述主机的A部分,逻辑链路控制和适配协议规范(L2CAP)。支持更高级别的协议多路复用、分组分割和重组,以及服务质量信息的传输。协议状态机描述了本规范的包格式和组成。

image.png

1. 状态机

1.1 状态机规则

image.png


根据需要,在状态事件表中使用以下抽象的内部事件:

image.png


每个L2CAP面向连接的通道都有一个活动的状态机。将为接收到的每个新L2CAP_ConnectReq创建一个状态机。状态机始终在关闭状态下启动。


1.1.1 CLOSED 状态

image.png


除了关闭状态之外,L2CAP_ConnectReq消息在任何其他状态中都没有被提到,因为它会触发新通道的建立,从而导致分支进入到状态机的新实例中。


1.1.2 WAIT_CONNECT_RSP 状态

image.png

这里不包括L2CAP_DisconnectReq消息,因为源和目标L2CAP_DisconnectReq还不可用,无法将其正确地与特定通道的状态机联系起来。


1.1.3 WAIT_CONNECT 状态

image.png

这里不包括L2CAP_DisconnectReq或L2CAP_ConfigReq消息,因为源和目标光盘还不可用,无法将其与特定通道的状态机正确联系起来。


1.1.4 CONFIG 状态

存在两个配置过程。配置过程是标准流程和锁定步骤过程。


在标准和锁定步骤配置过程中,两个L2CAP实体都会在配置过程中启动配置请求。这意味着每个设备为传出的配置请求采用一个发起者角色,为传入的配置请求采用一个接受者角色。在两个方向上的配置可以按顺序发生,但也可以并行发生。


在锁步配置过程中,L2CAP实体在向其本地控制器提交流规范之前都发送L2CAP_CONFIGURATION_REQ数据包并接收带有挂起结果代码的L2CAP_CONFIGURATION_RSP数据包。每个L2CAP实体发送最后一个L2CAP_CONFIGURATION_RSP数据包,指示来自其本地控制器的响应。


在配置状态下,可以区分以下子状态:

image.png



配置状态是通过来自关闭状态的WAIT_CONFIG子状态输入、WAIT_CONNECT状态或WAIT_CONNECT_RSP状态。如发起者和接受者路径都成功完成,则配置状态留为打开状态。


image.png

image.png

image.png

image.png



处于配置状态的接收数据PDU(L2CAP_Data)应该只有在过渡到重新配置过程(从OPEN状态)时才相关。只有在重传输模式和增强的重传输模式下才允许丢弃接收到的数据。允许丢弃s帧,但不建议使用。如果一个s帧被丢弃,监视器计时器将导致在超时后发送一个新的s帧。


指示配置响应中的失败并不一定意味着整个配置过程的失败;相反,基于在负响应中接收到的信息,可以触发修改后的配置请求。


1.2 定时器事件

1.2.1 RTX

响应超时(RTX)定时器用于在远程端点不响应信令请求时终止通道。


当发送到远程设备的信令请求时,将启动此计时器。


当收到响应时,将禁用此计时器。如果初始定时器过期,则可以发送重复的请求消息或者断开请求中识别的通道断开。如果发送了重复的请求消息,则RTX超时值应重置为至少是以前值的两倍的新值。在重新传输请求消息时,应假定与原始传输具有相同状态的上下文。如果接收到被标识为重复(重传)的请求消息,则应在接收到原始请求消息时应用的相同状态的上下文中进行处理。


1.2.2 ERTX

当不信任远程端点正在执行对请求信号的额外处理时,使用扩展响应超时执行(ERTX)计时器来代替RTX计时器 。当远程端点响应请求正在挂起时,将启动此计时器。当收到正式响应或物理链接丢失时,将禁用此计时器。如果初始计时器过期,则可能会发送重复的请求或断开通道。


当收到正式响应或物理链接丢失时,将禁用此计时器。如果初始计时器过期,则可能会发送重复的请求或断开通道。


这个计时器的值依赖于实现,但最小初始值为60秒,最大初始值为300秒。与RTX类似,对于每个收到等待响应的未决请求,必须至少有一个ERTX计时器。每个未完成的请求最多应该有一个(RTX或ERTX)关联。从此计时器的初始开始到信道终止的开始(如果没有接收到任何响应)之间的最大运行时间为300秒。终止通道时,不需要发送L2CAP_DisconnectReq并进入WAIT_DISCONNECT状态。通道应直接转换到关闭状态。

image.png

状态和转换


image.png

配置状态和转换


image.png

状态和转换-AMP启用的操作


目录
相关文章
|
物联网
经典蓝牙与低功耗蓝牙BLE开发基础知识:服务、特征、属性、UUID
蓝牙大致被认为是1.0 2.0 3.0 4.0版本,不过现在已经不再用版本号区分蓝牙了,蓝牙1.0~3.0都是经典蓝牙,在塞班系统就已经开始使用了。而蓝牙4.0开始就是包括蓝牙BLE了。蓝牙4.0是双模的,既包括经典蓝牙又包括低能耗蓝牙。经典蓝牙和蓝牙BLE虽然都是蓝牙,但其实还是存在很大区别的。蓝牙BLE相比于经典蓝牙的优点是搜索、连接的速度更快,关键就是BLE(Bluetooth Low Energy)低能耗,缺点呢就是传输的速度慢,传输的数据量也很小,每次只有20个字节。但是蓝牙BLE因为其低能耗的优点,在智能穿戴设备和车载系统上的应用越来越广泛。
经典蓝牙与低功耗蓝牙BLE开发基础知识:服务、特征、属性、UUID
|
算法 网络性能优化 数据安全/隐私保护
蓝牙核心规范(V5.2)7.1-深入详解之L2CAP(2)下
蓝牙核心规范(V5.2)7.1-深入详解之L2CAP(2)下
955 0
蓝牙核心规范(V5.2)7.1-深入详解之L2CAP(2)下
蓝牙核心规范(V5.2)2.1-深入详解之核心配置
蓝牙核心规范(V5.2)2.1-深入详解之核心配置
365 0
蓝牙核心规范(V5.2)2.1-深入详解之核心配置
|
存储 编解码 安全
蓝牙核心规范(V5.2)3.4-深入详解之安全概述
蓝牙核心规范(V5.2)3.4-深入详解之安全概述
704 0
蓝牙核心规范(V5.2)3.4-深入详解之安全概述
|
定位技术 调度
蓝牙核心规范(V5.2)3.6-深入详解之共存和配置
蓝牙核心规范(V5.2)3.6-深入详解之共存和配置
446 0
蓝牙核心规范(V5.2)3.6-深入详解之共存和配置
|
存储 安全 测试技术
蓝牙核心规范(V5.2)3.5-深入详解之蓝牙应用架构
蓝牙核心规范(V5.2)3.5-深入详解之蓝牙应用架构
430 0
蓝牙核心规范(V5.2)3.5-深入详解之蓝牙应用架构
|
开发工具
蓝牙核心规范(V5.2)2.0-深入详解之蓝牙产品类型
蓝牙核心规范(V5.2)2.0-深入详解之蓝牙产品类型
275 0
蓝牙核心规范(V5.2)2.0-深入详解之蓝牙产品类型
蓝牙核心规范(V5.3)1.0-深入详解之规范整体架构
蓝牙核心规范(V5.3)1.0-深入详解之规范整体架构
438 0
蓝牙核心规范(V5.3)1.0-深入详解之规范整体架构