usb device request
在usb 系统中device 中每个实现功能的endpoint在主机中定义为channel,而主机的某一channelh和devecie的特定endpoint配对构成以个pipe.所有的usb系统都是主机通过默认的Control Pipe 发送requeset 到device,device发送respond.
USB规范定义了11个标准命令,它们分别是:Clear_Feature、Get_Configuration、Get_Descriptor、Get_Interface、Get_Status、Set_Address、Set_Configuration、Set_Descriptor、Set_Interface、Set_Feature、Synch_Frame。所有USB设备都必须支持这些命令(个别命令除外,如Set_Descriptor、Synch_Frame)。
所有的命令虽然有不同的数据和使用目的,有的USB命令结构是一样的。下表所示为USB命令的结构:
USB 命令结构 偏移量 | 域 | 长度(字节) | 值 | 描述 |
---|
0 | bmRequestType | 0 | 位图 | 请求特征:D7:传输方向
0=主机至设备
1=设备至主机
D6..5:种类
0=标准
1=类
2=厂商
3=保留
D4..0:接受者
0=设备
1=接口
2=端点
3=其他
4..31 保留
|
1 | bRequest | 1 | 值 | 命令类型编码值(见表3) |
2 | wValue | 2 | 值 | 根据不同的命令,含义也不同 |
4 | wIndex | 2 | 索引或偏移 | 根据不同的命令,含义也不同,主要用于传送索引或偏 移 |
6 | wLength | 2 | 值 | 如有数据传送阶段,此为数据字节数。 |
11种标准命令
命令
|
bmRequestType
|
bRequest
|
wValue
|
wIndex
|
wLength
|
Data
|
---|
Clear_Feature
|
00000000B
00000001B
00000010B
|
CLEAR_FEATURE
|
特性选择符
|
零
接口号
端点号
|
零
|
无
|
Get_Configuration
|
10000000B
|
GET_CONFIGURATION
|
零
|
零
|
一
|
配置值
|
Get_Descriptor
|
10000000B
|
GET_DESCRIPTOR
|
描述表种类(高字节,见表5)和索引(低字节)
|
零或语言标志
|
描述表长
|
描述表
|
Get_Interface
|
10000001B
|
GET_INTERFACE
|
零
|
接口号
|
一
|
可选设置
|
Get_Status
|
10000000B
10000001B
10000010B
|
GET_STATUS
|
零
|
零(返回设备状态)
接口号(对像时接口时)
端点号(对象是端点时)
|
二
|
设备,
接口 ,或
端点状态
|
Set_Address
|
00000000B
|
SET_ADDRESS
|
设备地址
|
零
|
零
|
无
|
Set_Configuration
|
00000000B
|
SET_CONFIGURATION
|
配置值(高字节为0,低字节表示要设置的配置值)
|
零
|
零
|
无
|
Set_Descriptor
|
00000000B
|
SET_DESCRIPTOR
|
描述表种类(高字节,见表5)和索引(低字节)
|
零或语言标志
|
描述表长
|
描述表
|
Set_Feature
|
00000000B
00000001B
00000010B
|
SET_FEATURE
|
特性选择符(1表示设备,0表示端点)
|
零
接口号
端点号
|
零
|
无
|
Set_Interface
|
00000001B
|
SET_INTERFACE
|
可选设置
|
接口号
|
零
|
无
|
Synch_Frame
|
100000010B
|
SYNCH_FRAME
|
零
|
端点号
|
二
|
帧号
|
标准命令的编码值
bRequest
|
Value
|
---|
GET_STATUS
|
0
|
|
CLEAR_FEATURE
|
1
|
为将来保留
|
2
|
SET_FEATURE
|
3
|
为将来保留
|
4
|
SET_ADDRESS
|
5
|
GET_DESCRIPTOR
|
6
|
SET_DESCRIPTOR
|
7
|
GET_CONFIGURATION
|
8
|
SET_CONFIGURATION
|
9
|
GET_INTERFACE
|
10
|
SET_INTERFACE
|
11
|
SYNCH_FRAME
|
12
|