转自:
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 表示在完成命令控制传输的数据阶段,要求传输数据的字节长度。一般不论是输入还是输出都要求给出准确的数字。当命令不需要传输数据时,此字段设为0USB标准命令---------------------------------------------------------------命令 bReuestType bRequest wValue wIndex wLength 数据 Get_Descriptor 1000 0000b -GET_DESCRIPTOR 描述符类型 -0或语言ID --描述符长度 --描述符 -描述符的索引号 wValue 高8位表示描述符类型; 低8位表示描述符索引号GET_DESCRIPTOR = 6GetHubdescriptor = 0XA0Get_Descriptor = 0X80---------------------------------------------------------------bRequestType bRequest wValue wIndex wLength80 6 100 0 1280 6 200 0 980 6 300 0 FF80 6 301 409 FF80 6 302 409 FF80 6 303 409 FF100 表示获取设备描述符usb_device_descriptor200 表示获取配置描述符usb_config_descriptor300 表示获取字符描述符 301 iSerialNumber 302 iProduct 303 iManufacturer