您现在的位置: USB开发网 > USB技术文档 > USB专题 > USB HID协议中文版
USB HID协议中文版

4、HID的特定请求

------分隔线----------------------------

   除了USB设备的11个标准请求外,HID规范另外还定义了6HID特定控制请求。所有的HID设备都必须支持Get_Report请求,同时支持启动的设备必须支持Get_Protocol请求和Set_Protocol请求,其他的请求是可选择的。如果设备没有中断输出端点,此设备需要支持Get_Report请求来从主机读取数据。

  在控制传输的设置阶段的数据包中的8个字节中的第一字节bmRequestType的编码含义参阅第6章中的USB标准请求。第2个字节bRequest定义请求的内容。wValue因请求的不同而不同。wIndex指明HID所在的接口。

表4-1 HID特定的请求

bmRequestType

bRequest (值)

wValue

wIndex

wLength

数据阶段

1 01 00001b

Get_Report (1)

报表类型,报表ID

接口

报表长度

报表

0 01 00001b

Set_Report (9)

报表类型,报表ID

接口

报表长度

报表

1 01 00001b

Get_Idle (2)

0,报表ID

接口

1

闲置时间

0 01 00001b

Set_Idle (10)

闲置时间,报表ID

接口

0

1 01 00001b

Get_Protocol (3)

0

接口

1

0: 启动协议

1: 报表协议

0 01 00001b

Set_Protocol (11)

0: 启动协议

1: 报表协议

接口

0

 

 4.1 Get_Report请求

  Get_Report的作用是启用主机使用控制传输,来从设备读取数据。

  在使用时wValue字段的高字节是报表类型,1表示Input报表,2表示Output报表,3表示Feature报表。wValue的低字节是报表的Report ID,如果没有定义Report ID,该字节为设0。

  在携带请求的控制传输的数据阶段,HID设备回传指定的报表内容。

  HlD规范不建议使用该请求获得未经定时的数据,这样的数据建议使用中断输入管道获得。

  该请求用来取得在主机初始化设备时的特征项目状态和其他信息。使用开机协议的主机可以使用此请求来获得按键或鼠标数据。

4.2 Set_Report请求

  Set_Report请求的参数含义和Get_Report一样,但Set_Report请求的数据方向与Get_Report相反,在后面的数据阶段,主机传送报表到HID设备,这样的输出报表可以用于复位设备的控制,复位产生的效果取决于对应的控制的类型是相对(Reletive)的还是绝对(Absolute)的。

4.3 Set_Idle请求

  Set_Idle请求的作用是静默一个在中断输入管道的特定的报表,直到一个发生一个相关的事件或过去了规定的时间,当数据从上一个报表后没有改变时,可以通过限制中断输入端点的报表频率来节省传输带宽。HID设备不是必需支持此请求。

  wValue字段的高字节是设置的闲置时间,是报表之间的最大间隔时间。该字节为0表示闲置时间为无限长,在这种情况下,设备只有在报表数据有改变时才传送报表,否则设备传回一个NAK。

  wValue字段的低字节指示此请求应用的报表的Report ID。如果低字节是0,此请求应用到设备的所有输入报表。

  闲置时间以4ms为单位,范围在4ms~1020ms之间。如果报表的数据自从上一次报表后有改变,或是接收到一个请求,设备会传送一个报表。

  如果报表的数据没有改变,而且从上一次报表后过去的时间自尚未达到规定的闲置时间,设备会传回一个NAK。如果报表的数据没有改变,而且持续时间已经达到的闲置时间,设备会传送一个报表。

  闲置时间设置为0表示无限长的闲置时间,设备只有在报表的数据有改变时才会传送一个报表,对于其他的中断输入请求则是传回NAK。

  在检测HID设备时,Wndows的HID驱动程序会试图将闲置时间设置成0。如果HID设备不支持此请求,主机会收到传回的Stall。

4.4 Get_Idle请求

  Get_Idle请求的作用是过的设备的当前闲置时间,在数据阶段,HID设备回传一个字节的闲置时间值。

4.5 Get_Protocol请求
Get_Protocol请求的作用是主机获取设备目前作用的是启动协议还是报表协议。

  在数据阶段中设备回传的1个字节信息包中的数据值为0表示启动协议,为1表示报表协议。

  启动设备必需支持该请求。

4.6 Set_Protocol请求
Set_Protocol的作用是主机指定设备使用启动协议或报表协议。

  在数据阶段中主机传送的1个字节信息包中的数据值为0表示指定启动协议,为1表示指定报表协议。

  启动设备必需支持该请求。

------分隔线----------------------------
USB开源项目
联系我们
  • Q Q: 1148374829 点击这里给我发消息
  • 旺旺:jhoneqhsieh 点击这里给我发消息
  • 电话:(0)15923141204
  • 淘宝网店