1. GATT 基础概念与设计哲学
在蓝牙低功耗(BLE)技术体系中,GATT(Generic Attribute Profile)扮演着数据通信"交通规则"的角色。它定义了设备间如何组织、发现和交换数据,是整个BLE应用开发的基石。理解GATT不仅需要掌握其技术规范,更要领会其背后的设计哲学。
1.1 从通信困境到标准化方案
在没有GATT的世界里,BLE设备间的通信就像两个没有共同语言的人尝试对话:
- 设备A发送
0xA1B2表示"请求温度" - 设备B回复
0x1E表示"当前30℃"
这种硬编码的通信方式存在明显缺陷:
- 互操作性差:每个设备厂商需要自定义协议,APP必须针对不同设备单独适配
- 扩展性弱:新增功能需要修改通信协议,可能导致版本兼容问题
- 开发效率低:开发者需要重复实现基础通信逻辑
GATT通过三层抽象解决了这些问题:
- 服务(Service):将设备功能模块化(如心率监测、电池电量)
- 特征值(Characteristic):定义具体数据点(如当前心率值)
- 描述符(Descriptor):提供数据控制参数(如通知开关)
1.2 GATT与ATT的协同关系
GATT构建在ATT(Attribute Protocol)协议之上,两者关系如下表所示:
| 层级 | 协议 | 职责 | 类比 |
|---|---|---|---|
| 应用层 | GATT | 定义数据组织方式和交互语义 | 图书馆分类法 |
| 传输层 | ATT | 提供属性查找和读写机制 | 图书借阅系统 |
ATT协议为GATT提供了四个基础操作原语:
- 读请求/响应:客户端读取服务器属性值
- 写请求/响应:客户端修改服务器属性值
- 通知:服务器主动推送数据(无需确认)
- 指示:服务器主动推送数据(需客户端确认)
GATT则在ATT基础上定义了:
- 标准化的服务/特征值UUID
- 预定义的特征值属性
- 标准化的描述符(如CCCD)
- 发现流程规范
这种分层设计使得:
- ATT保持轻量级,适合低功耗设备
- GATT提供丰富的语义,满足复杂应用需求
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
