...
GATT不仅使用ATT来存储和发送数据,还使用ATT来发送命令。
GATT服务端工作流程
- 初始化:初始化蓝牙控制器→ 使能蓝牙控制器→ 使能蓝牙协议栈。
- 注册GATT callback:gatts_event_handler,注册GATT回调事件。
- 注册GAP callback:gap_event_handler,注册GAP回调事件。
- 注册GATT APP ID:APP ID用于协议栈区分不同的profile。
- 设置MTU:参考Core spec V5.0,搜索MTU。
- 处理各种回调事件,包括GAP的回调事件和GATT的回调事件。
GAP事件包括以下几种:
- 广播数据设置成功。
- 开始广播成功,此时可以用BLE调试助手搜索到对应的广播热点。
- 停止广播成功。
- 更新连接参数事件。
GATT事件包括以下几种:
- GATTS注册事件,表示注册GATT APP ID成功,此时可以拿到这个profile的句柄。
- 调用profile的回调函数,继续处理GATT事件,比如特征值读写事件。
GATT服务端广播流程
下载V5.0的pdf文档后,GAP规范的章节在Vol 6 → Part D → 3 Advertising State。
以非定向广播为例,其广播流程如下:
接收端负责扫描广播信息,以第4小节中的被动扫描为例,其流程如下:
客户端也可以进行主动扫描,其流程如下: