struct usb_ctrlrequest

|-----------------------|

| __u8    bRequestType -|

| __u8    bRequest     -|

| __le16 -wValue       -|

| __le16 -wIndex       -|

| __le16 -wLength      -|

|-----------------------|




这个数据结构就是SETUP信包的内容,而缓冲区的内容,就是随后的数据信包的内容。

---------------------------------------------------------------

bRequestType

    D7     数据的传输方向:0表示从主机到设备; 1表示从设备到主机;

    D6~5   命令的类型:   0表示标准命令;    1表示类命令;      2表示厂商提供的命令; 3保留;

    D4~0   接收对象;     0表示设备;       1表示接口;       2表示端点;         3表示其他;

bRequest

    命令的序号(其实就是命令);所有的命令都是以不同编码值的方式传递给设备的,bRequest就表示USB命令的编码值

wValue, wIndex

    这两个字段对于不同的命令有不同的含义

wLength

    表示在完成命令控制传输的数据阶段,要求传输数据的字节长度。一般不论是输入还是输出都要求给出准确的数字。当命令不需要传输数据时,此字段设为0





USB标准命令---------------------------------------------------------------

命令            bReuestType bRequest         wValue      wIndex     wLength     数据         

Get_Descriptor 1000 0000b -GET_DESCRIPTOR   描述符类型   -0或语言ID --描述符长度 --描述符         

                                           -描述符的索引号 


wValue   高8位表示描述符类型; 低8位表示描述符索引号


GET_DESCRIPTOR = 6

GetHubdescriptor = 0XA0

Get_Descriptor = 0X80


---------------------------------------------------------------

bRequestType    bRequest   wValue   wIndex   wLength

80              6          100      0        12

80              6          200      0        9

80              6          300      0        FF

80              6          301      409      FF

80              6          302      409      FF

80              6          303      409      FF



100        表示获取设备描述符usb_device_descriptor

200        表示获取配置描述符usb_config_descriptor

300        表示获取字符描述符

           301        iSerialNumber

           302        iProduct

           303        iManufacturer