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

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

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

1. 状态机

1.1 状态机规则

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


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

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


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


1.1.1 CLOSED 状态

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


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


1.1.2 WAIT_CONNECT_RSP 状态

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

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


1.1.3 WAIT_CONNECT 状态

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

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


1.1.4 CONFIG 状态

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


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


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


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

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



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


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

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

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

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



处于配置状态的接收数据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状态。通道应直接转换到关闭状态。

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

状态和转换


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

配置状态和转换


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

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


上一篇:Bluetooth Profile Specification之1.0 A2DP初识


下一篇:CSDN浏览器助手新版本 9 月强势上线!沉浸式阅读体验你爱了吗