寫在前面本文翻譯自 USB Device Class Definition for Audio Devices 1998年版約定專業名詞:Audio Device Class 簡稱為UAC(USB Audio Class)5 請求5.1 標準請求UAC 支持《USB Specification》文檔... ...
寫在前面
本文翻譯自 USB Device Class Definition for Audio Devices 1998年版。主要是鄙人個人使用,所以只挑對我有用的翻譯。有些我認為不是很重要的可能就翻譯個提綱。鄙人英文能力只有幼兒園水平,建議參考原文閱讀。
約定專業名詞:
- Audio Device Class 簡稱為UAC(USB Audio Class)
- Control 控制器
- Entity 實例
- interface 介面
- endpoint 端點
- pipe 管道
5 請求
5.1 標準請求
UAC 支持《USB Specification》文檔中第九章描寫的標準請求。UAC除了標準請求沒有特殊請求。
5.2 特定類請求
大多數特定類請求用於讀取或者設置音頻控制類數值。這些控制器分為兩大類:一些用於控制音頻設備的功能參數,例如音量,音頻,選擇器位置(selector position)等等;一些是影響在同步端點里傳輸數據,例如採樣率。
- 音頻控制請求(AC)
- 音頻流請求
UAC支持額外的特定類請求
- 存儲請求
- 獲取狀態請求
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 )哪個屬性參數可以修改。控制器包含如下這些屬性參數:
- 當前設置屬性 (SET_CUR)
- 最小設置屬性 (SET_MIN)
- 最大設置屬性 (SET_MAX)
實例包含如下屬性參數
- 存儲空間屬性(SET_MEN)
如果地址指向的控制器或者實例不支持修改一個確定的屬性參數(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來定址。