# -*- coding: utf-8 -*-
#
# This file is part of usb_protocol.
#
""" Convenience emitters for USB Audio Class 2 descriptors. """
from ...types.descriptors.uac2 import *
from .. import emitter_for_format
from ..descriptor import ComplexDescriptorEmitter
# Create our emitters.
InterfaceAssociationDescriptorEmitter = emitter_for_format(InterfaceAssociationDescriptor)
StandardAudioControlInterfaceDescriptorEmitter = emitter_for_format(StandardAudioControlInterfaceDescriptor)
[docs]
class ClassSpecificAudioControlInterfaceDescriptorEmitter(ComplexDescriptorEmitter):
DESCRIPTOR_FORMAT = ClassSpecificAudioControlInterfaceDescriptor
def _pre_emit(self):
# Figure out the total length of our descriptor, including subordinates.
subordinate_length = sum(len(sub) for sub in self._subordinates)
self.wTotalLength = subordinate_length + self.DESCRIPTOR_FORMAT.sizeof()
ClockSourceDescriptorEmitter = emitter_for_format(ClockSourceDescriptor)
InputTerminalDescriptorEmitter = emitter_for_format(InputTerminalDescriptor)
OutputTerminalDescriptorEmitter = emitter_for_format(OutputTerminalDescriptor)
FeatureUnitDescriptorEmitter = emitter_for_format(FeatureUnitDescriptor)
AudioStreamingInterfaceDescriptorEmitter = emitter_for_format(AudioStreamingInterfaceDescriptor)
ClassSpecificAudioStreamingInterfaceDescriptorEmitter = emitter_for_format(ClassSpecificAudioStreamingInterfaceDescriptor)
TypeIFormatTypeDescriptorEmitter = emitter_for_format(TypeIFormatTypeDescriptor)
ExtendedTypeIFormatTypeDescriptorEmitter = emitter_for_format(ExtendedTypeIFormatTypeDescriptor)
TypeIIFormatTypeDescriptorEmitter = emitter_for_format(TypeIIFormatTypeDescriptor)
ExtendedTypeIIFormatTypeDescriptorEmitter = emitter_for_format(ExtendedTypeIIFormatTypeDescriptor)
TypeIIIFormatTypeDescriptorEmitter = emitter_for_format(TypeIIIFormatTypeDescriptor)
ExtendedTypeIIIFormatTypeDescriptorEmitter = emitter_for_format(ExtendedTypeIIIFormatTypeDescriptor)
ClassSpecificAudioStreamingIsochronousAudioDataEndpointDescriptorEmitter = emitter_for_format(ClassSpecificAudioStreamingIsochronousAudioDataEndpointDescriptor)
AudioControlInterruptEndpointDescriptorEmitter = emitter_for_format(AudioControlInterruptEndpointDescriptor)
AudioStreamingIsochronousEndpointDescriptorEmitter = emitter_for_format(AudioStreamingIsochronousEndpointDescriptor)
AudioStreamingIsochronousFeedbackEndpointDescriptorEmitter = emitter_for_format(AudioStreamingIsochronousFeedbackEndpointDescriptor)