蓝牙学习-L2CAP

L2CAP - Logical Link Control and Adaptation Protocol

L2CAP协议提供更高层面的多路复用协议和数据包封装能力。L2CAP是RFCOMM和BNEP协议的基础。L2CAP是整个蓝牙协议栈里不需要直接被应用调用的模块。但是当你自己开发一个蓝牙协议栈的时候,直接访问L2CAP是有意义的。

L2CAP服务能力

下面可能出现的缩写解释:

PSM:Protocol and Service Multiplexer
MTU:maximal transfer unit
ERTM:Enhanced Retransmission Mode
CBM:Credit-Based Flow-Control Mode
ECBM:Enhanced Credit-Based Flow-Control Mode
LE:Low Energy


PSM(协议和服务复用者定义)

1,L2CAP提供5种信道类型:

L2CAP_CHANNEL_TYPE_CLASSIC,         // Classic Basic or ERTM   
L2CAP_CHANNEL_TYPE_CONNECTIONLESS,  // Classic Connectionless   
L2CAP_CHANNEL_TYPE_CHANNEL_CBM,     // LE   
L2CAP_CHANNEL_TYPE_FIXED,           // LE ATT + SM, Classic SM   
L2CAP_CHANNEL_TYPE_CHANNEL_ECBM     // Classic + LE

2,L2CAP提供5种连接方式:

BASIC:一般蓝牙连接
ERTM:增强重发模式
CBM:可信连接模式
ECBM:增强可信连接模式
LE:低功耗连接模式

3,L2CAP提供的主要方法:

l2cap_init
l2cap_add_event_handler
l2cap_remove_event_handler
l2cap_create_channel
l2cap_disconnect
l2cap_reister_service
l2cap_unregister_service
l2cap_accept_connection
l2cap_decline_connection
l2cap_can_send_packet_now
l2cap_request_can_send_now_event
l2cap_reserve_packet_buffer
l2cap_get_outgoing_buffer
l2cap_send_prepared
l2cap_release_packet_buffer

远程访问L2CAP服务

L2CAP是建立在channel上的服务。每个channel都是一个建立在基带上的逻辑链路。每个channel都可绑定一个协议(协议可以绑定多个channel)。多个channel共用一个基带。

远端设备访问本地L2CAP服务的步骤:

1,本地应用初始化L2CAP服务,l2cap_init
2,本地应用建立对外channel并对应远端设备使用的PSM,l2cap_create_channel
3,本地应用注册服务,l2cap_register_service
4,本地应用等待远端设备的L2CAP的连接请求,可以接受也可以拒绝
5,如果接受连接那么进入channel会被打开,然后就可以发送接受远端数据了,l2cap_send
6,为了避免发送速度大于实际空口能力建议在发送前确认是否可发,l2cap_request_can_send

LE数据channel

发送LE数据需要用LE专属的信道模式,LE CBM。在这个模式下,数据是通过SDUs(Service Data Units)进行发送的,发送数据的大小大于HCI LE ACL的包大小。

LE的数据channel和经典的L2CAP信道相似,但是也提供CBM连接方式。除非4.2的标准被应用,最大的可发包大小为27字节。为了发送更大的数据可以分拆成多个ACL包进行发送。

备注:

蓝牙版本

蓝牙技术联盟自成立以来,发布的蓝牙标准主要有五个版本:
1. 蓝牙1.0:基本码率(BR),空中速率1Mbps,采用GFSK调制方式;
2. 蓝牙2.0:增强码率(EDR),空中速率2~3Mbps,采用DPSK、QPSK调制方式;
3. 蓝牙3.0:高速(HS),空中速率24Mbps,采用802.11调制方式,并引入了全新的交替射频技术;
4. 蓝牙4.0:蓝牙技术的第一个综合性规范,不仅包括了传统蓝牙技术(BR/EDR)和高速蓝牙技术(HS),还加入了全新的低功耗蓝牙技术,空中速率24Mbps;
5. 蓝牙5.0:目前蓝牙技术的最新版本,针对物联网的应用做了很多优化,空中速率24Mbps。

你可能感兴趣的:(蓝牙学习-L2CAP)