BLE HID协议-----------ble_app_hids_mouse demo
demo :nRF5_SDK_17.1.0_ddde560
学习HID协议的几个问题:
-
rep_map_data的数据表示什么意思,如图:
-
rep_map_data在代码中什么作用:
在 BLE HID 协议中,非 boot protocol 模式下的 input report, output report 传输的数据格式和长度都是可变的
那USB host如何处理或者说定位数据意思?这就需要 报告描述符
报告描述本身就是一串有一些格式规则的数据,其内容数据的作用就是描述report protocol 模式下传输的 report 的数据的格式和作用
rep_map_data就是报告描述符,用于描述输入报告(input report)的格式和结构,例如按键、滚轮等数据的编码方式,它存在sever中的 Report Map characteristic
Report Map characteristic不会随Input Report characteristic发送,通常在设备连接时由主机(如手机)读取。用作主机解析从机发送的数据
Input Report Characteristic用于实际传输数据:当用户操作(如按键、移动)时,设备通过该特性发送数据给主机。
通信方向差异
Report Map是主机主动读取的设备特性,属于从设备到主机的单向传输。
Input Report是设备主动发送给主机的数据,属于双向传输,但数据内容基于已定义的Report Map。 -
rep_map_data中描述了按键、滚轮等数据的编码方式,如何定位它们的解析? 用Report Id 和 report_type
在初始化的时候,我们会填入Input Report的参数report_id 和 report_type来区分 -
向USB host 传输数据需要多少个字节? 这也需要看rep_map_data中对数据域的定义
以鼠标的x,y轴为例:
定义了2个数据域,一个数据域12bit,加起来就是 12bit * 2 = 24bit = 3byte
所以我们需要传输3字节