深入了解Bluetooth GATT服务、特征和描述符

引言

在当今的物联网(IoT)和无线设备应用中,Bluetooth Low Energy(BLE)技术扮演着至关重要的角色。作为BLE核心部分之一,GATT(通用属性配置文件)定义了如何在设备间传输数据。本文将深入探讨GATT服务、特征和描述符的细节,并解释它们的实际应用场景。

目录

  1. 什么是GATT?
  2. GATT服务概述
  3. GATT特征详解
  4. GATT描述符介绍
  5. 常见的GATT UUIDs及其含义
  6. 结论

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设备的行为。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值