1. 项目概述
"Characteristic declaration"是蓝牙核心规范v6.2中GATT(Generic Attribute Profile)协议的关键组成部分。作为蓝牙低功耗(BLE)通信的基础单元,它定义了设备间数据交换的标准格式和交互规则。在BLE设备开发中,正确理解和实现Characteristic声明是确保设备互操作性的前提条件。
我曾在多个BLE项目中遇到过因Characteristic声明不规范导致的兼容性问题。有一次在医疗设备开发中,就因为一个Properties标志位设置错误,导致iOS设备无法正确读取体征数据。这个经历让我深刻认识到,GATT协议中这看似简单的几字节数据声明,实际上影响着整个通信链路的基础稳定性。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心概念解析
2.1 GATT协议栈定位
在蓝牙协议栈中,GATT位于L2CAP层之上,构建在ATT(Attribute Protocol)基础之上。它采用客户端-服务器架构,其中:
- 服务器(Server)存储数据并接收命令/请求
- 客户端(Client)发送命令/请求并接收响应
GATT通过Attribute表组织数据,每个Attribute包含:
- Handle(16位唯一标识符)
- Type(UUID定义的数据类型)
- Permissions(访问权限)
- Value(实际数据值)
2.2 Characteristic组成结构
一个完整的Characteristic包含三个必要Attribute:
- Characteristic Declaration(声明)
- Characteristic Value(值)
- Characteristic Descriptor(描述符)
其中Declaration作为元数据,包含以下关键信息:
- Properties(8位标志位)
- Value Handle(指向实际值的句柄)
- UUID(特征类型标识)
3. Characteristic Declaration详解
3.1 数据结构规范
根据Core_v6.2规范,Characteristic声明采用如下二进制格式:
| 字段 | 长度(bytes) | 说明 |
|---|
