本文深入剖析Android蓝牙协议栈中HID设备(BT-HD)服务的初始化与启用流程,从接口初始化、服务掩码管理、服务请求路由到属性回调通知,完整展现蓝牙HID服务激活的技术路径。通过代码逻辑梳理,揭示服务启用的核心机制,包括服务状态掩码更新、跨模块调用链及线程安全的属性传递设计。
一、概述
蓝牙 HID 设备(如键盘、鼠标)的服务启用与状态同步是蓝牙协议栈的核心功能之一。整个流程涉及多个模块协作,包括服务初始化、协议栈请求分发、属性获取及跨线程通知,具体可分为以下阶段:
1.1 服务初始化与启用
-
初始化接口:通过
init
函数完成 BT-HD 接口初始化,配置回调函数并调用btif_enable_service(BTA_HIDD_SERVICE_ID)
启用 HID 服务。 -
服务掩码更新:
btif_enable_service
将目标服务(BTA_HIDD_SERVICE_ID
)添加到全局服务掩码(btif_enabled_services
),若蓝牙已激活(btif_is_enabled()