GATT 层包含了用于发现服务和特征以及在设备之间传输数据的 API,它构建在属性协议(ATT)之上。 属性协议(ATT)通过专用的 L2CAP 通道(通道 ID 为 0x04)在蓝牙低功耗设备之间传输数据。 一旦设备之间建立连接,GATT API 即可使用。由于 L2CAP 通道会自动创建,所以无需初始化。 为了识别 GATT 对等实例,使用与 GAP 层相同的设备 ID 值(在 `gConnEvtConnected_c` 连接事件中获取)。
有两个 GATT 角色定义了通过 ATT 交换数据的两个设备:
1. GATT 服务器:该设备包含一个 GATT 数据库,这是服务和特征的集合,用于公开有意义的数据。通常,服务器响应客户端发送的请求和命令。然而,它也可以配置为通过通知和指示自行发送数据。
2. GATT 客户端:这是“主动”设备,通常向服务器发送请求和命令,以发现服务器数据库中的服务和特征并交换数据。
没有固定的规则决定哪个设备是客户端,哪个是服务器。任何设备都可以随时发起请求。因此,任何时候它临时充当客户端,对等设备(如果具有服务器支持和 GATT 数据库)可以进行响应。
通常,GAP 中心设备充当 GATT 客户端,以发现服务和特征并从 GAP 外围设备(通常具有 GATT 数据库)获取数据。许多标准的蓝牙低功耗配置文件假定外围设备具有数据库并且必须充当服务器。然而,这绝不是一条通用规则。
5.1 Client APIs
这段文本主要介绍了蓝牙低功耗(BLE)中GATT客户端(Client)的API相关内容,具体如下ÿ