引言
在当今的物联网(IoT)和无线设备应用中,Bluetooth Low Energy(BLE)技术扮演着至关重要的角色。作为BLE核心部分之一,GATT(通用属性配置文件)定义了如何在设备间传输数据。本文将深入探讨GATT服务、特征和描述符的细节,并解释它们的实际应用场景。
目录
- 什么是GATT?
- GATT服务概述
- GATT特征详解
- GATT描述符介绍
- 常见的GATT UUIDs及其含义
- 结论
1. 什么是GATT?
GATT(Generic Attribute Profile)是BLE中用来定义通信数据结构的协议。GATT定义了如何在BLE设备之间传输数据,并规定了服务(Services)、特征(Characteristics)和描述符(Descriptors)的使用方式。通过这些概念,GATT实现了设备间的标准化通信。
2. GATT服务概述
GATT服务是用于组织特征的集合。每个服务通常代表一个设备或应用的特定功能模块。例如,“心率服务”(UUID: 0000180d-0000-1000-8000-00805f9b34fb)包含与监测心率相关的特征。
常见服务示例:
- 心率服务(Heart Rate Service):用于心率监测设备,UUID:
0000180d-0000-1000-8000-00805f9b34fb
- 设备信息服务(Device Information Service):提供设备制造商信息,UUID:
0000180a-0000-1000-8000-00805f9b34fb
3. GATT特征详解
GATT特征是包含实际数据的基本单元。每个特征可以看作是一个数据块,既可以被读写,也可以设置成通知方式来发送更新。
常见特征示例:
- 心率测量(Heart Rate Measurement):表示心率测量值,UUID:
00002a37-0000-1000-8000-00805f9b34fb
- 制造商名称字符串(Manufacturer Name String):提供设备制造商信息,UUID:
00002a29-0000-1000-8000-00805f9b34fb
4. GATT描述符介绍
GATT描述符是附加在特征上的元数据。它们通常用于描述特征的配置、格式或范围。例如,客户端特征配置描述符(Client Characteristic Configuration Descriptor, CCCD)用来启用或禁用特征的通知或指示。
常见描述符示例:
- 客户端特征配置(Client Characteristic Configuration, CCCD):用于启用/禁用特征的通知,UUID:
00002902-0000-1000-8000-00805f9b34fb
5. 常见的GATT UUIDs及其含义
下面是一些常见的GATT UUID及其对应的服务、特征和描述符:
GATT Services (GATT 服务)
-
00001800-0000-1000-8000-00805f9b34fb (Generic Access)
通用访问服务,包含设备名称、外观信息等,用于设备配对和连接。 -
00001801-0000-1000-8000-00805f9b34fb (Generic Attribute)
通用属性服务,用于管理GATT协议的服务和特征。
GATT Declarations (GATT 声明)
-
00002800-0000-1000-8000-00805f9b34fb (Primary Service)
主服务声明,标识GATT中的主要服务。 -
00002801-0000-1000-8000-00805f9b34fb (Secondary Service)
次要服务声明,标识依赖于主服务的附属服务。 -
00002802-0000-1000-8000-00805f9b34fb (Include)
包含声明,用于在服务中包含其他服务。 -
00002803-0000-1000-8000-00805f9b34fb (Characteristic)
特征声明,用于定义服务中的特征。
GATT Descriptors (GATT 描述符)
-
00002900-0000-1000-8000-00805f9b34fb (Characteristic Extended Properties)
特征扩展属性描述符,用于扩展特征属性的功能。 -
00002901-0000-1000-8000-00805f9b34fb (Characteristic User Description)
特征用户描述符,用于提供特征的用户可读描述。 -
00002902-0000-1000-8000-00805f9b34fb (Client Characteristic Configuration)
客户端特征配置描述符,用于配置特征的通知和指示。 -
00002903-0000-1000-8000-00805f9b34fb (Server Characteristic Configuration)
服务器特征配置描述符,用于服务器侧的配置。 -
00002904-0000-1000-8000-00805f9b34fb (Characteristic Presentation Format)
特征表示格式描述符,用于定义特征的表示格式。 -
00002905-0000-1000-8000-00805f9b34fb (Characteristic Aggregate Format)
特征聚合格式描述符,用于定义多个特征的聚合表示格式。 -
00002906-0000-1000-8000-00805f9b34fb (Valid Range)
有效范围描述符,用于定义特征的有效值范围。 -
00002907-0000-1000-8000-00805f9b34fb (External Report Reference Descriptor)
外部报告参考描述符,常用于HID(人机接口设备)服务。 -
00002908-0000-1000-8000-00805f9b34fb (Report Reference Descriptor)
报告参考描述符,通常用于HID服务来描述报告。
GATT Characteristics (GATT 特征)
-
00002a00-0000-1000-8000-00805f9b34fb (Device Name)
设备名称特征,包含蓝牙设备的名称。 -
00002a01-0000-1000-8000-00805f9b34fb (Appearance)
外观特征,描述设备的外观信息。 -
00002a02-0000-1000-8000-00805f9b34fb (Peripheral Privacy Flag)
外围隐私标志特征,指示设备的隐私设置。 -
00002a03-0000-1000-8000-00805f9b34fb (Reconnection Address)
重连接地址特征,用于在设备断开连接后重新连接。 -
00002a04-0000-1000-8000-00805f9b34fb (PPCP)
外围设备首选连接参数特征,包含连接参数信息。 -
00002a05-0000-1000-8000-00805f9b34fb (Service Changed)
服务变更特征,指示GATT服务器的服务发生了变化。
GATT Service UUIDs (GATT 服务 UUIDs)
这些UUID对应了不同的蓝牙服务,每个服务具有不同的功能:
-
00001802-0000-1000-8000-00805f9b34fb (Immediate Alert)
立即警报服务,用于触发设备上的警报。 -
00001803-0000-1000-8000-00805f9b34fb (Link Loss)
链路丢失服务,用于在连接丢失时通知设备。 -
00001804-0000-1000-8000-00805f9b34fb (Tx Power)
发射功率服务,提供设备的发射功率级别。 -
00001805-0000-1000-8000-00805f9b34fb (Current Time Service)
当前时间服务,提供设备的当前时间信息。 -
00001806-0000-1000-8000-00805f9b34fb (Reference Time Update Service)
参考时间更新服务,用于更新设备的时间。 -
00001807-0000-1000-8000-00805f9b34fb (Next DST Change Service)
下一次夏令时更改服务,提供设备的夏令时信息。 -
00001808-0000-1000-8000-00805f9b34fb (Glucose)
血糖服务,用于监测血糖水平。 -
00001809-0000-1000-8000-00805f9b34fb (Health Thermometer)
健康温度计服务,用于监测体温。 -
0000180a-0000-1000-8000-00805f9b34fb (Device Information)
设备信息服务,用于传输设备的基本信息。 -
0000180b-0000-1000-8000-00805f9b34fb (Network Availability)
网络可用性服务,用于指示设备的网络状态。 -
0000180d-0000-1000-8000-00805f9b34fb (Heart Rate)
心率服务,用于监测和传输心率数据。 -
0000180e-0000-1000-8000-00805f9b34fb (Phone Alert Status Service)
电话警报状态服务,用于监控电话状态。 -
0000180f-0000-1000-8000-00805f9b34fb (Battery Service)
电池服务,提供设备的电池电量信息。 -
00001810-0000-1000-8000-00805f9b34fb (Blood Pressure)
血压服务,用于监测血压。 -
00001811-0000-1000-8000-00805f9b34fb (Alert Notification Service)
警报通知服务,用于管理设备的警报通知。 -
00001812-0000-1000-8000-00805f9b34fb (Human Interface Device)
人机接口设备服务,用于支持键盘、鼠标等设备。 -
00001813-0000-1000-8000-00805f9b34fb (Scan Parameters)
扫描参数服务,提供扫描参数配置。 -
00001814-0000-1000-8000-00805f9b34fb (Running Speed and Cadence)
跑步速度和步频服务,用于监控跑步速度和步频。 -
00001816-0000-1000-8000-00805f9b34fb (Cycling Speed and Cadence)
骑行速度和步频服务,用于监控骑行速度和步频。 -
00001818-0000-1000-8000-00805f9b34fb (Cycling Power)
骑行功率服务,用于监控骑行功率。 -
00001819-0000-1000-8000-00805f9b34fb (Location and Navigation)
位置和导航服务,用于提供位置信息和导航。
GATT Characteristic UUIDs (GATT 特征 UUIDs)
这些UUID代表了不同的GATT特征,每个特征提供特定的数据或功能:
-
00002a06-0000-1000-8000-00805f9b34fb (Alert Level)
警报级别特征,用于设置设备的警报级别。 -
00002a07-0000-1000-8000-00805f9b34fb (Tx Power Level)
发射功率级别特征,提供设备的发射功率信息。 -
00002a08-0000-1000-8000-00805f9b34fb (Date Time)
日期时间特征,提供设备的日期和时间信息。 -
00002a09-0000-1000-8000-00805f9b34fb (Day of Week)
星期几特征,提供当前的星期信息。 -
00002a0a-0000-1000-8000-00805f9b34fb (Day Date Time)
日期时间特征,提供日期和星期信息。 -
00002a0c-0000-1000-8000-00805f9b34fb (Exact Time 256)
精确时间特征,用于提供高精度时间信息。 -
00002a0d-0000-1000-8000-00805f9b34fb (DST Offset)
夏令时偏移特征,提供夏令时偏移信息。 -
00002a0e-0000-1000-8000-00805f9b34fb (Time Zone)
时区特征,提供设备所在的时区信息。 -
00002a0f-0000-1000-8000-00805f9b34fb (Local Time Information)
本地时间信息特征,提供本地时间和时区信息。 -
00002a11-0000-1000-8000-00805f9b34fb (Time with DST)
夏令时时间特征,提供夏令时调整后的时间。 -
00002a12-0000-1000-8000-00805f9b34fb (Time Accuracy)
时间准确性特征,提供时间信息的准确性。 -
00002a13-0000-1000-8000-00805f9b34fb (Time Source)
时间源特征,指示时间信息的来源。 -
00002a14-0000-1000-8000-00805f9b34fb (Reference Time Information)
参考时间信息特征,提供参考时间信息。 -
00002a16-0000-1000-8000-00805f9b34fb (Time Update Control Point)
时间更新控制点特征,用于控制时间信息的更新。 -
00002a17-0000-1000-8000-00805f9b34fb (Time Update State)
时间更新状态特征,提供时间更新的状态信息。 -
00002a18-0000-1000-8000-00805f9b34fb (Glucose Measurement)
血糖测量特征,提供血糖测量信息。 -
00002a19-0000-1000-8000-00805f9b34fb (Battery Level)
电池电量特征,提供设备的电池电量信息。 -
00002a1c-0000-1000-8000-00805f9b34fb (Temperature Measurement)
温度测量特征,提供体温测量信息。 -
00002a1d-0000-1000-8000-00805f9b34fb (Temperature Type)
温度类型特征,指示温度测量的类型。 -
00002a1e-0000-1000-8000-00805f9b34fb (Intermediate Temperature)
中间温度特征,提供临时温度测量信息。 -
00002a21-0000-1000-8000-00805f9b34fb (Measurement Interval)
测量间隔特征,指示两个测量之间的时间间隔。 -
00002a22-0000-1000-8000-00805f9b34fb (Boot Keyboard Input Report)
启动键盘输入报告特征,用于在设备启动时传输键盘输入数据。 -
00002a23-0000-1000-8000-00805f9b34fb (System ID)
系统ID特征,提供设备的系统标识符。 -
00002a24-0000-1000-8000-00805f9b34fb (Model Number String)
型号字符串特征,提供设备的型号信息。 -
00002a25-0000-1000-8000-00805f9b34fb (Serial Number String)
序列号字符串特征,提供设备的序列号信息。 -
00002a26-0000-1000-8000-00805f9b34fb (Firmware Revision String)
固件版本字符串特征,提供设备的固件版本信息。 -
00002a27-0000-1000-8000-00805f9b34fb (Hardware Revision String)
硬件版本字符串特征,提供设备的硬件版本信息。 -
00002a28-0000-1000-8000-00805f9b34fb (Software Revision String)
软件版本字符串特征,提供设备的软件版本信息。 -
00002a29-0000-1000-8000-00805f9b34fb (Manufacturer Name String)
制造商名称字符串特征,提供设备的制造商信息。 -
00002a2a-0000-1000-8000-00805f9b34fb (IEEE 11073-20601 Regulatory Certification Data List)
IEEE 11073-20601 认证数据列表特征,提供设备的认证信息。 -
00002a2b-0000-1000-8000-00805f9b34fb (Current Time)
当前时间特征,提供设备的当前时间。 -
00002a31-0000-1000-8000-00805f9b34fb (Scan Refresh)
扫描刷新特征,用于刷新设备的扫描参数。 -
00002a32-0000-1000-8000-00805f9b34fb (Boot Keyboard Output Report)
启动键盘输出报告特征,用于在设备启动时传输键盘输出数据。 -
00002a33-0000-1000-8000-00805f9b34fb (Boot Mouse Input Report)
启动鼠标输入报告特征,用于在设备启动时传输鼠标输入数据。 -
00002a34-0000-1000-8000-00805f9b34fb (Glucose Measurement Context)
血糖测量上下文特征,提供血糖测量的背景信息。 -
00002a35-0000-1000-8000-00805f9b34fb (Blood Pressure Measurement)
血压测量特征,提供血压测量信息。 -
00002a36-0000-1000-8000-00805f9b34fb (Intermediate Cuff Pressure)
中间袖带压力特征,提供临时的血压测量信息。 -
00002a37-0000-1000-8000-00805f9b34fb (Heart Rate Measurement)
心率测量特征,提供心率测量信息。 -
00002a38-0000-1000-8000-00805f9b34fb (Body Sensor Location)
体传感器位置特征,提供体传感器的位置信息。 -
00002a39-0000-1000-8000-00805f9b34fb (Heart Rate Control Point)
心率控制点特征,用于控制心率测量功能。 -
00002a3e-0000-1000-8000-00805f9b34fb (Network Availability)
网络可用性特征,提供设备的网络状态信息。 -
00002a3f-0000-1000-8000-00805f9b34fb (Alert Status)
警报状态特征,提供设备的警报状态信息。 -
00002a40-0000-1000-8000-00805f9b34fb (Ringer Control Point)
铃声控制点特征,用于控制设备的铃声。 -
00002a41-0000-1000-8000-00805f9b34fb (Ringer Setting)
铃声设置特征,提供设备的铃声设置信息。 -
00002a42-0000-1000-8000-00805f9b34fb (Alert Category ID Bit Mask)
警报类别ID位掩码特征,用于定义警报类别。 -
00002a43-0000-1000-8000-00805f9b34fb (Alert Category ID)
警报类别ID特征,提供设备的警报类别信息。 -
00002a44-0000-1000-8000-00805f9b34fb (Alert Notification Control Point)
警报通知控制点特征,用于控制警报通知。 -
00002a45-0000-1000-8000-00805f9b34fb (Unread Alert Status)
未读警报状态特征,提供设备的未读警报信息。 -
00002a46-0000-1000-8000-00805f9b34fb (New Alert)
新警报特征,用于通知新的警报信息。 -
00002a47-0000-1000-8000-00805f9b34fb (Supported New Alert Category)
支持的新警报类别特征,提供设备支持的警报类别信息。 -
00002a48-0000-1000-8000-00805f9b34fb (Supported Unread Alert Category)
支持的未读警报类别特征,提供设备支持的未读警报类别信息。 -
00002a49-0000-1000-8000-00805f9b34fb (Blood Pressure Feature)
血压功能特征,提供设备的血压测量功能信息。 -
00002a4a-0000-1000-8000-00805f9b34fb (HID Information)
HID信息特征,用于传输HID(人机接口设备)的基本信息。 -
00002a4b-0000-1000-8000-00805f9b34fb (Report Map)
报告映射特征,用于定义HID报告的结构。 -
00002a4c-0000-1000-8000-00805f9b34fb (HID Control Point)
HID控制点特征,用于控制HID设备的行为。 -
00002a4d-0000-1000-8000-00805f9b34fb (Report)
报告特征,用于传输HID设备的报告数据。 -
00002a4e-0000-1000-8000-00805f9b34fb (Protocol Mode)
协议模式特征,用于设置HID设备的协议模式。 -
00002a4f-0000-1000-8000-00805f9b34fb (Scan Interval Window)
扫描间隔窗口特征,用于配置设备的扫描参数。 -
00002a50-0000-1000-8000-00805f9b34fb (PnP ID)
即插即用ID特征,提供设备的PnP ID信息。 -
00002a51-0000-1000-8000-00805f9b34fb (Glucose Feature)
血糖功能特征,提供设备的血糖测量功能信息。 -
00002a52-0000-1000-8000-00805f9b34fb (Record Access Control Point)
记录访问控制点特征,用于控制数据记录的访问。 -
00002a53-0000-1000-8000-00805f9b34fb (RSC Measurement)
跑步速度和步频测量特征,提供设备的跑步速度和步频信息。 -
00002a54-0000-1000-8000-00805f9b34fb (RSC Feature)
跑步速度和步频功能特征,提供设备的RSC功能信息。 -
00002a55-0000-1000-8000-00805f9b34fb (SC Control Point)
跑步速度和步频控制点特征,用于控制RSC设备的行为。 -
00002a5b-0000-1000-8000-00805f9b34fb (CSC Measurement)
骑行速度和步频测量特征,提供设备的骑行速度和步频信息。 -
00002a5c-0000-1000-8000-00805f9b34fb (CSC Feature)
骑行速度和步频功能特征,提供设备的CSC功能信息。 -
00002a5d-0000-1000-8000-00805f9b34fb (Sensor Location)
传感器位置特征,提供设备传感器的位置信息。 -
00002a63-0000-1000-8000-00805f9b34fb (Cycling Power Measurement)
骑行功率测量特征,提供设备的骑行功率信息。 -
00002a64-0000-1000-8000-00805f9b34fb (Cycling Power Vector)
骑行功率向量特征,提供设备的骑行功率向量信息。 -
00002a65-0000-1000-8000-00805f9b34fb (Cycling Power Feature)
骑行功率功能特征,提供设备的骑行功率功能信息。 -
00002a66-0000-1000-8000-00805f9b34fb (Cycling Power Control Point)
骑行功率控制点特征,用于控制骑行功率设备的行为。 -
00002a67-0000-1000-8000-00805f9b34fb (Location and Speed)
位置和速度特征,提供设备的位置信息和速度信息。 -
00002a68-0000-1000-8000-00805f9b34fb (Navigation)
导航特征,用于提供导航信息。 -
00002a69-0000-1000-8000-00805f9b34fb (Position Quality)
位置质量特征,提供设备的位置信息质量。 -
00002a6a-0000-1000-8000-00805f9b34fb (LN Feature)
位置和导航功能特征,提供设备的LN功能信息。 -
00002a6b-0000-1000-8000-00805f9b34fb (LN Control Point)
位置和导航控制点特征,用于控制LN设备的行为。