蓝牙协议栈由主机 + HCI(可选) + 控制器三大块组成,其中对于单芯片方案是没用HCI的。
- 主机(Host) :主机部分由核心协议层(L2CAP、SDP、SMP、ATT)和核心规范(GAP、GATT)构成;
- 控制器(Controller):此部分拆分为低功耗蓝牙(Vol 6: Low Energy Controller)和经典蓝牙(Vol 2: BR/EDR Controller)两个章节说明
- HCI:此部分定义了主机和控制器之间通信的接口标准(Vol 4: Host Controller Interface),可以是UART、USB等通信方式。
上图中红色部分是BR/EDR经典蓝牙的必选项,绿色部分是LE低功耗蓝牙必选项,蓝色部分是公共部分;当然经典蓝牙也可以具备绿色部分特性。HCI接口根据芯片架构有关,是可选项。两者在物理层的差异性图中没有体现,不涉及芯片设计。
1、GAP规范(通用接入规范):定义了所有蓝牙设备的基础功能,设备间发现、连接、配对绑定的流程;蓝牙设备中四种角色;广播和扫描响应报文的格式;还有一些通用蓝牙参数定义,比如设备地址、名称、配对秘钥和设备的外观特征值,用于区分是什么设备,手机还是电脑;明确了作为一个低功耗蓝牙设备的基本需求,包含哪些层级以及如何协同工作的。
1)定义了蓝牙设备中的四种角色,广播者、观察者、外设角色、中心角色。
2)规范了一些通用的蓝牙参数:蓝牙设备地址、设备名称、配对秘钥、外观特征值(用于区分设备是手机还是电脑)。
2、ATT(属性协议):定义了访问对端设备上数据的一组规则,是GATT规范的基础,也是低功耗蓝牙的基石。定义了Host端属性报文格式和报文类型。
1)Requests:请求报文,客户端发给服务端,且需要服务端的一个应答Responses;(C->S,带ACK的请求报文)
2)Responses :响应报文,和Requests成对出现,服务端对客户端Requests的Responses;
3)Commands :命令报文,客户端发给服务端,不需要应答;
4)Notifications :通知报文,服务端主动发给客户端的通知;
5)Indications :通知报文,相比Notifications,客户端要应答确认Confirmations ,是否收到通知了;
6)Confirmations :和Indications 成对出现;
3、GATT(通用属性规范):位于ATT之上,定义了属性的类型及其使用方法。 GATT用来规范attribute中的数据内容,并运用group(分组)的概念对attribute进行分类管理。没有GATT,BLE协议栈也能跑,但互联互通就会出问题。
4、L2CAP层(链路控制和适配协议):屏蔽了控制器传输协议中的许多特性,方便高层协议的开发;报文分片和重组(SAR);流控、重传、报文完整性校验等。
5、SMP(安全管理协议):定义了蓝牙设备配对、认证、解密等行为的安全操作。
6、LLCP/LL (链路层控制):低功耗蓝牙参考 《Core_v4.2.pdf》中Part B: Link Layer Specification章节部分。
7、PHY(物理层):低功耗蓝牙采用40个信道,分为数据信道和广播信道;广播信道占用3个,用于发现设备、建立连接、广播数据;数据信道占用37个,用于已建立连接设备间的数据通信。建立连接的两个设备,必须同一时间处于同一信道上才能通信。
标签:GATT,报文,低功耗,蓝牙,车载,测试,服务端,设备 From: https://www.cnblogs.com/laoluoits/p/16944208.html