UAC 音频控制
一个USB设备可能包含多个配置。像手机一样,当手机通过USB线缆接入PC机后,会弹出一个选择对话框:
让用户选择。当然一个USB设备只能工作在一种配置描述符下。
对于每一个USB配置描述符,可能含有多个USB接口描述描述符,同时这些接口描述符可能每个接口描述符又包含多个转换接口描述符。
这些接口描述符可能每一个接口描述符实现的是不同的独立的功能或者多个接口描述符组合实现一些设备功能。
在实际的设备工作中,可能又因为工作状态的不同,这些接口描述符进行转换接口的切换。
所以说,一个USB设备可以做的很简单,也可以做的很复杂。当单一接口无法独立完成所需要的设备功能时,就会多个接口组合实现设备功能。
所以,很不幸,UAC音频设备像UVC设备一样,都是由多接口组合实现的复杂设备。
UAC音频设备的接口的分类
这些多接口配合实现的UAC设备接口,分为两种,分别叫做UAC音频控制接口和UAC音频流接口。
- UAC音频控制接口:用于实现UAC音频控制接口及拓扑结构的枚举。
- UAC音频流接口:用于音频数据流的传输。
UAC音频控制接口
为了控制特定音频功能的功能行为,主机可以操纵时钟实体、单元以及音频功能内部的终端。为了使这些对象可访问,音频功能应提供单音频控制接口。此接口可以包含以下终结点:
- 控制端点,用于操作时钟实体、单元和终端设置以及检索系统状态音频功能。此终结点是必需的,默认终结点0用于此目的。
- 中断端点。中断端点是可选的,如果设备需要通知主机音频功能行为变化。
音频控制接口是访问音频功能内部的惟一入口。所有要求与音频功能的时钟实体、单元或内部音频控件的操作有关终端应指向音频功能的音频控制接口。所有与音频功能的描述符都是音频控制接口描述符的一部分。音频控制接口的转换接口AlternateSetting只能为0。
UAC音频控制接口中的音频控制端点
音频控制端点使用默认的USB端点0来进行UAV音频的功能控制。实现方式是UAC通过端点0发送USB特定类请求。
UAC音频控制接口中的音频中断端点
UAC音频中断端点是可选的。通过此中断端点可以向主机上报动态中断的信息,这些信息可来源于可寻址实体(时钟实体、终端、单元、接口和端点)。
中断控制端点返回的数据长度为2字节,分别为bStatusType和bOriginator。
- bStatusType的D7位标识中断是否挂起,D6用于标识是否是固件内存变化中断(通过Get Memory 特定类请示清除),D4,D5保留为0,D0-D3为0表示是中断来源于音频控制接口,为1表示中断来源于音频流接口,为2表示中断来源于音频流接口端点,值3-15保留。
- bOriginator:根据中断的来原于用标识中断源的ID或端点地址。
UAC音频流接口
UAC音频流接口用于传输音频流数据。一个UAC音频设备可以有多个音频流接口,每个音频流接口可以传输不同的音频数据格式。每一个音频流接口只能有一个等时传输端点,这样保证的是数据的传输与端点相关。
音频流接口包含转换接口进行音频流的切换。但至少包含一个转换接口为0的零带宽即不传输音频流接口和一个包含实际传输数据的转换接口1。
UAC音频其它控制
- 时钟控制
- 电源域控制
- 按钮控制:分为通过HID接口实现和音响控制的一个组成部分。