BLE GAP 协议和 GATT 协议
BLE GAP 协议和 GATT 协议
最近要打算学习 Blufi 协议进行蓝牙配置,其中必然使用 GAP 协议和 GATT 协议,于是进行重新学习一番。
BLE 是一个 Bluetooth SIG 组织颁布的协议,对于使用 BLE 我们开发人员,最关注的是 上层的 GAP 协议和 GATT 协议。
1.1 GAP 和 GATT 有什么不同呢?
- GAP :定义一个 BLE 网络栈的通用拓扑结构。
- GATT:描述关于如何数据在连接中如何传输的细节。
GATT 尤其关注于数据如何被格式化、打包、然后跟据分发规则去在网络中发送。属性协议(ATT)与GATT紧密相连,那么GATT 处于 ATT 的上层,使用 ATT 去描述数据如何在两个连接的设备中交换。
1.2 GAP (Generic Access Profile)
GAP 即通用存取协议,BLE设备可以使用两种机制与外部世界通信:广播或连接。GAP 就是用来定义设备跟设备之前是用过广播呢,还是连接去通信的。
下面 GAP 将回答 怎么连接或广播? 和 连接后 GAP 可以做什么?两个问题。
怎么连接或广播?
一个设备通过选择 GAP 中指定的一个角色去连接到一个 BLE 网络。
广播: 这个过程中,设备没有连接。包含广播者和观察者两种角色。
- 广播者:一个设备广播一些信息。
- 观察者:一个设备接受广播者的信息。
连接:设备之间必须连接,一般生产环境中更常用。
-
外设:一个设备广播他的存在,使得中心设备能与它建立连接。在建立连接后,设备不再广播数据给其他中心设备,保持连接。
- 外设是低功耗的因为他们只定期发送一些 beacons,然后中心设备对其进行响应。
- Bean 是一种 BLE 外设。
-
中心设备:一个设备通过监听包,去连接一个外设,一个中心可以连很多个外设。
- 当一个中心设备想要连接外设的时候,它发一个连接请求给外设。如果外设接受了,那么就建立了连接。
- 你的电脑在连接 Bean 的时候就是一个中心设备。
连接后能做什么?
中心设备可以修改连接参数:中心设备创建一些连接的参数,中心设备可以更改参数,外设只能通过请求中心设备去更改参数。
外设或中心设备可以中止连接:两者可以主动、或者因为异常而断开连接。
1.3 GATT(Generic Attribute Profile)
类似 GAP,在这一层协议上,我们有两种角色:
- 客户端:发送请求给 GATT 服务器,能够读/写 服务器的数据。
- 服务端:服务端负责存储属性,一旦客户端发起请求,服务端进行回应。
所以,当我们使用 GAP 协议建立了连接,然后就可以使用 GATT 协议进行数据的存取实现不同的义务功能。