寫在前面編程
本文翻譯自 USB Device Class Definition for Audio Devices 1998年版。主要是鄙人我的使用,因此只挑對我有用的翻譯。有些我認爲不是很重要的可能就翻譯個提綱。鄙人英文能力只有幼兒園水平,建議參考原文閱讀。數據結構
約定專業名詞:ide
5 請求spa
5.1 標準請求翻譯
UAC 支持《USB Specification》文檔中第九章描寫的標準請求。UAC除了標準請求沒有特殊請求。設計
5.2 特定類請求rest
大多數特定類請求用於讀取或者設置音頻控制類數值。這些控制器分爲兩大類:一些用於控制音頻設備的功能參數,例如音量,音頻,選擇器位置(selector position)等等;一些是影響在同步端點裏傳輸數據,例如採樣率。orm
UAC支持額外的特定類請求blog
5.2.1 請求層接口
接下來的圖標描述了獲取和設置請求操做時的數據結構,接下來的圖表詳細說明了在不一樣請求類型下設置/獲取請求操做。
5.2.1.1 設置請求操做
本請求操做用於配置控制音頻功能的參數屬性。另外,存儲空間屬性值經過此請求進行
bmRequest Type |
bRequest |
wValue |
wIndex |
wLength |
Data |
00100001B |
SET_CUR |
See following |
Entity ID |
Length of |
Parameter |
|
SET_MIN |
paragraphs |
and |
parameter |
block |
|
SET_MAX |
|
Interface |
block |
|
|
SET_RES |
|
|
|
|
|
|
||||
00100010B |
SET_MEM |
|
Endpoint |
|
bmRequestType 字段:
1)表示這是一個設置請求(D7:0)
2)它是個特定類請求(D6-D5:01),指向:
一個音頻控制接口(AudioControl interface)
或者一個音頻功能( the audio function)的音頻流接口(AudioStreaming interface)(D4-D0:00001)
或者一個音頻流接口(AudioStreaming interface)的同步端點( isochronous endpoint )(D4-D0:00010)
bRequest字段包含一個常量,肯定 地址指向的控制器或者實例( addressed Control or Entity )哪一個屬性參數能夠修改。控制器包含以下這些屬性參數:
實例包含以下屬性參數
若是地址指向的控制器或者實例不支持修改一個肯定的屬性參數(certain attribute)時,在這些屬性參數嘗試被修改時,控制器的管道一定指定一箇中斷(indicate a stall)。大多數狀況下,只有CUR和MEN這兩種屬性參數支持設置請求。並且,這個規則不會影響其餘設計者設計其餘的屬性參數可編程性(designer from making other attributes programmable)。這些請求常量列表,詳細參考 表格A9 「Audio Class-Specific Request Codes.」 摘錄以下
Table A-9: Audio Class-Specific Request Codes
Class-Specific Request Code |
Value |
REQUEST_CODE_UNDEFINED |
0x00 |
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 |
wValue字段的值依賴於wIndex字段。依賴於什麼樣的地址指向的實例,wValue字段隨之改變。下面的圖表,講單獨的描述每一個實例的wValue字段。多數狀況,在高位字節位包含控制器選擇器( Control Selector )。它常地址指向一個控制器,這個特定的控制器包含在一個能夠包含多個控制器的實例們中。若是某個實例只包含一個控制器, 就不須要一個明確的控制器選擇器,wValue字段可以傳送一些額外的參數。
wIndex字段,指定低字節裏指定接口或者端點的尋址,在高字節裏指定實例ID或者0。在一個接口被尋址的狀況下,虛擬實例「接口」經過高位指定0來尋址。