关于蓝牙协议栈体系结构


 

和菜鸟一起学linux之bluez学习记录1_链路管理


和菜鸟一起学linux之bluez学习记录1_链路_02

底层硬件模块

 

和菜鸟一起学linux之bluez学习记录1_流控制_03

RF

1、利用2400M~2483.5M频带

2、采用调频方式传输数据,一共有79/EDR,40/BLE个hops,每秒

3、采用GFSK(DQPSK和8DPSK)调制方式

4、信道间隔(1MHZ/EDR模式,2MHZ/BLE模式)

 

BB

蓝牙系统提供点对点或点对多点的连接,在连接中设备共享物理信道,称为piconet。一个设备做为master,其他的设备作为slave。pico网中最多可支持7个活动的slave。其他的处于非活动状态。这些非活动slave仍需要保持与master的同步,通道的访问由master来控制。

    对所有调制方式,符号率均为1Ms/s。这样BR是1Mbps,EDR DQPSK是2Mbps,EDR 8DPSK是3Mbps。

包格式

和菜鸟一起学linux之bluez学习记录1_流控制_04



蓝牙地址

和菜鸟一起学linux之bluez学习记录1_链路_05


1、物理通道

2、蓝牙物理通道由伪随机频率hopping序列,特定的时间slot,访问码和包头编码构成。

3、两个设备为了通信,需要使用共享信道,这样就需要两者必须在同一时刻使用相同的频         

率。

4、hopping序列有蓝牙设备地址中UAP和LAP决定,timeslot长度取决于物理通道,在连接状态下最大的hop率为1600hops/s,inquiry和page状态下为3200hops/s。

四种物理通道

1、基本pico网通道 2、自适应pico网通道 3、Page scan物理通道 4、inquiryscan物理通道

物理连接

包括电源控制,link监控,加密和链路管理协议,通道数据率变化,多slot包控制。

 

五种逻辑传输

1、SCO 基于同步连接逻辑传输 2、ESCO扩展SCO 3、ACL 异步逻辑传输

4、ASB 活动Slave广播 5、PSB  Parked Slave广播

 

LMP

1、链路管理协议

2、用于链路的建立和控制,信号在链路管理层被解析和过滤,不会传递至上层。

3、协议由一系列的消息构成,这些消息通过ACL-C逻辑传输。

 传输示意图

和菜鸟一起学linux之bluez学习记录1_流控制_06

包格式


 

和菜鸟一起学linux之bluez学习记录1_流控制_07

主要功能

1)连接控制:连接建立,断开,电源控制,自适应频率hopping,通道分类, 链路监控,通道质量驱动数据率变化,Qos,Paging参数,多slot包控制,EDR,LMP PDU封装。

2)安全:认证,配对,改变link key,改变当前link key类型,加密,请求加密keysize,简单安全配对。

3)信息请求

4)功能切换

5)操作模式

6)逻辑传输

7)测试模式

HCI

为控制器定义了统一的命令接口

1)流控制

2)HCI数据格式

3)HCI配置参数

4)HCI命令和事件

HCI流控制

Host到控制器数据流控制

基于包的数据流控制

基于块的数据流控制

控制器到Host数据流控制

命令流控制

断开行为

命令错误处理

 

和菜鸟一起学linux之bluez学习记录1_流控制_08

 

HCI命令和事件

1)链路控制命令

2)链路策略命令

3)控制和基带命令

4)消息参数

5)状态参数

6)测试命令

7)事件

8)LE控制器命令

 

中间协议层


 

和菜鸟一起学linux之bluez学习记录1_链路管理_09

L2CAP

框架图

和菜鸟一起学linux之bluez学习记录1_链路_10


流控制与重传过程 和AMP通道建立和处理过程

SDP

该规范定义了蓝牙设备提供的本地服务协议。

Some examples of service attributes:

和菜鸟一起学linux之bluez学习记录1_链路_11

和菜鸟一起学linux之bluez学习记录1_链路管理_12


Example Service Browsing Hierarchy



和菜鸟一起学linux之bluez学习记录1_流控制_13


services records and service attributes

和菜鸟一起学linux之bluez学习记录1_链路_14

 

GAP

该profile定义了发现蓝牙设备的通用过程(idle模式过程),和连接到蓝牙设备的链路管理方面(连接模式过程)。它还定义了不同安全级别下的过程。

定义了表示蓝牙的参数

1)BD_ADDR

2)蓝牙设备名

3)蓝牙PIN

4)设备类型

配对

安全方面

1)认证

2)安全模式

IDLE模式过程

建立过程

1)LINK建立

2)通道建立

3)连接建立

扩展Inquiry响应数据格式

LE相关的特殊规范

 

GATT

GATT是基于attribute协议的服务框架。

    功能:描述了怎样使用attribute协议来发现、读、写和获取这些属性的标志,以及配置属性的广播。

client:对于service启动命令和请求,可以接收service端的响应、指示和通知。

service:接受来自client端的命令和请求,发送响应,指示和通知给client端。

例如:

client:电脑终端

service:温度计

电脑终端启动程序配置温度计或者读取温度计的值。

温度计提供其特性的信息,例如其温度的服务和其他被允许的可写的一些特性等。

用户需求

1、可改变的配置

2、发现设备上的服务和特性

3、读取一个特性值

4、写入一个特性值

5、通知的特性值

6、指示的特性值

SMP

用于LE设备间的配对,认证和加密管理。

 

高端应用层

和菜鸟一起学linux之bluez学习记录1_链路_15

 

蓝牙规范


和菜鸟一起学linux之bluez学习记录1_流控制_16

基本蓝牙规范

和菜鸟一起学linux之bluez学习记录1_链路_17

个例说明

1、GATT based中的HTP

2、BR/EDR Profiles中的A2DP

3、BR/EDR Protocols 中的AVDTP

 

Health Thermometer Profile (HTP)

和菜鸟一起学linux之bluez学习记录1_链路管理_18

 

Advanced Audio Distribution Profile (A2DP)

 

和菜鸟一起学linux之bluez学习记录1_链路管理_19

Audio/Video Distribution Transport Protocol(AVDTP)

和菜鸟一起学linux之bluez学习记录1_流控制_20

 

linuxbluez体系结构

 

和菜鸟一起学linux之bluez学习记录1_链路_21

 

Bluetooth的Bt_io

 

和菜鸟一起学linux之bluez学习记录1_链路_22

Bluetoothd启动过程

 

和菜鸟一起学linux之bluez学习记录1_链路_23

 

Bluetooth扫描设备过程

 

和菜鸟一起学linux之bluez学习记录1_流控制_24