精华内容
下载资源
问答
  • Core 4.0~5.2:L2CAP、HCI、无线部分 A2DP AVCTP AVDTP AVRCP BIP BNEP CGMP CPS CSS CTN CTS DIS DUN FTP GATT GAVDP GOEP GPP HDP HID HSP IRDA LLS MAP MESH OPP PAN PBAP PXP RFCOMM SPP VDP 等等
  • 基于Linux的蓝牙L2CAP及RFCOMM层协议的实现.pdf
  • L2CAP层提供逻辑通道,即L2CAP通道,这些通道在一条或多条逻辑链路上复用。在经典蓝牙无线电中,L2CAP层提供的功能比这更多,也更为复杂。 通道管理器(Channel Manager)提供一个功能控制的控制面板,并负责所有内部...

    一 介绍

    L2CAP(逻辑链路控制和适配协议层)是一个复用层,可以让低功耗蓝牙复用三条不同的信道。它也支持数据的分割、数据重组、通道多路复用、通道流量控制和错误检测,使得较大的报文可以在底层无线电中传输。L2CAP层提供逻辑通道,即L2CAP通道,这些通道在一条或多条逻辑链路上复用。在经典蓝牙无线电中,L2CAP层提供的功能比这更多,也更为复杂。

    在这里插入图片描述
    通道管理器(Channel Manager)提供一个功能控制的控制面板,并负责所有内部信令、L2CAP点对点信令以及高层和低层的信令。
    重传和流控制块(RetransmissionFlow & Control)使用包重传提供每个通道的流控制和错误恢复。
    Resource Manager 负责为Channel Manager、Retransmission and Flow Control block 和那些不需要Retransmission and Flow Control 服务的应用数据流提供帧中继服务.
    L2CAP负责协调底层接口提供的服务上与多个L2CAP通道相关的数据包的传输和接收。

    L2CAP的功能:

    • 协议/通道复用(Protocol/channel multiplexing)

    • 片段和重组(Segmentation and reassembly)
      通过资源管理器提供的帧中继服务,传输帧的长度由运行在 L2CAP 上的各个应用程序控制。 如果 L2CAP 能够控制 PDU 长度,则可以更好地服务于许多多路复用应用程序。 这提供了以下好处:

      • 分段将允许应用程序数据单元的交错以满足延迟要求。
      • 当 L2CAP 控制数据包大小时,内存和缓冲区管理更容易。
      • 可以更有效地通过重传进行纠错。
      • 当 L2CAP PDU 损坏或丢失时被破坏的数据量可以小于应用程序的数据单元。
      • 应用程序与将应用程序数据包映射到较低层数据包所需的分段分离。
    • 每个 L2CAP 通道的流量控制(Flow control per L2CAP channel)

    • 错误控制和重传(Error control and retransmissions)

    • 支持流媒体(Support for Streaming)

    • 分割与重组(Fragmentation and Recombination)
      一些控制器的传输能力可能有限,并且可能需要与 L2CAP 分段创建的片段大小不同的片段大小。因此,L2CAP 下的层可能会进一步对 L2CAP PDU 进行片段化和重组,以创建适合每一层能力的片段。在传输 L2CAP PDU 期间,两个对等设备中可能会发生许多不同级别的分段和重组。

      HCI 驱动程序或控制器可以对 L2CAP PDU 进行分段,以遵守主机控制器接口传输方案的数据包大小限制。这导致 HCI 数据包有效载荷携带 L2CAP PDU 的开始和继续片段。 类似地,控制器可以将 L2CAP PDU 分段以将它们映射到控制器数据包中。 这可能导致控制器数据包负载携带 L2CAP PDU 的开始和继续片段。

      协议栈的每一层可能会传递不同大小的L2CAP PDU分片,并且每一层创建的分片大小在每个对等设备中可能不同。 然而,PDU 在堆栈内被分段,接收 L2CAP 实体仍然重新组合这些分段以获得原始 L2CAP PDU。

    • 服务质量

    术语

    • CID, Channel Identifiers, L2CAP通道ID
    • SDU或L2CAP SDU, 来自上层的数据,不包含任何L2CAP层协议字段。
    • Segment or SDU segment,SDU 的一部分,由分割过程产生。 一个 SDU 可以分成一个或多个段
    • PDU or L2CAP PDU, (协议数据单元)Protocol Data Unit,协议数据单元:包含 L2CAP 协议信息字段、控制信息和/或上层信息数据的数据包。PDU 总是由基本 L2CAP 报头开始。 PDU 的类型有:B 帧、I 帧、S 帧、C 帧、G 帧和 LE 帧。
    • B-frame,B帧(Basic information frame)是用于 L2CAP 数据包的基本 L2CAP 模式中的 PDU。 它包含一个完整的 SDU 作为其有效载荷,由基本 L2CAP 标头封装。
    • I-frame,I帧(Information frame),I 帧是在增强重传模式、流模式、重传模式和流控制模式中使用的 PDU。 它包含一个 SDU 段和附加协议信息,由基本 L2CAP 头封装
    • S-frame, S帧(Supervisory frame), S 帧是在增强重传模式、重传模式和流控制模式中使用的 PDU。 它仅包含协议信息,由基本 L2CAP 头封装,不包含 SDU 数据。
    • C-frame, C帧(Control frame), C 帧是包含在两端 L2CAP 实体之间交换L2CAP 信令消息的 PDU。 C 帧专门用于 L2CAP 信令信道。
    • G-frame, G帧(Group frame), G 帧是专用于无连接 L2CAP 通道的 PDU。 它由基本 L2CAP 报头封装,包含 PSM,后跟完整的 SDU。 G 帧可用于通过 Active Broadcast 向活动从设备广播数据或将单播数据发送到单个远程设备
    • K-frame, K 帧是在基于 LE 的流量控制模式中使用的 PDU。 它包含一个 SDU 段和附加协议信息,由基本 L2CAP 报头封装。
    • Fragment, 片段是PDU 的一部分,由分片操作产生。 片段仅用于与底层之间的数据传递。 它们不用于点对点传输。 片段可以是关于 L2CAP PDU 的开始或继续片段。 一个片段不包含PDU以外的任何协议信息; 起始片段和延续片段的区别是由底层协议规定来传输的。
    • Fragmentation,将L2CAP pdu拆分成更小的部分的过程,称为fragments,适合于传送到较低的传输层。尽管在L2CAP层中进行了描述,但碎片实际上可能发生在HCI主机驱动程序中,和/或控制器中,以适应L2CAP PDU传输到HCI数据包或控制器数据包的大小。pdu分片可以应用于所有L2CAP模式。
    • Recombination, 与fragmentation相对应的反向过程,从碎片中重新建立一个L2CAP PDU。在接收路径中,全部或部分重组操作可能发生在控制器和/或主机上,重组的位置不一定对应于发送端发生分片的位置。
    • MTU, 最大传输单元(Maximum Transmission Unit), 上层能够接受的有效载荷数据的最大大小(以字节单位),即 MTU 对应于最大 SDU 大小。
    • MPS, L2CAP可接受最大的payload大小(Maximum PDU payload Size),对应于MTU,在没有分段的情况下,或在基本 L2CAP 模式下,最大传输单元与最大 PDU 有效载荷大小相同,两个配置参数应设置为相同的值。
    • MTU(sig), L2CAP信令MTU大小
    信道标识符用法
    0x0000保留:不能使用
    0x0001经典蓝牙信令信道
    0x0002无连接信道
    0x0003AMP管理协议
    0x0004ATT协议
    0x0005BLE信令信道
    0x0006安全管理协议
    0x0007 ~ 0x003E保留
    0x003FAMP测试协议
    0x0040 ~ 0xFFFF面向连接信道

    低功耗蓝牙一共使用了三条信道,0x0004、0x0005、0x0006

    L2CAP的信道可以选择在以下几种模式中的一个运行

    • Basic L2CAP Mode
    • Flow Control Mode
    • Retransmission Mode
    • Enhanced Retransmission Mode
    • Streaming Mode
    • LE Credit Based Flow Control Mode
    • Enhanced Credit Based Flow Control Mode

    二 数据包格式

    通道代表远端设备中L2CAP实体之间的数据流。通道可以是面向连接的,也可以是无连接的。除了L2CAP无连接通道(CID 0x0002)和两个L2CAP信令通道(CID 0x0001和0x0005)之外的固定通道被认为是面向连接的。所有具有动态分配的cid的通道都是面向连接的。除信息有效载荷字段外,所有L2CAP层数据包字段应使用小端字节顺序。在L2CAP信息负载中封装的上层协议的端序是特定于协议的。
    在这里插入图片描述

    • Length 长度字段表示Information payload的长度,不包括L2CAP header, 最大可以到65535字节,该字段用于重组,作为接收端对重组后的 L2CAP 数据包的简单完整性检查。
    • Channel ID,通道 ID (CID) 标识数据包的目标通道端点
    • Information payload,有效数据

    三 信令包格式

    信令包的格式:
    在这里插入图片描述

    • Length: 长度位
    • Channel ID, 信道,经典蓝牙固定使用0x0001,BLE固定使用0x0005

    在这里插入图片描述

    信令包的名称有一个表示其类型的后缀:_REQ 表示请求,_RSP 表示响应,_IND 表示指示 。

    信令包的Information payload格式:
    在这里插入图片描述

    • Code,命令标识符,1个字节,用于标识命令的类型。 接收方信令信道上收到带有unknown或disallowed的代码字段的数据包时,将发送 L2CAP_COMMAND_REJECT_RSP 数据包作为响应。
    • Identifier,为请求方设置此标志,回应方回复请求帧的时候需要和请求帧的Identifier一致。
    • Length, data的长度
    • data, 命令数据

    在这里插入图片描述

    其中0x0005表示是低功耗蓝牙所支持的信令。

    • L2CAP_COMMAND_REJECT_RSP, 命令拒绝,用于拒绝设备收到的不支持的信息包。
      在这里插入图片描述
    • L2CAP_CONNECTION_PARAMETER_UPDATE_REQ, 连接参数更新
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

    该命令只能由从设备发出,因为主设备随时都可以启动链路层的连接参数更新请求。主设备收到该REQ之后,使用L2CAP_CONNECTION_PARAMETER_UPDATE_RSP进行回复,可以接受也可以不接受。如果主设备不接受这个连接参数,从设备的选择有两个,一是保持现在的连接参数;二是断开连接。

    三 分段和重组

    片段化是将 PDU 分解成更小的片段,以便从 L2CAP 传送到下层。 重组是从下层传上来的片段在L2CAP中重组成PDU的过程。 分片和重组可以应用于任何 L2CAP PDU。

    3.1 分段

    L2CAP实现可以对任何L2CAP PDU进行分片,以便将其发送到较低层。如果L2CAP在没有HCI的情况下直接在Controller上运行,那么一个执行方发是将PDU分割成多个Controller数据包,以便通过空气进行传输。如果L2CAP运行在HCI之上,那么一个执行方法会向控制器发送HCI传输大小的片段。与一个L2CAP PDU相关联的所有L2CAP分片,在处理任何其他进行相同逻辑传输的L2CAP PDU之前,都应由控制器处理以进行传输。
    BR/EDR链路控制器能够通过使用“开始”和“延续”指示在片段被转换成基带数据包时对PDU施加不同的片段。因此,L2CAP和BR/EDR Link Controller都使用相同的机制来控制分片的大小。
    在这里插入图片描述
    在这里插入图片描述

    3.2 重组

    控制器将尝试按顺序传递数据包,并且不会出错。片段的重组可能发生在控制器中,但最终由 L2CAP 负责重组 PDU 和 SDU 并检查 SDU 的长度字段。当控制器接收到数据包片段时,它会在每个片段到达时向 L2CAP 层发送信号,或者在将数据包传递到 L2CAP 层之前累积多个片段(在接收缓冲区填满或计时器到期之前)。 L2CAP 应使用 L2CAP PDU 报头中的长度字段,作为一致性检查,并应丢弃任何未能匹配长度字段的 L2CAP PDU。

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

      蓝牙篇之蓝牙核心规范(V5.2)深入详解汇总


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

    1. 状态机

     1.1 状态机规则

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

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

    1.1.1 CLOSED 状态

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

     1.1.2 WAIT_CONNECT_RSP 状态

     

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

    1.1.3 WAIT_CONNECT 状态

     

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

     1.1.4 CONFIG 状态

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

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

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

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

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

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

    状态和转换

    配置状态和转换

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

     2.通用程序

     本节介绍L2CAP的一般操作,包括配置过程、通过空中接口传输的用户数据的处理和处理。本节还描述了L2CAP特性的操作,包括交付错误数据包、刷新过期数据和在无连接模式下操作、操作冲突解决、最佳努力流规范的聚合和HCI数据优先级。

     2.1 配置过程

     配置的两个流程:标准流程和锁步流程。

     锁步流程:如果两个L2CAP实体都支持扩展流规范选项;否则使用标准流程。

    2.1.1 请求路径

    请求路径可以配置以下内容:

    • 请求者的传入MTU
    • 请求者的输出刷新超时
    • 请求者的输出QoS
    •  请求者的进出出流程和错误控制信息
    •  请求者的输入和输出的帧检查序列选项
    •  使用扩展流规范的请求者的传出QoS选项
    •  请求者的传入扩展窗口大小选项加上传入和传出帧格式。

     2.1.2 响应路径

    响应路径可以配置以下内容:

    • 响应方的传出MTU,即远程端的传入MTU
    • 远程端的刷新超时
    • 响应方的传入QoS流规范(远程端的传出QoS流规范)
    • 响应方的传入流和错误控制信息
    • 响应方的传入QoS扩展流规范(远程端的传出QoS流规范)
    • 响应方的传出扩展窗口大小

    2.1.3  锁步配置过程

    发送L2CAP_CONFIGURATION_REQ数据包来建立或更改通道参数,包括两个L2CAP实体之间的QoS合同。

    在发送或接收接受正在配置通道的L2CAP连接请求的连接响应后,应以L2CAP_CONFIGURATION_REQ形式发送扩展流规范选项以及任何非默认参数。

    每个L2CAP实体只发送一个L2CAP_CONFIGURATION_REQ数据包

    锁步配置使用场景:只有在用于重新配置的L2CAP_CONFIGURATION_REQ数据包中存在扩展流规范选项。

    扩展流规范应发送给在AMP-U逻辑链路上创建的所有通道,并且只有当本地和远程L2CAP实体在其扩展特性掩码中都表示支持BR/EDR的扩展流规范时,才应发送给在ACL-U逻辑链路上创建的通道。

    如果发送的L2CAP_CONFIGURATION_REQ包含扩展流规范选项,则不包括服务质量选项和刷新超时选项。

    L2CAP_CONFIGURATION_RSP包应响应L2CAP_CONFIGURATION_REQ包,除非L2CAP_COMMAND_REJECT_RSP响应覆盖错误情况。虽然L2CAP配置信令机制允许使用通配符,但扩展流规范不支持通配符值,因为每个参数只代表一个方向的流量属性,并且打算在L2CAP配置级别进行协商。

    L2CAP_CONFIGURATION_REQ的接收者应与控制器执行所有必要的检查,以验证所请求的QoS。在BR/EDR或BR/EDR/LE控制器的情况下,L2CAP层执行控制器检查。如果使用了HCI,那么L2CAP实体应该检查所请求的QoS是否可以通过HCI的传输来实现。为了执行这些检查,接收者需要具有两个方向的QoS参数。为了让各方确定何时执行相关的控制器检查,各方将回复结果为“未决”(0x0004)。

    如果在L2CAP_CONFIGURATION_RSP数据包中没有发送参数,结果为“待定”,则接受在L2CAP_CONFIGURATION_REQ中发送的参数而不需要更改。

    此锁步过程将导致两个L2CAP实体执行以下操作:

    • 接收一个包含扩展流规范选项以及所有非默认参数的L2CAP_CONFIGURATION_REQ
    • 发送包含对扩展流规范选项进行任何修改的L2CAP_CONFIGURATION_RSP,并允许对非默认参数进行修改(结果为“待定”)
    • 发送一个包含扩展流规范选项以及所有非默认参数的L2CAP_CONFIGURATION_REQ
    • 接收一个包含对扩展流规范选项的任何修改的L2CAP_CONFIGURATION_RSP,并允许对非默认参数进行修改(结果为“待定”)。

    当接收到结果为“待定”的L2CAP_CONFIGURATION_RSP时,将使用ERTX计时器。

     如果在收到结果“挂起”的L2CAP_CONFIGURATION_RSP之前收到结果“成功”的L2CAP_CONFIGURATION_RSP,接收人应断开通道的连接。这违反了锁步的配置过程。

    如果设备在服务类型为“最佳努力”的L2CAP_CONFIGURATION_REQ中发送扩展流规范选项,并接收到服务类型为“保证”的L2CAP_CONFIGURATION_REQ,则应断开通道。

    如果设备在具有“保证”类型的L2CAP_CONFIGURATION_REQ中发送扩展流规范,并接收到具有服务类型为“最佳努力”的L2CAP_CONFIGURATION_REQ,则应断开通道。

    如果服务类型是“最佳努力”,那么某些参数的值可以在L2CAP_CONFIGURATION_RSP中发送,结果为“等待”,以指示L2CAP_CONFIGURATION_RSP的发送者能够接收到的最大带宽。

    在收到结果为“待定”的L2CAP_CONFIGURATION_RSP后,L2CAP可能会向控制器发出必要的检查。

    如果控制器不能支持服务类型为“保证”的扩展流规范,那么L2CAP_CONFIGURATION_REQ的接收者应发送L2CAP_CONFIGURATION_RSP,指示“失败流规范”的结果代码(0x0005)。如果控制器指示它可以支持扩展流规范,那么L2CAP_-CONFIGURATION_REQ的接收者应该发送一个结果代码为“成功”(0x0000)的L2CAP_CONFIGURATION_RSP。

    2.1.4 标准配置过程

    一般步骤

    (1)本地设备通知远程设备本地设备将使用L2CAP_CONFIGURATION_REQ接受的参数。

    (2)远程设备使用L2CAP_CONFIGURATION_RSP响应,同意或不同意这些值,包括默认值。

    (3).本地和远程设备重复步骤(1)和(2),直到对所有参数达成一致为止。

    终止配置前,定时器超时时间不能超过120s.

    配置参数类型:

    可协商:指接收L2CAP_CONFIGURATION_REQ的远程端可以通过发送具有不可接受参数(0x0001)结果代码的L2CAP_-CONFIGURATION_RSP,提出可以接受的新值。不可协商的参数只是信息性的,L2CAP_CONFIGURATION_REQ的接收者不能不同意它们,但可以对正L2CAP_CONFIGURATION_RSP中的值进行调整。

    注:MTU不可协商,但如果建议的值低于规定的最小值,则可以拒绝

    请求路径中的参数协商应采用以下规则:

    • L2CAP实体应发送至少一个L2CAP_CONFIGURATION_REQ数据包,作为初始配置或重新配置的一部分。如果所有默认或先前商定的值都是可接受的,则应发送一个没有选项的L2CAP_CONFIGURATION_REQ数据包。
    • 当L2CAP实体从远程设备接收到正L2CAP_CONFIGURATION_RSP时,它应考虑L2CAP_CONFIGURATION_REQ中显式包含的所有配置参数,以及远程设备所接受的L2CAP_CONFIGURATION_REQ中未显式包含的默认和先前同意的值 
    • 当L2CAP实体接收到负L2CAP_CONFIGURATION_-RSP并发送新的L2CAP_CONFIGURATION_REQ时,它应该包含在之前L2CAP_CONFIGURATION_REQ中发送的所有选项,除了在负L2CAP_CONFIGURATION_RSP中明确拒绝的可协商选项将有新的值。
    • 远程设备认为可以接受不包括在负L2CAP_CONFIGURATION_RSP中的可协商选项。

     响应路径中的参数协商应采用以下规则:

    • 正L2CAP_CONFIGURATION_RSP接受接收到的L2CAP_-CONFIGURATION_REQ中显式包含的所有配置参数的值,以及未显式提供的默认和先前商定的值。
    • L2CAP实体应发送一个负的L2CAP_CONFIGURATION_RSP,以拒绝不可接受的可协商的参数值,无论是在接收到的L2CAP_CONFIGURATION_REQ中明确提供的值,还是先前商定的或默认值。以负L2CAP_CONFIGURATION_RSP发送的被拒绝的参数应具有发送负L2CAP_CONFIGURATION_RSP的L2CAP实体可接受的值。
    • 所有被拒绝的可转让期权应以同一负L2CAP_CONFIGURATION_RSP被拒绝。
    • 负L2CAP配置中允许的唯一选项是被拒绝的可转让期权。不可转让期权的通配符或调整不得为负L2CAP配置RSP
    • 不包括在负的L2CAP_CONFIGURATION_RSP中的可谈判的选项被认为是可接受的。

    2.2 碎片化和重组

     碎片化是指将pdu分解成更小的部分,从L2CAP传递到下层。

    重组是从从下层传递的碎片重新组装PDU的过程。

    碎片化和重组可应用于任何L2CAPpdu。

    2.2.1 L2CAP pdu的片段

    为什么要碎片化?

    在没有HCI控制器时,方便控制传输。

     举例:BR/EDR控制器的碎片化说明

     注:BR/EDR链路控制器可以通过使用“开始”和“继续”指示来对PDU施加不同的碎片处理。因此,L2CAP和BR/EDR链路控制器都使用相同的机制来控制片段的大小

    具有BR/EDR控制器和USBHCI传输的设备中的碎片处理的示例

    2.2.2  L2CAP PDUs的重组

    为什么要进行L2CAP PDUs重组?

    控制器顺序发送数据包时,可能会进行片段重组,L2CAP重组pdu和sdu,检查一致性,丢弃与pdu长度不匹配的包。

    2.3 SDU封装

             在基本L2CAP模式下,SDU应至少用L2CAP协议元素封装,从而得到一种称为基本信息帧(b-帧)的L2CAPPDU类型。

            分割和重组操作仅在增强重传输模式、流传输模式、重传输模式和流控制模式下使用。sdu可以被分割成许多较小的数据包,称为SDU段。每个段应用L2CAP协议元件封装,从而得到一个称为信息帧(Iframe)的L2CAP PDU。

            SDU段的最大长度应由最大PDU有效载荷长度(MPS)给出。MPS参数可以使用特定于实现的接口导出到上层。

    2.3.1 L2CAPSDUs的分割

     

             在流式控制、流媒体或再传输模式中,传入的SDU可以被分解为分段,然后用L2CAP协议元素(标题和校验和字段)单独封装以形成I帧。I帧受流量控制,并可能受重传程序。报头携带一个2位SAR字段,用于识别i帧是“开始”、“结束”还是“继续”数据包,或者它是否携带一个完整的、未分割的SDU。

    2.3.2 L2CAP SDU的重新组装

            接收端使用传入“I帧”的SAR字段进行重新组装过程“SDU开始”I帧中的L2CAP SDU长度字段为
    可以使用额外的完整性检查和序列号向应用程序指示丢失的L2CAP SDU。

     2.3.3 分割和碎片化

    具有BR/EDR控制器和USBHCI转换器的设备中分割和片段处理示例

     2.4 错误L2CAP SDU的交付

             一些应用程序可能需要将损坏或不完整的L2CAPsdu交付到上层。如果启用了错误的L2CAPSDU的交付,接收方将将这些信息传递给L2CAPSDU部分(即L2CAP帧)丢失、错误检查不通过或错误检查通过的上层。如果错误的L2CAPSDU的交付被禁用,接收器应丢弃任何缺失帧或错误检查失败的任何帧的L2CAPSDU段。长度字段与实际帧长度不匹配的L2CAPSDU也应被丢弃。

    2.5 acl-u逻辑链接的操作

            在使用刷新超时选项或扩展流规范选项的L2CAP配置中,刷新超时可以根据L2CAP通道分别设置刷新超时,但在BR/EDR基带中,刷新机制按照ACL逻辑传输。 

            当有多个L2CAL通道映射到同一ACL逻辑传输时,自动刷新超时不会区分L2CAP通道。自动冲洗超时也适用于通过L2CAP无连接通道发送的单播数据。异常是通过HCI  ACL数据数据包中的Packet_Boundary_Flag标记为非自动切换的数据包。自动刷新超时刷新特定自动刷新的L2CAPPDU。HCI_Flush命令将刷新用于ACL逻辑传输的所有未完成的L2CAPPDU,包括标记为非自动切换的L2CAPPDU。因此,在使用自动刷新超时和HCI_Flush命令时必须小心。应该使用HCI_Enhanced_Flush命令。

    2.6 无连接数据通道

            在无连接通道上发送的数据只能通过BR/EDR无线电发送。无连接信道允许从主设备到微型网的所有成员的广播传输,或者从主设备或从设备到单个远程设备的单播传输。通过无连接通道发送的数据将以最大努力的方式发送。L2CAP提供的无连接信道没有服务质量。

            除了面向连接的通道外,L2CAP还提供了一个无连接的通道。在无连接通道上发送的数据只能通过BR/EDR无线电发送。无连接信道允许从主设备到微型网的所有成员的广播传输,或者从主设备或从设备到单个远程设备的单播传输。通过无连接通道发送的数据将以最大努力的方式发送。L2CAP提供的无连接信道没有服务质量。

            ·基带不提供对广播传输的确认,因此通过无连接的L2CAP信道发送的广播传输不可靠,因此可能或可能不会到达微网的每个成员。

            如果数据包被发送到PSM并且没有注册应用来接收该PSM上的数据,则接收的L2CAP实体可以无声地丢弃通过无连接的L2CAP通道接收的数据。

            L2CAP不为在基本模式下运行的面向连接的L2CAP通道或在无连接的L2CAP通道上的流量提供流量控制。因此,如果目标不接受L2CAP接收到的数据。在接收L2CAP实现中可以发生拥塞。对于面向连接的信道,如果该信道的目标应用程序不及时接受该数据,则接收器L2CAP实体可以选择关闭该信道。由于此选项不适用于通过无连接的L2CAP通道接收的单播数据,因此接收的L2CAP实体可以选择将接收数据的应用程序取消注册或断开底层物理链路。申请被注销的,应当通知该申请。如果底层物理链路被断开,则应通知所有使用该物理链路的应用程序。

            只有在远程设备表示在L2CAP扩展特性掩码中支持单播无连接的数据接收时,单播数据才能通过无连接的L2CAP通道发送到远程设备。1应使用L2CAP_INFORMATION_REQ数据包检索L2CAP扩展特性掩码,以确定是否支持单播无连接数据接收。可以选择,对单播无连接数据接收可以从通过SDP或EIR获得的信息推断出无连接数据接收的支持。例如,如果通过已知的SDP或EIR找到了要求支持UCD的服务,则可以假定表示支持该服务的设备支持单播无连接数据接收。

            通过L2CAP无连接信道发送的单播数据受自动刷新,因此应设置数据包边界标志如果控制器支持数据包边界标志功能,则应适当。因为接收L2CAP实体没有使其能够知道接收到的数据包是否最初是接收设备在发送设备上标记为可冲洗或不可冲洗L2CAP实体应处理通过无连接网络接收的所有单播数据包L2CAP包不可刷新。

            到无连接信道的广播传输与广播LT_ADDR一起发送,因此可以由图片网中的任何从端接收。如果希望将传输数据的接收限制在微型集中从节点的一个子集,那么可以使用更高级的加密来支持私有通信。

            主机将不会接收无连接网络上广播的传输频道,高层协议必须回送任何广播数据,发送到主设备的通信量。

    2.7 操作冲突解决

            当两个设备通过发送具有相同代码的请求包来请求相同的操作时,可能会发生冲突。有些操作需要解决冲突问题。这两个设备都必须知道哪个请求将被拒绝。两个设备都应使用以下算法来确定拒绝哪个请求。

    • 1.设置i=0(代表BD_ADDR中最不重要的八位字节)
    • 2.比较两种设备的BD_ADDR的八重奏。如果八进制不相等,请执行步骤4。
    • 3.增加i乘以1。进入步骤2
    • 4.具有较大的BD_ADDR八字节的设备应拒绝来自其他设备的请求。

    2.8 数据优先HCI

            为了保证的通道满足其保证,L2CAP应优先考虑支持HCI的设备中的流量而不是HCI传输。保证通道的包应该比最佳努力通道的包获得更高的优先级。

    3.流量控制和重传的程序

             当使用增强式重传模式、流媒体模式、流式控制模式或重传模式时,应使用本章中定义的程序,包括信息帧的编号、SDU分割和重组的处理,以及有错误的帧的检测和通知。重传输模式和增强的重传输模式还允许发送方根据接收方的请求重新发送带有错误的帧。

    3.1 信息检索

            在尝试在信道上配置增强的再传输模式、流媒体模式、流式控制模式或再传输模式之前,应通过对“支持的扩展特性”信息类型(0x0002)执行信息检索来验证对建议模式的支持。如果信息检索不成功或未设置“扩展特征掩模”位,则在配置请求中不建议使用该模式。

     3.2 pdu类型的流量控制和重传的功能

             为增强型重传模式、流媒体模式、流式控制模式和重传模式定义了两种帧格式。I帧用于传输用户信息,而不是b帧。s型框架用于监督。

    展开全文
  • 我们就结合前面的知识来分析下raw data,加深我们上面的理解: 步骤1)我们发送L2CAP Connection Request with RFCOMM PSM,对方回复L2CAP Connection Response ① 我们L2CAP Connection Request with RFCOMM PSM ...

    一. 声明

    本专栏文章我们会以连载的方式持续更新,本专栏计划更新内容如下:

    第一篇:蓝牙综合介绍 ,主要介绍蓝牙的一些概念,产生背景,发展轨迹,市面蓝牙介绍,以及蓝牙开发板介绍。

    第二篇:Transport层介绍,主要介绍蓝牙协议栈跟蓝牙芯片之前的硬件传输协议,比如基于UART的H4,H5,BCSP,基于USB的H2等

    第三篇:传统蓝牙controller介绍,主要介绍传统蓝牙芯片的介绍,包括射频层(RF),基带层(baseband),链路管理层(LMP)等

    第四篇:传统蓝牙host介绍,主要介绍传统蓝牙的协议栈,比如HCI,L2CAP,SDP,RFCOMM,HFP,SPP,HID,AVDTP,AVCTP,A2DP,AVRCP,OBEX,PBAP,MAP等等一系列的协议吧。

    第五篇:低功耗蓝牙controller介绍,主要介绍低功耗蓝牙芯片,包括物理层(PHY),链路层(LL)

    第六篇:低功耗蓝牙host介绍,低功耗蓝牙协议栈的介绍,包括HCI,L2CAP,ATT,GATT,SM等

    第七篇:蓝牙芯片介绍,主要介绍一些蓝牙芯片的初始化流程,基于HCI vendor command的扩展

    第八篇:附录,主要介绍以上常用名词的介绍以及一些特殊流程的介绍等。

    另外,开发板如下所示,对于想学习蓝牙协议栈的最好人手一套。以便更好的学习蓝牙协议栈,相信我,学完这一套视频你将拥有修改任何协议栈的能力(比如Linux下的bluez,Android下的bluedroid)。

    ------------------------------------------------------------------------------------------------------------------------------------------

    CSDN学院链接(进入选择你想要学习的课程):https://edu.csdn.net/lecturer/5352?spm=1002.2001.3001.4144

    蓝牙交流扣扣群:970324688

    Github代码:https://github.com/sj15712795029/bluetooth_stack

    入手开发板:https://item.taobao.com/item.htm?spm=a1z10.1-c-s.w4004-22329603896.18.5aeb41f973iStr&id=622836061708

    蓝牙学习目录https://blog.csdn.net/XiaoXiaoPengBo/article/details/107727900

    ------------------------------------------------------------------------------------------------------------------------------------------

    二. L2CAP的连接流程(以主动连接RFCOMM为例)

    整个过程连接流程如下:

    其中红色就是SIGNALING command,也就是C-frame,绿框是SDU(解释见截图),也就是B-frame

    整理流程如下:

    步骤整理如下:

    步骤1)我们发送L2CAP Connection Request with RFCOMM PSM,对方回复L2CAP Connection Response

    步骤2)我们发送L2CAP Configure Request配置请求 with MTU,对方回复L2CAP Configure Response

    步骤3)当MTU不符合要求的时候,对方发送L2CAP Configure Request配置请求with MTU,我们会送L2CAP Configure Response

    步骤4)后续的SDU的交互。

    我们就结合前面的知识来分析下raw data,加深我们上面的理解:

    步骤1)我们发送L2CAP Connection Request with RFCOMM PSM,对方回复L2CAP Connection Response

    ① 我们L2CAP Connection Request with RFCOMM PSM

    在这里我们还是重复下C-frame的封包格式,上面已经介绍,下面用到C-frame的时候格式我们就不再介绍。

    其中Information Payload格式为

    那么本步骤connection request以及connection response用到的information payload如下:

    Raw data分析

    08 00 01 00 02 04 04 00 03 00 41 00(hex data)

    08 00 -> payload len,也就02 01 04 00 01 00 40 00

    01 00->Signaling channel

     

    02 -> Code,L2CAP_CONNECTION_REQ (CODE 0x02)

    04->Identifier

    04 00 -> data的长度,也就是01 00 40 00

    03 00->PSM,0x0003就是RFCOMM

    40 00->0x0040,Source cid

    ② 对方回复L2CAP Connection Response

    L2CAP raw data为:0C 00 01 00 03 04 08 00 42 00 41 00 00 00 00 00

    0c 00 -> 整个L2CAP payload长度,也就是 03 04 08 00 42 00 41 00 00 00 00 00

    01 00-> Signaling channel

    03 -> L2CAP_CONNECTION_RSP (CODE 0x03)

    04 ->Identifier,可以看到跟connect req是一样的

    08 00->data长度,也就是42 00 41 00 00 00 00 00长度

    42 00 -> Destination CID

    41 00->Source CID

    00 00->Result connection successful

    00 00->Status

    步骤2)我们发送L2CAP Configure Request配置请求 with MTU,对方回复L2CAP Configure Response

    用到的C-frame information payload格式如下:

    ①我们发送L2CAP Configure Request配置请求 with MTU‘

    L2CAP raw data为0C 00 01 00 04 05 08 00 42 00 00 00 01 02 8E 04

    0c 00 -> 后续payload长度,也就是04 05 08 00 42 00 00 00 01 02 8E 04的长度

    01 00-> Signaling channel

    04 ->L2CAP_CONFIGURATION_REQ (CODE 0x04)

    05 ->Identifier

    08 00-> 后续的data长度

    42 00 -> Destination CID,在connection response的回复的

    00 00->Flags (2 octets),no continye

    01 02 8e 04是config opt,整个配置选项格式如下:

    那MTU的格式如下:

    01 -> MTU的type

    02 -> length

    8e 04 -> 0x48e = 1166byte

    ②对方回复L2CAP Configure Response

    0A 00 01 00 05 05 06 00 41 00 00 00 00 00

    0A 00-> 后续payload长度,也就是 05 05 06 00 41 00 00 00 00 00长度

    01 00-> Signaling channel

    05 ->L2CAP_CONFIGURATION_RSP (CODE 0x05)

    05 -> Identifier

    06 00 -> 后续的data长度

    41 00-> Source CID

    00 00->flag no continue

    00 00->Result

    步骤3)当MTU不符合要求的时候,对方发送L2CAP Configure Request配置请求with MTU,我们会送L2CAP Configure Response

    这个交互跟2)基本一样,所以不再重复说明

    步骤4)后续的SDU的交互

    SDU的我们走的basic mode,格式如下:

    Raw data为:04 00 42 00 03 3F 01 1C

    04 00 -> payload length是4

    42 00 -> CID

    03 3F 01 1C -> 数据,也就是rfcomm数据

     

    OK,本章结束

    展开全文
  • 一、L2CAP概述

    2021-06-17 08:06:48
    1、L2CAP:即Logical Link Control and Adaptation Layer Protocol,是介于上层和底层(例如HCI)之间的一种数据交互的媒介

    1、L2CAP:即Logical Link Control and Adaptation Layer Protocol,是介于上层和底层(例如HCI)之间的一种数据交互的媒介

    主要功能:

    1)Protocol/channel multiplexing,协议/通道的多路复用;

    2)Segmentation and reassembly,上层应用数据(即L2CAP Service Data Units,SDUs)的分割和重组;

    3)Flow control per L2CAP channel,基于L2CAP Channel的流控机制;

    4)Error control and retransmissions,错误控制和重传机制;

    5)Support for Streaming,支持流传输(如音频、视频等,不需要重传或者只需要有限重传);

    6)Fragmentation and Recombination,PDU(Protocol Data Unit)的分片和重组

    7)Quality of Service,QoS的支持。

    2、相关概念

    (1)Upper layer:表示L2CAP的上层(统称Service Level Protocol),和L2CAP层之间使用SDU进行数据交互

    (2)Lower layer:表示L2CAP的底层(在Controller内部,可以认为是HCI),和L2CAP之间使用PDU(或者PDU碎片)进行数据交互

    (3)L2CAP channel:两个设备之间的逻辑链路,每个L2CAP channel都会用CID(Channel Identifiers)表示

    (4)SDU或者L2CAP SDU:Service Data Unit,即L2CAP和上层交互用的数据包

    (5)Segment或者SDU segment: SDU的一部分,在Enhanced Retransmission、Streaming、 Retransmission和Flow Control模式会用到,Basic L2CAP模式不会用到

    (6)PDU或者L2CAP PDU:Protocol Data Unit,即L2CAP和底层交互用的数据包,以Basic L2CAP header开头,分为:B-frames、I-frames、S-frames、C-frames和G-frames.

    (7)Basic L2CAP header:PDU的开头,包含数据长度和CID

    (8)B-frame :即Basic information frame,用于Basic L2CAP模式的PDU,组成:Basic L2CAP header、一个完整的SDU。

    (9)I-frame:即Information frame,在Enhanced Retransmission、Streaming、 Retransmission和Flow Control模式会用到,组成:Basic L2CAP header、一个SDU segment、一些额外的协议信息

    (10)S-frame:即Supervisory frame,在Enhanced Retransmission、Retransmission和Flow Control模式会用到,这里面只包含协议信息,不包含SDU数据,组成:Basic L2CAP header、协议信息

    (11)C-frame:即Control frame,这里面包含的是L2CAP signaling消息,C-frame是用在L2CAP signaling通道上的,组成:Basic L2CAP header、L2CAP signaling消息

    (12)G-frame:即Group frame,只能用来Connectionless L2CAP通道上,用于单播或者组播,组成:Basic L2CAP header、一个完成的SDU、和PSM

    (13)LE-frame :即LE Information frame,用于LE Credit Based Flow Control模式,组成:Basic L2CAP header、一个SDU segment、一些额外的协议信息

    (14)Fragment:PDU的一部分,用于和底层的数据交互

    (15)MTU:即Maximum Transmission Unit,SDU的最大size

    (16)MPS:即PDU payload Size,PDU的最大负载size,所以在Basic L2CAP模式下或者没有碎片的情况下,MTU=MPS

    (17)MTUsig:即Signaling MTU,Signaling SDU的最大size,也是C-frame除了Basic L2CAP header以外剩余的size

    (18)MTUcnl:即Connectionless MTU,即G-frame除了Basic L2CAP header以外剩余的size

    (19)MaxTransmit:Enhanced Retransmission和Retransmission模式下,PDU的最大重传次数,最小值是1,设置1表示禁止重传(注意:Enhanced Retransmission模式下这个值可以设置为0,表示无限重传)

    3、CID(channel identifier)

    (1)CID用来表示L2CAP channel的。本地设备和多个远端设备连接时,本地设备和每个远端设备都有一套独立的CID,不同远端设备之间的CID可能相同,他们之间是通过逻辑链路来区分的。

    (2)CID分为NULL CID(0x0000)、Fixed Channels CID(0x0001-0x003F)和dynamically allocated CID(0x0040-0xFFFF)

    注意:CID在ACL-U、AMP-U、LE-U逻辑链路上的命名区间是不一样的,ACL-U和AMP-U共享一个命名区间:

    LE-U的命令区间:

    (3)L2CAP command和event流程图:

    (4)L2CAP channel的五种操作模式:

    (a)Basic L2CAP Mode:默认模式,最常用的一种模式,如果两个设备其他模式都失败,那么可以使用这种模式

    (b)Flow Control Mode:这种模式下不会重发,但是会检测和报告丢失的PDUs

    (c)Retransmission Mode:这种模式要保证所有的PDUs都发送到对方设备,有一个定时器,如果没有发送到对方设备,定时器超时会重发,还可以设置重发次数(go-back-n)

    (d)Enhanced Retransmission Mode:这种机制和Retransmission Mode相似,但是增加了一个POLL位(请求远端设备回复)、SREJ S-frame(提高错误检测的有效性)和RNR S-frame(代替R-bit,用来报告本地设备处于忙碌状态)

    注意:Flow Control mode、Retransmission mode和Enhanced Retransmission mode时,PDUs都会被编号并被识别(注意:这里面的识别都是对方确认收到的意思)

    Streaming Mode:这种模式用于实时同步数据交互时,PDUs会被编号但是不会被识别,发送端要有超时机制用来处理未及时发送的数据,接收端如果满了会覆盖之前收到的PDUs,同时报告被覆盖的PDU丢失。

    (e)LE Credit Based Flow Control Mode:只能用于LE L2CAP channel

    展开全文
  • L2CAP信令封包(SIGNALING PACKET)格式

    千次阅读 2020-08-13 07:57:04
    8.L2CAP_ECHO_REQ (CODE 0x08) 用来请求一个L2CAP的ECHO response,格式如下: 9.L2CAP_ECHO_RSP (CODE 0x09) 回复一个echo rrequest,格式如下: 10.L2CAP_INFORMATION_REQ (CODE 0x0A) 用来请求一些信息,格式...
  • BLE主机之L2CAP

    2020-12-24 01:09:38
    本文介绍L2CAP 部分L2CAP 的全称是 逻辑链路控制和适配协议, L2CAP 是低功耗蓝牙的复用层,该层定义两个基本概念L2CAP 信道和L2CAP 信令,L2CAP 信道是一个双向数据通道,通向对端设备上的某一特定的协议或规范,...
  • Bluetooth L2CAP介绍

    2019-05-09 09:54:35
    Bluetooth L2CAP介绍 阅读目录 1. 介绍 2. 实现 3. 通用操作 4. 数据包格式 5. 信号包格式 6. 参数配置选项 7. 状态机 回到顶部 1. 介绍 L2CAP,Logical Link Control and Adaptation Protocol,即逻辑...
  • 蓝牙协议规范--L2CAP

    2021-06-09 14:04:10
    L2CAP 分析 记住一点,软件和硬件分开理解,数据经由物理通道交互,上层通道由各层协议打通。 L2CAP 全称为逻辑链路控制与适配协议(Logical Link Control and Adaptation Protocol),位于基带层之上,将基带层的...
  • 1、L2CAP概述L2CAP-全称是逻辑链路控制与适配层,为两个通信的蓝牙设备提供一个端到端的通道。L2CAP主要功能:1.协议信道复用(protocol/channel multiplexing)2.分段与重组(segmentation and reassembly SAR)3.每个...
  • L2CAP数据格式 L2CAP的数据格式除非特别声明,否则都是小端 L2CAP一共有记下几个操作模式 • Basic L2CAP Mode((equivalent to L2CAP specification in Bluetooth v1.1) 默认模式,在未选择其他模式的情况下,用此...
  • L2cap层是连接hci和上层profile的中转站,我们之前分析包格式的时候就说过,payload header中的llid如果标示是acl-u的话,说明就是个l2cap包。 上层profile在连接的时候,都需要先建立l2cap逻辑链路,每个逻辑链路...
  • 文章转载自:http://www.sunyouqun.com/2017/04/page/2/逻辑链路控制与适配协议通常简称为L2CAP(Logical Link Control and Adaptation Protocol),它向上...经典蓝牙的L2CAP层比较复杂,它实现了协议复用、数据分...
  • 蓝牙协议系列之(四) L2CAP

    万次阅读 多人点赞 2018-06-15 14:12:16
    4 L2CAP Protocol4.1 功能介绍经过Link Layer的抽象之后,两个BLE设备之间可存在两条逻辑上的数据通道:一条是无连接的广播通道,海阔凭鱼跃嘛;另一条是基于连接的数据通道,是一个点对点(Master对Slave)的逻辑...
  • 本小结主要阐述主机的A部分,逻辑链路控制和适配协议规范(L2CAP)。支持更高级别的协议多路复用、分组分割和重组,以及服务质量信息的传输。协议状态机描述了本规范的包格式和组成。 1.L2CAP作用 为上层协议...
  • 文章目录前言L2CAP 特性前提术语常规操作通道标识符操作模式数据包格式 蓝牙逻辑链路控制和适配协议 (L2CAP) 支持更高级别的协议复用、数据包分段和重组以及服务质量信息的传送。 规范的本部分描述了协议状态机、...
  • Bluetooth L2CAP 学习

    2020-07-01 18:36:06
    CID (Channel ID) 在L2CAP层的很重要。 其中有一些固定的CID,比如在ACL_U逻辑链路上, 0x0001 代表Signaling channel 0x0002 代表无连接的信道 0x0040~0xFFFF 用于动态分配(主要用于connection-orientation ...
  • 12-BLE协议L2CAP

    2020-10-28 16:54:24
    学习资料:官方手册 Vol 3: Core System Package [Host volume] Part A: Logical Link Control and Adaptation Protocol Specification 建议先复习《BLE协议各层的形象化理解》,下面是...L2CAP是“收发室”,它熟知
  • 逻辑链路控制与适配协议通常简称为L2CAP(Logical Link Control and Adaptation Protocol),它向上连接host,向下连接controller,起到host与controller之间适配的作用,使上层应用操作无需关心控制器的数据处理...
  • EEE
  • 蓝牙L2CAP剖析(二)

    千次阅读 2016-05-10 17:42:15
    关键字:bluetooth 蓝牙协议 HCI剖析 HCI概述 HCI笔记 LMP L2CAP SDP RFCOMM  作者:zhongjun 本着互相学习的目的,来分享此一系列的文章,欢迎转载,请注明作者,尊重版权,谢谢 文章有不当处请指正,共同...
  • 蓝牙学习笔记之L2CAP协议(二)

    千次阅读 2019-02-13 20:50:54
    L2CAP协议浅述 L2CAP简介 通用操作 信道标识符 两个设备间操作 层级间操作 信道工作模式 数据包传输格式 面向连接通讯 无连接通讯 在重传、流控、流模式下的面向连接的通讯 在LE credit模式下的面向连接...
  • 本章节主要讲述蓝牙host层的协议,针对BLE,主要关注L2CAP、GATT/ATT、SMP、GAP这几层。根据spec的章节顺序,我们一次讲解: PART A:A: LOGICAL LINK CONTROL AND ADAPTATION PROTOCOL SPECIFICATION 1. L2CAP...
  • L2CAP数据发送和接收

    2017-06-22 20:28:00
    ACL 链路在 Bluetooth 中非常重要,一些重要的应用如 A2DP, 基于 RFCOMM 的应用。...(一)ACL包发送以下的图是各种应用层使用 L2CAP 的 API:L2CA_DataWrite 发送数据流的过程,此API继续往下走,我仅分析...
  • 甚至当前是属于多个在主机控制器里的L2CAP指令的数据块 Read PIN Type 0x0009 主机读取指定主机的PIN类型是可变的还是固定的 Write PIN Type 0x000A 主机写入指定主机的PIN类型是可变的还是固定的 Create New Unit ...
  • 第一个LE-frame携带载荷信息的长度等于L2CAP头长度指示的长度 - 2,随后的LE-frame携带信息载荷长度等于L2CAP头长度。 接收端发起断开信道的场景: 1)SDU长度域 > 接收端MTU;2)LE-frame载荷长度 > 接收端MPS;3...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,208
精华内容 4,483
关键字:

l2cap