【Bluedroid】蓝牙 HID Host connect全流程源码解析
蓝牙 HID(Human Interface Device,人机接口设备)是智能设备与外设(如键盘、鼠标、游戏手柄)交互的核心协议。本文围绕Android蓝牙 HID 主机模块的连接流程,从上层应用发起连接请求开始,逐层解析协议栈内部的状态检查、设备管理、SDP 服务发现、L2CAP 通道建立等关键步骤,揭示 HID 设备从逻辑注册到物理连接的全链路实现。重点分析各模块的协作机制(如状态机驱动、异步事件处理)、关键函数的设计逻辑(如状态验证、资源管理),并总结其设计思想(如防御式编程、可观测性),为蓝牙 HID 开发与调试提供技术参考。
一、流程概述
蓝牙 HID 设备连接流程可分为上层请求触发→状态与资源检查→服务发现(SDP)→物理链路建立四大阶段,各阶段通过状态机和异步事件驱动,确保连接的安全性、可靠性和有序性。以下是关键步骤的详细拆解:
阶段 1:上层请求触发与初步检查
用户通过上层 API(如 connect
)发起 HID 设备连接请求,触发以下操作:
-
状态预检查:检查 HID 模块全局状态(如是否处于禁用或连接中),