本文围绕蓝牙 HID(人机接口设备)服务注册流程,详细解析从 HID 服务启用、设备初始化、L2CAP 通道注册到 SDP(服务发现协议)记录构建的全流程。通过分析关键函数如btif_hd_service_registration
、BTA_HdEnable
、HID_DevRegister
及HID_DevAddRecord
的逻辑,揭示了 HID 设备如何通过协议栈完成注册、配置及发现功能,确保设备可被其他蓝牙主机识别和连接。结合Android Bluedroid代码逻辑与协议规范,阐述了状态机管理、内存分配、安全配置及数据传输的核心机制。
一、概述
蓝牙 HID 设备(如键盘、鼠标)的注册与启用流程是蓝牙协议栈中实现人机交互功能的核心部分。通过分析 Bluedroid 协议栈中的相关代码,详细阐述 HID 设备如何通过 SDP(服务发现协议)暴露自身服务、如何配置 L2CAP 通道以确保数据传输的可靠性,以及如何管理 HID 描述符以实现与主机的兼容通信。
1.1 HID 服务注册入口:btif_hd_service_registration
作为 HID 服务注册的入口,通过调用BTA_HdEnable
触发协议栈的 HID 服务初始化。核心逻辑包括: