L2CAP

###############################################

1 INTRODUCTION
L2CAP提供有连接和无连接的数据服务。

L2CAP还提供每个通道的流控和重传。

 

1.1 L2CAP FEATURES
SAR:segmentation and reassembly

L2CAP位于

  BR/EDR控制器和0~多个AMP控制器上

  BR/EDR/LE控制器(支持BR/EDR和LE)以及0~多个AMP控制器上

  LE控制器(仅支持LE)

信道管理器:提供控制平台功能和负责所有内部信号。

重传和流控块提供每个信道的留空和错误恢复。

资源管理器负责提供帧中继。

 

###############################################

 2 GENERAL OPERATION
L2CAP基于信道的概念,每一个信道都用一个CID表示。

 

2.1 CHANNEL IDENTIFIERS
CID:0x0000是不可以使用的,0x0001到0x003F保留给指定的L2CAP功能。

最少,L2CAP信号信道0x0001或者L2信号信道0x0005必须支持。

支持了0x0005的话,那么0x0004和0x0006也必须支持,其他的可能支持。

请求、响应机制必须用来确定远程设备通过ACL-U使用的固定信道。

 

每个固定信道的特征基于信道基础上,并且有一些配置参数、安全、以及使用L2CAP配置机制改变参数。

 

 固定CID号的两个表格:

Table 2.1: CID name space on ACL-U logical link

Table 2.2: CID name space on LE-U logical link

 

2.2 OPERATION BETWEEN DEVICES

 设备间可以用于面向连接的、广播的或者单播面向无连接的数据。

 

2.3 OPERATION BETWEEN LAYERS

 L2CAP应用于上下层协议的数据传输。

 

 2.4 MODES OF OPERATION

  • 基本L2CAP模式:是默认的模式,不用其他模式的时候就使用这个。
  • 流控模式:只能用于当L2CAP之间不支持加强重传和流模式的时候。
  • 重传模式:只能用于当L2CAP之间不支持加强重传和流模式的时候。
  • 加强重传模式:用于AMP-U和ACL-U上可信任的信道。
  • 流模式:用于流应用
  • LE信用流控模式

流控、重传和加强重传模式下,交换的PDU是计数并且通知的。PDU中的序列号用来控制缓冲,TxWindow用来限制缓冲听见用以提供流控。

流控模式下没有重传,但是丢掉的PDU可以被检测并且报告丢失。

重传模式使用一个定时器。

加强重传模式在重传模式上加了一个POLL位来向远程的L2CAP实体索要响应。

流模式是实时的。

2.5 MAPPING CHANNELS TO LOGICAL LINKS

所有的逻辑链路都在本地与远程控制器单一物理链路执行。
每个BR/EDR物理链路上只有一个ACL-U逻辑链路、每个LE物理链路上只有一个LE-U逻辑链路,但是AMP-U却不是。
当一个有保障的信道在一个控制器上被创建,那么相关的有保障的逻辑链路必须要被创建出来执行这个信道传输。
有保障的逻辑链路包含准入控制。
准入控制是一个保障,具体不知道啥意思。
对于AMP控制器,L2CAP必须告诉控制器创建一个有保障的逻辑链路和准入控制。
对于BR/EDR控制器,准入控制必须由L2CAP层执行。



###############################################

3 DATA PACKET FORMAT


3.1 CONNECTION-ORIENTED CHANNELS IN BASIC L2CAP MODE

 

Length:除去header之外的长度

Channel ID:表示了包的目标端点

Information payload:包含了从上层收到的包或者要发出去的包。

3.2 CONNECTIONLESS DATA CHANNEL IN BASIC L2CAP MODE

Length:表示载荷加上PSM

Channel ID:0x0002

PSM:最少2字节

载荷:0~65533字节

 

3.3 CONNECTION-ORIENTED CHANNEL IN RETRANSMISSION/FLOW CONTROL/STREAMING MODES

I-frames用来传输;S-frame用来确认I-frame和请求I-frame的重发。

 

。。。。。。。。。。。。。

 

 

###############################################

7 GENERAL PROCEDURES

7.1 CONFIGURATION PROCESS

有两种配置过程,一种是标准过程,另外一种是同步(Lockstep)过程。

后者在L2CAP支持拓展流规范的时候必须使用,否则就必须使用标准过程。

两种过程都必须是独立、单向,有时候是平行的。

同步过程可以分解成两个阶段:

  • 在非初始化参数中包含的拓展流选项中,把本地的控制器配置成配对的模式。
  • 每个设备都要把本地的结果报告给远程设备。

两个过程都可以抽象为请求配置路径和响应配置路径。

7.1.1 Request Path
请求路径可以配置:

  • requester’s incoming MTU
  • requester’s outgoing flush timeout
  • requester’s outgoing QoS
  • requester’s incoming and outgoing flow and error control information
  • requester's incoming and outgoing Frame Check Sequence option
  • requester's outgoing QoS using Extended Flow Specification option
  • requester's incoming Extended Window size option plus incoming and outgoing frame format.

表中是可能用到的配置选项

7.1.2 Response Path
配置下面的:

  • responder’s outgoing MTU, that is the remote side’s incoming MTU
  • remote side’s flush timeout
  • responder’s incoming QoS Flow Specification (remote side’s outgoing QoS
  • Flow Specification)
  • responder’s incoming and outgoing Flow and Error Control information
  • responder's incoming QoS Extended Flow Specification (remote side's
  • outgoing QoS Flow Specification)
  • responder's outgoing Extended Window size.

对于标准过程,如果一个面向请求的参数不在请求消息里,远程设备会商议一个非默认的值。

7.1.3 Lockstep Configuration Process

7.1.4 Standard Configuration Process

 

7.2 FRAGMENTATION AND RECOMBINATION
破碎是从L2CAP数据发到底层。

重组是组装底层来的数据。

破碎和组装可能用于任何L2CAP的PDU。

 

7.2.1 Fragmentation of L2CAP PDUs
如果L2CAP没有HCI,直接跑在控制器上,那么一个应用可能会把PDU分成几个控制器的包。

如果跑在了HCI上,就借助HCI分包,跑在控制器。

总之,所有的L2CAP,只要和L2CAP PDU有关联,都应该由控制器发出去。

 

7.2.2 Recombination of L2CAP PDUs
控制器将按顺序且无措地传输数据包。

随便的重组在控制器中,但最终是L2CAP的责任(重组PDU和SDU和计算SDU的长度)。

控制器收到包的时候,他不会再每个碎片到达的时候通知L2CAP也不会再接收缓冲满或者定时器耗尽之前叠加任何一个碎片。

如果PDU的长度区域匹配失败,那么整个包就会被丢弃。

 

posted on 2016-06-14 14:37  Bernerd  阅读(823)  评论(0)    收藏  举报