zoukankan      html  css  js  c++  java
  • 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来寻址。





  • 相关阅读:
    搜索引擎 中 排序学习 的小思考
    《算法导论》之分治策略与动态规划
    《算法导论》之基础篇
    中文文本信息处理的原理与应用读书笔记1
    python 类变量 在多线程下的共享与释放问题
    日志管理
    《领导梯队》读书分享
    初见微服务之服务注册与发现
    初见微服务之RESTful API
    初见微服务之架构概述
  • 原文地址:https://www.cnblogs.com/edzjx/p/10241816.html
Copyright © 2011-2022 走看看