ATT& : Data representation and exchange(数据表示和交换)

61 阅读3分钟

ATT (Attribute Protocol) GATT(Generatic Attribute Profile)

在上一个主题中,我们讨论了 GAP 层在定义蓝牙 LE 设备在广告和连接阶段如何相互通信方面所起的作用。广告期间的通信仅用于设备发现或广播数据,并由 GAP 层本身处理。但是,建立连接后,需要进行双向数据交换。这需要为这些目的量身定制的特定数据结构和协议。

属性协议 (ATT) 层及其上方的通用属性配置文件 (GATT) 层定义了如何在蓝牙 LE 设备之间表示和交换数据。ATT 和 GATT 层关注的是建立连接后的阶段,而 GAP 层则负责建立连接之前的广播过程。

属性协议

ATT 层是蓝牙 LE 设备连接阶段传输、接收和处理数据的基础。它基于客户端-服务器架构,其中服务器保存数据并可以直接将其发送到客户端,或者客户端可以从服务器轮询数据。

此层中定义的客户端和服务器角色与 GAP 层中定义的外围设备和中央设备角色是独立分配的。因此,中央设备既可以是客户端,也可以是服务器,外围设备也是如此。这完全取决于应用程序用例和所传输数据的性质。

在大多数情况下,外围设备将是服务器,因为外围设备是获取和保存数据的设备。同样,中央设备通常是客户端,因为它是从服务器接收所述数据的设备。

这些角色由GATT层使用,因此通常被称为GATT服务器和GATT客户端。

定义

GATT 服务器: 存储数据并为 GATT 客户端提供访问数据的方法的设备。GATT
客户端: 通过特定的 GATT 操作访问 GATT 服务器上的数据的设备(将在第 4 课中解释)。

ATT 层定义了一个称为属性的数据结构,GATT 服务器使用它来存储数据。服务器可以同时保存多个不同的属性。

定义

Attribute:ATT 协议定义的标准化数据表示格式。

通用属性配置文件

通用属性配置文件 (GATT) 层直接位于 ATT 层之上,并在此基础上将属性分层分类为配置文件、服务和特性。GATT 层使用这些概念来管理蓝牙 LE 设备之间的数据传输。

具有服务和特征的通用概况示例

概况、服务和特点

让我们以测量心率的传感器设备为例。心率值将保存为一个属性,称为特征值属性。还将有另一个属性保存有关存储在值属性中的数据的元数据,称为特征声明属性。这两个属性一起构成了所谓的特征。在此示例中,它是心率测量特征。

所有特性都包含在所谓的服务中。服务通常包含多个特性。对于此示例,心率测量特性包含在心率服务中。此服务还具有其他特性,例如身体传感器位置特性。

除此之外,配置文件是针对同一用例的一个或多个服务。心率服务位于心率配置文件中,以及设备信息服务。设备信息服务包含制造商名称特征和固件修订特征等特征。

在客户端开始与服务器交互之前,客户端并不知道服务器上存储的属性的性质。因此,客户端首先执行所谓的服务发现,即向服务器查询属性。

Note

蓝牙 SIG 定义的 GATT 配置文件的完整列表可在此处找到。蓝牙规范还允许供应商针对 SIG 定义的配置文件未涵盖的用例定义自己的配置文件。