You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

41 lines
2.9 KiB

  1. #
  2. # This file is part of usb_protocol.
  3. #
  4. """ Convenience emitters for USB Audio Class 2 descriptors. """
  5. from contextlib import contextmanager
  6. from .. import emitter_for_format
  7. from ...types.descriptors.uac import *
  8. from ...types.descriptors.uac2 import *
  9. from ...emitters.descriptor import ComplexDescriptorEmitter
  10. ###################### Audio #########################
  11. # Create our emitters.
  12. InterfaceAssociationDescriptorEmitter = emitter_for_format(InterfaceAssociationDescriptor)
  13. StandardAudioControlInterfaceDescriptorEmitter = emitter_for_format(StandardAudioControlInterfaceDescriptor)
  14. class ClassSpecificAudioControlInterfaceDescriptorEmitter(ComplexDescriptorEmitter):
  15. DESCRIPTOR_FORMAT = ClassSpecificAudioControlInterfaceDescriptor
  16. def _pre_emit(self):
  17. # Figure out the total length of our descriptor, including subordinates.
  18. subordinate_length = sum(len(sub) for sub in self._subordinates)
  19. self.wTotalLength = subordinate_length + self.DESCRIPTOR_FORMAT.sizeof()
  20. ClockSourceDescriptorEmitter = emitter_for_format(ClockSourceDescriptor)
  21. InputTerminalDescriptorEmitter = emitter_for_format(InputTerminalDescriptor)
  22. OutputTerminalDescriptorEmitter = emitter_for_format(OutputTerminalDescriptor)
  23. AudioStreamingInterfaceDescriptorEmitter = emitter_for_format(AudioStreamingInterfaceDescriptor)
  24. ClassSpecificAudioStreamingInterfaceDescriptorEmitter = emitter_for_format(ClassSpecificAudioStreamingInterfaceDescriptor)
  25. TypeIFormatTypeDescriptorEmitter = emitter_for_format(TypeIFormatTypeDescriptor)
  26. ExtendedTypeIFormatTypeDescriptorEmitter = emitter_for_format(ExtendedTypeIFormatTypeDescriptor)
  27. TypeIIFormatTypeDescriptorEmitter = emitter_for_format(TypeIIFormatTypeDescriptor)
  28. ExtendedTypeIIFormatTypeDescriptorEmitter = emitter_for_format(ExtendedTypeIIFormatTypeDescriptor)
  29. TypeIIIFormatTypeDescriptorEmitter = emitter_for_format(TypeIIIFormatTypeDescriptor)
  30. ExtendedTypeIIIFormatTypeDescriptorEmitter = emitter_for_format(ExtendedTypeIIIFormatTypeDescriptor)
  31. ClassSpecificAudioStreamingIsochronousAudioDataEndpointDescriptorEmitter = emitter_for_format(ClassSpecificAudioStreamingIsochronousAudioDataEndpointDescriptor)
  32. AudioControlInterruptEndpointDescriptorEmitter = emitter_for_format(AudioControlInterruptEndpointDescriptor)
  33. AudioStreamingIsochronousEndpointDescriptorEmitter = emitter_for_format(AudioStreamingIsochronousEndpointDescriptor)
  34. AudioStreamingIsochronousFeedbackEndpointDescriptorEmitter = emitter_for_format(AudioStreamingIsochronousFeedbackEndpointDescriptor)