<a href="http://hi.baidu.com/zengzhaonong/blog/item/6bb44682452a4da00df4d245.html" target="_blank">usb_control_msg()</a>
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
【新浪微網誌】 張昺華--sky
【twitter】 @sky2030_
【facebook】 張昺華 zhangbinghua
本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利.