请选择 进入手机版 | 继续访问电脑版
查看: 1440|回复: 0

[技术交流] BLE HID简介

[复制链接]

108

主题

163

帖子

618

积分

利尔达员工

Rank: 9Rank: 9Rank: 9

积分
618
发表于 2020-8-14 11:15:54 | 显示全部楼层 |阅读模式
一、简述
       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
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表