USB AUDIO Device CLASS Requests

寫在前面編程

本文翻譯自 USB Device Class Definition for Audio Devices 1998年版。主要是鄙人我的使用,因此只挑對我有用的翻譯。有些我認爲不是很重要的可能就翻譯個提綱。鄙人英文能力只有幼兒園水平,建議參考原文閱讀。數據結構

約定專業名詞:ide

  • Audio Device Class 簡稱爲UAC(USB Audio Class)
  • Control  控制器
  • Entity  實例
  • interface 接口
  • endpoint  端點
  • pipe 管道


5 請求spa

5.1 標準請求翻譯

UAC 支持《USB Specification》文檔中第九章描寫的標準請求。UAC除了標準請求沒有特殊請求。設計

5.2 特定類請求rest

大多數特定類請求用於讀取或者設置音頻控制類數值。這些控制器分爲兩大類:一些用於控制音頻設備的功能參數,例如音量,音頻,選擇器位置(selector position)等等;一些是影響在同步端點裏傳輸數據,例如採樣率。orm

  • 音頻控制請求(AC)
  • 音頻流請求

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 )哪一個屬性參數能夠修改。控制器包含以下這些屬性參數:

  • 當前設置屬性 (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來尋址。

相關文章
相關標籤/搜索