|
一、简述
HID设备,即人机交互设备,常见的有鼠标,键盘,游戏手柄,等等。一般有线方式都是通过USB连线连接到机器设备,作为用户输入设备。在蓝牙技术中,HID设备的接入就是无线的了。但 BLE HID 规范是以 USB HID 规范为基础的 ,不然设备驱动,兼容等问题都会有很多麻烦了。蓝牙中有HID, HOGP profile,但是只是在蓝牙数据通信上做的规范,HID具体含义相关,还是需要看USB相关的HID文档。
host 和 device, 是 USB 中的角色概念。 host 就相当于 PC 主机, 而 device就相当于鼠标,键盘这些 USB 外设。ble hid 中,可以看做蓝牙设备就是 device,而手机就是host。
二、HID Service
HID服务下包含完整特性如下表,有些也行是可选择的,有些是必须的。
查看更多特征可前往蓝牙技术联盟官网:https://www.bluetooth.com/specifications/gatt/characteristics
解析:
1、Protocol Mode Characteristic:(0x2A4E)
为0x00时表示 为boot protocol模式,为0x01时表示为report protocol模式,且HID 服务下面 该特性只能存在一个!
2、Report Characteristic:(0x2A4D)
分为三类:input report,output report 和 feature report。三种report应具备的属性。
为了区分各个characteristic是用来传输什么类型的report,每个characteristic都有一个相关的描述符,称为Report Reference Characteristic Descriptor,该描述符就是用来指示,这个characteristic是用来传输什么类型的report的。
3、Report Map Characteristic: (0x2A4B)
该 characteristic中也可以存在一个特殊的描述符,称为External Report Reference Characteristic Descriptor。该描述符的作用是 指示另一个服务中的 characteristic,其下传输的数据也可以用map characteristic中的报告描述符来解析数据。 一般都不会用到。
4、Boot Keyboard Input Report Characteristic:(0x2A22)
当BLE HID 设备是键盘时,并且工作在boot protocol模式下时,可以用该characteristic来传输键盘按键值,其格式和长度是固定的。
5、Boot Keyboard Output Report Characteristic:(0x2A32)
当BLE HID 设备是键盘时,并且工作在boot protocol模式下时,可以用该characteristic来传输键盘指示灯状态,其格式和长度是固定的。
6、Boot Mouse Input Report Characteristic:(0x2A33)
当BLE HID 设备是鼠标时,并且工作在boot protocol模式下时,可以用该characteristic来传输鼠标数据,其格式和长度是固定的.
7、HID Information Characteristic:(0x2A4A)
用来放置一些HID信息。如下图:分别为版本号,设备目的国家的识别码,特性标志。
remoteWake--指示 HID device是否可以发送唤醒信号给HID HOST,USB中,比如键盘和电脑连接,电脑进入睡眠后,USB就被挂起了,可以通过键盘发送唤醒信号,来唤醒电脑。Ble中睡眠概念没弄清,实际测试无论设置false还是true。将手机锁屏后,设备发送按键值时手机都会亮屏。
normallyConnectable—指示HID device 已绑定但是没连接的情况下是否可以广播,这个也没搞清具体用途。
8、HID Control Point Characteristic:(0x2A4C)
该特性用来指示 HID HOST的状态。0x00通知HID device,HID host进入 挂起状态或退出挂起状态。PC USB中点击电脑的睡眠,USB就进入挂起状态了,唤醒后就是退出挂起状态。BLE中实际测试 锁屏时,手机并未发送suspend信息给 设备,亮屏时也没发送退出挂起信息。所以锁屏并不是进入挂起。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|