USB AUDIO Device CLASS Requests


寫在前面

本文翻譯自 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來尋址。






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM