BES 平台 BLE GATT 服务开发深度解析:属性构建式注册框架、双通道广播与自定义服务五步实战
2026/9/30 2:47:48
网站建设
项目流程
BES 平台 BLE GATT 服务开发深度解析:属性构建式注册框架、双通道广播与自定义服务五步实战
文章目录
- BES 平台 BLE GATT 服务开发深度解析:属性构建式注册框架、双通道广播与自定义服务五步实战
- 前言
- 一、总体认识:一句话定性
- 二、核心 API 与广播双通道
- 2.1 三层 API 家族
- 2.2 managed vs custom_adv:别混用
- 2.3 广播槽位资源
- 三、初始化与注册全流程
- 3.1 初始化编排链
- 3.2 服务注册三件套(官方模板精简版)
- 四、状态机、事件与数据链路
- 4.1 GATT 服务生命周期状态机
- 4.2 广播状态机与 REFRESH 缺口
- 4.3 RX/TX 数据流全链路
- 4.4 13 个 GATT 事件处理范式
- 4.5 性能与时序边界
- 五、扩展指导:五步创建自定义 BLE 服务
- 5.1 五步清单
- 5.2 最小可运行模板(约 100 行)
- 5.3 验证方法
- 六、关键参数速查
- 6.1 核心 API 速查表
- 6.2 属性构建四元组(`bt_attr_info_t`)
- 6.3 服务配置(`bt_gatts_cfg_t`)
- 七、TWS 一致性:单耳独占哲学
- 7.1 广播门禁:谁有资格广播
- 7.2 业务连接联动停播
- 7.3 一致性对象矩阵
- 八、排错清单与坑位总账
- 8.1 排障决策树
- 8.2 高频问题排查表
- 8.3 十二坑位清单
- 8.4 缺口与最小完善方案
- 总结
前言
在 BES 平台固件上给手机 App 开一个自定义 BLE 服务,是 TWS 耳机联机功能(OTA、图片传输、数据透传)的标准动作。但第一次做的人往往会卡在三件事上:服务注册的新旧两代 API 用哪套?广播数据该塞进哪条通道?为什么从耳不广播、角色切换后广播又消失了?
本文基于 BES best1702 系列 TWS 耳机固件(IBRT 架构)的源码梳理,给出完整答案,覆盖:
- 属性构建式 GATT 服务注册框架(
bta_gatts_build_attr+register_service一键注册) - managed 托管广播 vs custom_adv 独立广播——本模块最重要的架构区分
- 初始化编排链与防重入幂等设计
- 服务生命周期与广播状态机,以及角色切换广播恢复的 TODO 缺口
- 五步创建自定义服务的完整模板(约 100 行,可直接编译)
- 13 个 GATT 事件的处理范式、异步发送的缓冲铁律
- TWS 一致性设计哲学:BLE 广播是"单耳独占"而非"双耳同步"
- 排错决策树、12 条坑位清单与缺口总账
一、总体认识:一句话定性
BLE 服务模块 =属性构建式 GATT 服务注册框架 + managed/custom