蓝牙核心规范(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启用的操作


目录
相关文章
|
网络协议 物联网 芯片
三张图带你入门蓝牙规范
蓝牙自从2001年发布以来,从经典蓝牙发展到了BLE蓝牙,又于2017年引入了蓝牙mesh技术,核心规范版本就于2019年年底升级到了最新的5.2版本,很多同学对蓝牙很有兴趣,但也被会被蓝牙技术里繁多的概念搞迷糊,希望通过这篇文章带大家对蓝牙技术规范有一个基本的了解。本文的面向读者是对网络技术有一定了解但对蓝牙技术不熟悉的同学。
三张图带你入门蓝牙规范
|
存储 安全 算法
【BLE】 BLE配对绑定保姆级介绍
实现蓝牙通信安全,除了paring/bonding这种底层方式,用户也可以在应用层去实现相同功能,两者从功能上和安全性上没有本质区别,只不过应用层自己实现的话,需要自己选择密码算法,密钥生成,密钥交换等,如果你不是这方面的专家,你的应用就有可能会存在安全漏洞。设备跟手机绑定成功后,手机再次重连这个设备时,就会自动跳过service discovery过程,换句话说,配对的时候手机会把设备所有服务和characteristic的handle保存下来,二次重连的时候,直接用以前保存的handle值去操作设备。
6219 1
【BLE】 BLE配对绑定保姆级介绍
蓝牙核心规范(V5.3)-深入详解之SCO和eSCO的异同
蓝牙核心规范(V5.3)-深入详解之SCO和eSCO的异同
3163 0
蓝牙核心规范(V5.3)-深入详解之SCO和eSCO的异同
|
编解码 安全 Android开发
低功耗蓝牙LE Audio Profile 详细介绍
2019年底,蓝牙官方组织SIG发布了蓝牙5.2版本的核心协议,其中增加了一个重要的特性---LE Audio。蓝牙的应用协议都是从应用层到物理层完整包含的协议,LE Audio也不例外。但蓝牙5.2核心协议仅仅定义了蓝牙LE的链路层传输Audio的方式,上层协议以及完整的LE Audio规范迟迟未出,近日,蓝牙官方组织释放了LE Audio较为完整的规范文档。
低功耗蓝牙LE Audio Profile 详细介绍
|
算法 网络架构
MAC地址与帧结构
本文介绍了MAC地址和帧结构的基础知识。MAC地址是48位物理地址,分为组织唯一标识符(OUI)和制造商自定义两部分,用于局域网设备识别与链路层通信。帧结构以以太网帧为例,包含前导码、帧开始定界符、目的与源MAC地址、类型/长度字段、数据字段及帧校验序列(FCS),确保数据传输的准确性和可靠性。
1769 8
|
物联网 API 数据库
一文带你认识蓝牙 GATT 协议
正所谓磨刀不误砍柴工,我们有必要先深入的学习一下 GATT 以及 GATT 相关的一些知识。 本文我们就来了解一下 蓝牙 GATT 到底是什么?同时了解下我们使用的 ESP32-C3 GATT示例的工程的代码结构。
10028 5
一文带你认识蓝牙 GATT 协议
|
算法 网络协议 物联网
【Jlink】使用Jlink RTT工具打印日志
RTT( Real Time Terminal)是SEGGER公司新出的可以在嵌入式应用中与用户进行交互的实时终端。J-Link驱动4.90之后的版本都支持RTT。RTT既可以从MCU上输出信息、也可以向应用程序发送信息,由于其高速的特性,所以不影响MCU的实时性。实现原理: 固件代码将要输出的log数据按照RTT的格式写到确定地址的内存中去,然后RTT通过swd口读取对应内存地址的数据,并显示到PC终端上。
1703 0
|
算法 网络性能优化 数据安全/隐私保护
蓝牙核心规范(V5.2)7.1-深入详解之L2CAP(2)下
蓝牙核心规范(V5.2)7.1-深入详解之L2CAP(2)下
1429 0
蓝牙核心规范(V5.2)7.1-深入详解之L2CAP(2)下
|
移动开发 芯片 内存技术
经典蓝牙架构分层及协议总览
经典蓝牙架构分层及协议总览
3242 0

热门文章

最新文章