1. GATT Profile概述:BLE通信的核心骨架
在蓝牙低功耗(BLE)技术体系中,GATT(Generic Attribute Profile)扮演着至关重要的角色。作为建立在ATT协议之上的应用层框架,GATT定义了客户端(Client)和服务器(Server)之间数据交互的完整生命周期。理解GATT的工作原理,对于任何BLE应用开发都是必不可少的基础。
GATT的核心价值在于它提供了一种结构化的数据组织方式。所有数据都被抽象为属性(Attribute),每个属性包含四个关键要素:
- Handle(句柄):2字节的唯一标识符,相当于数据库主键
- Type(UUID):定义属性的类型和用途
- Value(值):实际存储的数据内容
- Permissions(权限):控制访问权限的安全机制
这种设计使得BLE设备能够以统一的方式暴露其功能,而客户端设备则可以通过标准化的流程发现和访问这些功能。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. GATT协议栈架构解析
2.1 协议栈层级关系
GATT在蓝牙协议栈中的位置非常明确,它直接构建在ATT(Attribute Protocol)之上。完整的协议栈层级如下:
code复制Application Layer
↓
GATT Profile
↓
ATT Protocol
↓
L2CAP
↓
LE Controller
关键点在于:
- GATT数据直接传递给ATT层进行封装
- ATT使用固定的L2CAP通道(CID=0x0004),避免了动态通道协商的开销
- 这种设计使得BLE连接建立速度远快于传统蓝牙(BR/EDR)
2.2 角色定义与交互模型
GATT定义了两种基本角色:
- Client:发起命令和请求的设备,可以接收来自Server的响应、指示和通知
- Server:接受并处理Client请求的设备,包含实际的属性数据
值得注意的是,这些角色是动态的、按事务划分的。一个设备可以同时充当Client和Server角色。例如:
- 智能手表作为Server提供心率数据
- 同时作为Client读取手机的通知
这种角色流动性是BLE设计的一大亮点
