UAC 特定类请求
2021-02-09
6937
0
特定类请求一般用于设置或获取音频控制。这些控制又分为两大部分:
- 音频控制请求:对音频控制单元或终端进行控制。
- 音频流请求: 如对音频流控制的请求,如音频采相率等。
音频设备类也支持其他特定于类的请求:
- 内存请求(Memory Request),每个可寻址的实体或终端,可导出一个内存映射接口。提供对该实体内存单元的读写控制。
- Get Status 请求:对音频控制单元,终端,音频流接口或其它不可操作的状态请求。
特定类请求码的定义
Class-Specific Request Code | Value |
---|---|
SET_ CUR | 0x01 |
GET_ CUR | 0x81 |
SET_ MIN | 0x02 |
GET_ MIN | 0x82 |
SET_ MAX | 0x03 |
GET_ MAX | 0x83 |
SET_ RES | 0x04 |
GET_ RES | 0x84 |
SET_MEM | 0x05 |
GET_ MEM | 0x85 |
GET_STAT | 0xFF |
设置请求SET
设置请求用于设置视频功能的相关属性,这些属性一般由相关的端点、接口来实现。
bmRequestType(1) | bRequest(1) | wValue(2) | wIndex(2) | wLength(2) | Data(0~N) |
---|---|---|---|---|---|
00100001(接口或实体) ————— 00100010(端点) |
SET_CUR SET_MIN SET_MAX SET_RES SET_MEM |
见解释 | 实体ID(高字节)、接口(低字节) ————— 端点(低字节) |
参数长度 | 参数块 |
获取请求GET
获取请求用于视频功能的相关属性.
bmRequestType(1) | bRequest(1) | wValue(2) | wIndex(2) | wLength(2) | Data(0~N) |
---|---|---|---|---|---|
10100001(接口或实体) ————— 10100010(端点) |
GET_CUR GET_MIN GET_MAX GET_RES GET_MEM |
见解释 | 实体ID(高字节)、接口(低字节) ————— 端点(低字节) |
参数长度 | 参数块 |
bmRequestType字段(1字节)
D7,下一步数据的传输方向
0 = 主机到设备(SET请求)
1 = 设备到主机(GET请求)
D6-D5,命令的类型
00 = 标准请求命令
01 = 类请求命令(UAC规范中的请求属于类请求命令)
10 = 用户定义的请求命令
11 = 保留
D4-D0,命令接受者的类型
00000 = 接受者为设备(UAC无此值)
00001 = 接收者为接口(UAC规范中可以理解为AC,AS中拓扑结构中的端子,单元等)
00010 = 接受者为端点(UAC规范中为音频流接口的端点)
00011 = 其他接受者
bRequest字段(1)
请求命令,包括设置和获取。
- SET_CUR 设置性
- GET_CUR 获取当前属性
- GET_MIN 获取最小设置属性
- GET_MAX 获取最大设置属性
- GET_RES 获取分辨率属性
- GET_LEN 获取数据长度属性
- GET_INFO 获取设备支持的特定类请求属性
- GET_DEF 获取默认属性
wIndex字段(2字节)
Etity ID(高字节),接口或端点(低字节)。Etity ID是由UVC设备开发者指定的,该ID号能标识具体唯一的特定的功能单元,便于Host端的驱动能依次对设备内的不同功能单元进行配置与操作。
wValue字段(2字节)
UAC中大多数情况下wValue的取值都为控制选择器CS(高字节),低字节为零。
CS的取值受限于wIndex字段中的Entity ID。当Entity ID取不同值时则wValue字段取值也会有所不同。
wLenth字段(2字节)
传输的数据大小。该字段表示在控制传输中传输数据的大小。主机—>设备时,该字段的值是实际的数据大小,设备—>主机时,wLenth为设备能够发送的最大数据包大小。
HID人机交互QQ群:564808376
UAC音频QQ群:218581009
UVC相机QQ群:331552032
BOT&UASP大容量存储QQ群:258159197
STC-USB单片机QQ群:315457461
USB技术交流QQ群2:580684376
USB技术交流QQ群:952873936