蓝牙HID协议笔记

「爱情、让人受尽委屈。」 2021-09-29 17:02 1098阅读 0赞

1.概述

  1. The Human Interface Device (HID)定义了蓝牙在人机接口设备中的协议、特征和使用规程。典型的应用包括蓝牙鼠标、蓝牙键盘、蓝牙游戏手柄等。该协议改编自USB HID Protocol

2.一些概念

(1)HID Reports:Bluetooth HID devices支持三种Report:Input, Output, and Feature。

(2)HID建立Control Channel和Interrupt Channel两个通道,report可以在这两条channel上传输,在Control channel上传输的report称为synchronous reports ;在Interrupt channel上传输的report称为asynchronous reports。

(3)Feature reports are always transferred synchronously using GET_REPORT or SET_REPORT requests。

(4)Report Protocol Mode和Boot Protocol Mode。Bluetooth HID Hosts至少支持一种,Bluetooth HID Device则需要支持Report Protocol Mode,并且Report Protocol Mode是Bluetooth HID Device的默认Mode。

3.Bluetooth HID Protocol Messages

这些message不能超过L2CAP的MTU,大小超过MTU的message将被忽略。

Message Header的格式如下:

蓝牙HID协议笔记

蓝牙HID协议笔记
蓝牙HID协议笔记
(1)HANDSHAKE

该Message用来acknowledgeSET_REPORT, SET_IDLE and SET_PROTOCOL等request。只在Control Channel上传输,只由Bluetooth HID device。

Parameter部分定义如下:

蓝牙HID协议笔记

(2)HID_CONTROL

控制Bluetooth HID device改变状态。

Parameter部分定义如下:

蓝牙HID协议笔记

(3)GET_REPORT

Bluetooth HID Host用来请求Bluetooth HID device的传输。

定义如下:

蓝牙HID协议笔记

(4)SET_REPORT

Bluetooth HID Host用来向Bluetooth HID device发起传输。

格式如下:
蓝牙HID协议笔记

(5)GET_PROTOCOL

用来获取Bluetooth HID device的Protocol Mode,然后Bluetooth HID device response一个DATA payload说明当前的Protocol Mode。

格式如下:

蓝牙HID协议笔记
GET_PROTOCOL Data Definition格式如下:

蓝牙HID协议笔记

(6)SET_PROTOCOL

用来设置Bluetooth HID device的Bluetooth HID device。格式如下:

蓝牙HID协议笔记

(7)DATA

代表一个a HID payload。格式如下:

蓝牙HID协议笔记

4.Transfers

以HID Protocol messages的形式传输。

(1)Control Channel Transfers

分为Acknowledged和Unacknowledged两种,格式如下:

蓝牙HID协议笔记
(2)Interrupt Channel Transfers

Interrupt IN和Interrupt OUT两种,可以在任意时刻发送。 【中断嘛】

5.其余各层对于HID的要求

HID与L2CAP的交互如下:

蓝牙HID协议笔记

转载于:https://www.cnblogs.com/senior-engineer/p/9842251.html

发表评论

表情:
评论列表 (有 0 条评论,1098人围观)

还没有评论,来说两句吧...

相关阅读