LUFA Library
Common Class Definitions

Data Structures

struct  USB_Audio_Descriptor_FeatureUnit_t
 Audio class-specific Feature Unit Descriptor (LUFA naming conventions). More...
 
struct  USB_Audio_Descriptor_Format_t
 Audio class-specific Format Descriptor (LUFA naming conventions). More...
 
struct  USB_Audio_Descriptor_InputTerminal_t
 Audio class-specific Input Terminal Descriptor (LUFA naming conventions). More...
 
struct  USB_Audio_Descriptor_Interface_AC_t
 Audio class-specific Interface Descriptor (LUFA naming conventions). More...
 
struct  USB_Audio_Descriptor_Interface_AS_t
 Audio class-specific Streaming Audio Interface Descriptor (LUFA naming conventions). More...
 
struct  USB_Audio_Descriptor_OutputTerminal_t
 Audio class-specific Output Terminal Descriptor (LUFA naming conventions). More...
 
struct  USB_Audio_Descriptor_StreamEndpoint_Spc_t
 Audio class-specific Extended Endpoint Descriptor (LUFA naming conventions). More...
 
struct  USB_Audio_Descriptor_StreamEndpoint_Std_t
 Audio class-specific Streaming Endpoint Descriptor (LUFA naming conventions). More...
 
struct  USB_Audio_SampleFreq_t
 24-Bit Audio Frequency Structure. More...
 
struct  USB_Audio_StdDescriptor_FeatureUnit_t
 Audio class-specific Feature Unit Descriptor (USB-IF naming conventions). More...
 
struct  USB_Audio_StdDescriptor_Format_t
 Audio class-specific Format Descriptor (USB-IF naming conventions). More...
 
struct  USB_Audio_StdDescriptor_InputTerminal_t
 Audio class-specific Input Terminal Descriptor (USB-IF naming conventions). More...
 
struct  USB_Audio_StdDescriptor_Interface_AC_t
 Audio class-specific Interface Descriptor (USB-IF naming conventions). More...
 
struct  USB_Audio_StdDescriptor_Interface_AS_t
 Audio class-specific Streaming Audio Interface Descriptor (USB-IF naming conventions). More...
 
struct  USB_Audio_StdDescriptor_OutputTerminal_t
 Audio class-specific Output Terminal Descriptor (USB-IF naming conventions). More...
 
struct  USB_Audio_StdDescriptor_StreamEndpoint_Spc_t
 Audio class-specific Extended Endpoint Descriptor (USB-IF naming conventions). More...
 
struct  USB_Audio_StdDescriptor_StreamEndpoint_Std_t
 Audio class-specific Streaming Endpoint Descriptor (USB-IF naming conventions). More...
 

Macros

#define AUDIO_EP_ACCEPTS_SMALL_PACKETS   (0 << 7)
 
#define AUDIO_EP_FULL_PACKETS_ONLY   (1 << 7)
 
#define AUDIO_EP_PITCH_CONTROL   (1 << 1)
 
#define AUDIO_EP_SAMPLE_FREQ_CONTROL   (1 << 0)
 
#define AUDIO_SAMPLE_FREQ(freq)   {.Byte1 = ((uint32_t)freq & 0xFF), .Byte2 = (((uint32_t)freq >> 8) & 0xFF), .Byte3 = (((uint32_t)freq >> 16) & 0xFF)}
 

Enumerations

enum  Audio_ClassRequests_t {
  AUDIO_REQ_SetCurrent = 0x01,
  AUDIO_REQ_SetMinimum = 0x02,
  AUDIO_REQ_SetMaximum = 0x03,
  AUDIO_REQ_SetResolution = 0x04,
  AUDIO_REQ_SetMemory = 0x05,
  AUDIO_REQ_GetCurrent = 0x81,
  AUDIO_REQ_GetMinimum = 0x82,
  AUDIO_REQ_GetMaximum = 0x83,
  AUDIO_REQ_GetResolution = 0x84,
  AUDIO_REQ_GetMemory = 0x85,
  AUDIO_REQ_GetStatus = 0xFF
}
 
enum  Audio_CSEndpoint_SubTypes_t { AUDIO_DSUBTYPE_CSEndpoint_General = 0x01 }
 
enum  Audio_CSInterface_AC_SubTypes_t {
  AUDIO_DSUBTYPE_CSInterface_Header = 0x01,
  AUDIO_DSUBTYPE_CSInterface_InputTerminal = 0x02,
  AUDIO_DSUBTYPE_CSInterface_OutputTerminal = 0x03,
  AUDIO_DSUBTYPE_CSInterface_Mixer = 0x04,
  AUDIO_DSUBTYPE_CSInterface_Selector = 0x05,
  AUDIO_DSUBTYPE_CSInterface_Feature = 0x06,
  AUDIO_DSUBTYPE_CSInterface_Processing = 0x07,
  AUDIO_DSUBTYPE_CSInterface_Extension = 0x08
}
 
enum  Audio_CSInterface_AS_SubTypes_t {
  AUDIO_DSUBTYPE_CSInterface_General = 0x01,
  AUDIO_DSUBTYPE_CSInterface_FormatType = 0x02,
  AUDIO_DSUBTYPE_CSInterface_FormatSpecific = 0x03
}
 
enum  Audio_Descriptor_ClassSubclassProtocol_t {
  AUDIO_CSCP_AudioClass = 0x01,
  AUDIO_CSCP_ControlSubclass = 0x01,
  AUDIO_CSCP_ControlProtocol = 0x00,
  AUDIO_CSCP_AudioStreamingSubclass = 0x02,
  AUDIO_CSCP_MIDIStreamingSubclass = 0x03,
  AUDIO_CSCP_StreamingProtocol = 0x00
}
 
enum  Audio_EndpointControls_t {
  AUDIO_EPCONTROL_SamplingFreq = 0x01,
  AUDIO_EPCONTROL_Pitch = 0x02
}
 

Audio Channel Masks

#define AUDIO_CHANNEL_LEFT_FRONT   (1 << 0)
 
#define AUDIO_CHANNEL_RIGHT_FRONT   (1 << 1)
 
#define AUDIO_CHANNEL_CENTER_FRONT   (1 << 2)
 
#define AUDIO_CHANNEL_LOW_FREQ_ENHANCE   (1 << 3)
 
#define AUDIO_CHANNEL_LEFT_SURROUND   (1 << 4)
 
#define AUDIO_CHANNEL_RIGHT_SURROUND   (1 << 5)
 
#define AUDIO_CHANNEL_LEFT_OF_CENTER   (1 << 6)
 
#define AUDIO_CHANNEL_RIGHT_OF_CENTER   (1 << 7)
 
#define AUDIO_CHANNEL_SURROUND   (1 << 8)
 
#define AUDIO_CHANNEL_SIDE_LEFT   (1 << 9)
 
#define AUDIO_CHANNEL_SIDE_RIGHT   (1 << 10)
 
#define AUDIO_CHANNEL_TOP   (1 << 11)
 

Audio Feature Masks

#define AUDIO_FEATURE_MUTE   (1 << 0)
 
#define AUDIO_FEATURE_VOLUME   (1 << 1)
 
#define AUDIO_FEATURE_BASS   (1 << 2)
 
#define AUDIO_FEATURE_MID   (1 << 3)
 
#define AUDIO_FEATURE_TREBLE   (1 << 4)
 
#define AUDIO_FEATURE_GRAPHIC_EQUALIZER   (1 << 5)
 
#define AUDIO_FEATURE_AUTOMATIC_GAIN   (1 << 6)
 
#define AUDIO_FEATURE_DELAY   (1 << 7)
 
#define AUDIO_FEATURE_BASS_BOOST   (1 << 8)
 
#define AUDIO_FEATURE_BASS_LOUDNESS   (1 << 9)
 

Audio Terminal Types

#define AUDIO_TERMINAL_UNDEFINED   0x0100
 
#define AUDIO_TERMINAL_STREAMING   0x0101
 
#define AUDIO_TERMINAL_VENDOR   0x01FF
 
#define AUDIO_TERMINAL_IN_UNDEFINED   0x0200
 
#define AUDIO_TERMINAL_IN_MIC   0x0201
 
#define AUDIO_TERMINAL_IN_DESKTOP_MIC   0x0202
 
#define AUDIO_TERMINAL_IN_PERSONAL_MIC   0x0203
 
#define AUDIO_TERMINAL_IN_OMNIDIR_MIC   0x0204
 
#define AUDIO_TERMINAL_IN_MIC_ARRAY   0x0205
 
#define AUDIO_TERMINAL_IN_PROCESSING_MIC   0x0206
 
#define AUDIO_TERMINAL_IN_OUT_UNDEFINED   0x0300
 
#define AUDIO_TERMINAL_OUT_SPEAKER   0x0301
 
#define AUDIO_TERMINAL_OUT_HEADPHONES   0x0302
 
#define AUDIO_TERMINAL_OUT_HEAD_MOUNTED   0x0303
 
#define AUDIO_TERMINAL_OUT_DESKTOP   0x0304
 
#define AUDIO_TERMINAL_OUT_ROOM   0x0305
 
#define AUDIO_TERMINAL_OUT_COMMUNICATION   0x0306
 
#define AUDIO_TERMINAL_OUT_LOWFREQ   0x0307
 

Detailed Description

Module Description

Constants, Types and Enum definitions that are common to both Device and Host modes for the USB Audio 1.0 Class.

Macro Definition Documentation

◆ AUDIO_CHANNEL_CENTER_FRONT

#define AUDIO_CHANNEL_CENTER_FRONT   (1 << 2)

Supported channel mask for an Audio class terminal descriptor. See the Audio class specification for more details.

◆ AUDIO_CHANNEL_LEFT_FRONT

#define AUDIO_CHANNEL_LEFT_FRONT   (1 << 0)

Supported channel mask for an Audio class terminal descriptor. See the Audio class specification for more details.

◆ AUDIO_CHANNEL_LEFT_OF_CENTER

#define AUDIO_CHANNEL_LEFT_OF_CENTER   (1 << 6)

Supported channel mask for an Audio class terminal descriptor. See the Audio class specification for more details.

◆ AUDIO_CHANNEL_LEFT_SURROUND

#define AUDIO_CHANNEL_LEFT_SURROUND   (1 << 4)

Supported channel mask for an Audio class terminal descriptor. See the Audio class specification for more details.

◆ AUDIO_CHANNEL_LOW_FREQ_ENHANCE

#define AUDIO_CHANNEL_LOW_FREQ_ENHANCE   (1 << 3)

Supported channel mask for an Audio class terminal descriptor. See the Audio class specification for more details.

◆ AUDIO_CHANNEL_RIGHT_FRONT

#define AUDIO_CHANNEL_RIGHT_FRONT   (1 << 1)

Supported channel mask for an Audio class terminal descriptor. See the Audio class specification for more details.

◆ AUDIO_CHANNEL_RIGHT_OF_CENTER

#define AUDIO_CHANNEL_RIGHT_OF_CENTER   (1 << 7)

Supported channel mask for an Audio class terminal descriptor. See the Audio class specification for more details.

◆ AUDIO_CHANNEL_RIGHT_SURROUND

#define AUDIO_CHANNEL_RIGHT_SURROUND   (1 << 5)

Supported channel mask for an Audio class terminal descriptor. See the Audio class specification for more details.

◆ AUDIO_CHANNEL_SIDE_LEFT

#define AUDIO_CHANNEL_SIDE_LEFT   (1 << 9)

Supported channel mask for an Audio class terminal descriptor. See the Audio class specification for more details.

◆ AUDIO_CHANNEL_SIDE_RIGHT

#define AUDIO_CHANNEL_SIDE_RIGHT   (1 << 10)

Supported channel mask for an Audio class terminal descriptor. See the Audio class specification for more details.

◆ AUDIO_CHANNEL_SURROUND

#define AUDIO_CHANNEL_SURROUND   (1 << 8)

Supported channel mask for an Audio class terminal descriptor. See the Audio class specification for more details.

◆ AUDIO_CHANNEL_TOP

#define AUDIO_CHANNEL_TOP   (1 << 11)

Supported channel mask for an Audio class terminal descriptor. See the Audio class specification for more details.

◆ AUDIO_EP_ACCEPTS_SMALL_PACKETS

#define AUDIO_EP_ACCEPTS_SMALL_PACKETS   (0 << 7)

Mask for the attributes parameter of an Audio class-specific Endpoint descriptor, indicating that the endpoint will accept partially filled endpoint packets of audio samples.

◆ AUDIO_EP_FULL_PACKETS_ONLY

#define AUDIO_EP_FULL_PACKETS_ONLY   (1 << 7)

Mask for the attributes parameter of an Audio class-specific Endpoint descriptor, indicating that the endpoint accepts only filled endpoint packets of audio samples.

◆ AUDIO_EP_PITCH_CONTROL

#define AUDIO_EP_PITCH_CONTROL   (1 << 1)

Mask for the attributes parameter of an Audio class-specific Endpoint descriptor, indicating that the endpoint allows for pitch adjustments to be made via control requests directed at the endpoint.

◆ AUDIO_EP_SAMPLE_FREQ_CONTROL

#define AUDIO_EP_SAMPLE_FREQ_CONTROL   (1 << 0)

Mask for the attributes parameter of an Audio class-specific Endpoint descriptor, indicating that the endpoint allows for sampling frequency adjustments to be made via control requests directed at the endpoint.

◆ AUDIO_FEATURE_AUTOMATIC_GAIN

#define AUDIO_FEATURE_AUTOMATIC_GAIN   (1 << 6)

Supported feature mask for an Audio class feature unit descriptor. See the Audio class specification for more details.

◆ AUDIO_FEATURE_BASS

#define AUDIO_FEATURE_BASS   (1 << 2)

Supported feature mask for an Audio class feature unit descriptor. See the Audio class specification for more details.

◆ AUDIO_FEATURE_BASS_BOOST

#define AUDIO_FEATURE_BASS_BOOST   (1 << 8)

Supported feature mask for an Audio class feature unit descriptor. See the Audio class specification for more details.

◆ AUDIO_FEATURE_BASS_LOUDNESS

#define AUDIO_FEATURE_BASS_LOUDNESS   (1 << 9)

Supported feature mask for an Audio class feature unit descriptor. See the Audio class specification for more details.

◆ AUDIO_FEATURE_DELAY

#define AUDIO_FEATURE_DELAY   (1 << 7)

Supported feature mask for an Audio class feature unit descriptor. See the Audio class specification for more details.

◆ AUDIO_FEATURE_GRAPHIC_EQUALIZER

#define AUDIO_FEATURE_GRAPHIC_EQUALIZER   (1 << 5)

Supported feature mask for an Audio class feature unit descriptor. See the Audio class specification for more details.

◆ AUDIO_FEATURE_MID

#define AUDIO_FEATURE_MID   (1 << 3)

Supported feature mask for an Audio class feature unit descriptor. See the Audio class specification for more details.

◆ AUDIO_FEATURE_MUTE

#define AUDIO_FEATURE_MUTE   (1 << 0)

Supported feature mask for an Audio class feature unit descriptor. See the Audio class specification for more details.

◆ AUDIO_FEATURE_TREBLE

#define AUDIO_FEATURE_TREBLE   (1 << 4)

Supported feature mask for an Audio class feature unit descriptor. See the Audio class specification for more details.

◆ AUDIO_FEATURE_VOLUME

#define AUDIO_FEATURE_VOLUME   (1 << 1)

Supported feature mask for an Audio class feature unit descriptor. See the Audio class specification for more details.

◆ AUDIO_SAMPLE_FREQ

#define AUDIO_SAMPLE_FREQ (   freq)    {.Byte1 = ((uint32_t)freq & 0xFF), .Byte2 = (((uint32_t)freq >> 8) & 0xFF), .Byte3 = (((uint32_t)freq >> 16) & 0xFF)}

Convenience macro to fill a 24-bit USB_Audio_SampleFreq_t structure with the given sample rate as a 24-bit number.

Parameters
[in]freqRequired audio sampling frequency in HZ

◆ AUDIO_TERMINAL_IN_DESKTOP_MIC

#define AUDIO_TERMINAL_IN_DESKTOP_MIC   0x0202

Terminal type constant for an Audio class terminal descriptor. See the Audio class specification for more details.

◆ AUDIO_TERMINAL_IN_MIC

#define AUDIO_TERMINAL_IN_MIC   0x0201

Terminal type constant for an Audio class terminal descriptor. See the Audio class specification for more details.

◆ AUDIO_TERMINAL_IN_MIC_ARRAY

#define AUDIO_TERMINAL_IN_MIC_ARRAY   0x0205

Terminal type constant for an Audio class terminal descriptor. See the Audio class specification for more details.

◆ AUDIO_TERMINAL_IN_OMNIDIR_MIC

#define AUDIO_TERMINAL_IN_OMNIDIR_MIC   0x0204

Terminal type constant for an Audio class terminal descriptor. See the Audio class specification for more details.

◆ AUDIO_TERMINAL_IN_OUT_UNDEFINED

#define AUDIO_TERMINAL_IN_OUT_UNDEFINED   0x0300

Terminal type constant for an Audio class terminal descriptor. See the Audio class specification for more details.

◆ AUDIO_TERMINAL_IN_PERSONAL_MIC

#define AUDIO_TERMINAL_IN_PERSONAL_MIC   0x0203

Terminal type constant for an Audio class terminal descriptor. See the Audio class specification for more details.

◆ AUDIO_TERMINAL_IN_PROCESSING_MIC

#define AUDIO_TERMINAL_IN_PROCESSING_MIC   0x0206

Terminal type constant for an Audio class terminal descriptor. See the Audio class specification for more details.

◆ AUDIO_TERMINAL_IN_UNDEFINED

#define AUDIO_TERMINAL_IN_UNDEFINED   0x0200

Terminal type constant for an Audio class terminal descriptor. See the Audio class specification for more details.

◆ AUDIO_TERMINAL_OUT_COMMUNICATION

#define AUDIO_TERMINAL_OUT_COMMUNICATION   0x0306

Terminal type constant for an Audio class terminal descriptor. See the Audio class specification for more details.

◆ AUDIO_TERMINAL_OUT_DESKTOP

#define AUDIO_TERMINAL_OUT_DESKTOP   0x0304

Terminal type constant for an Audio class terminal descriptor. See the Audio class specification for more details.

◆ AUDIO_TERMINAL_OUT_HEAD_MOUNTED

#define AUDIO_TERMINAL_OUT_HEAD_MOUNTED   0x0303

Terminal type constant for an Audio class terminal descriptor. See the Audio class specification for more details.

◆ AUDIO_TERMINAL_OUT_HEADPHONES

#define AUDIO_TERMINAL_OUT_HEADPHONES   0x0302

Terminal type constant for an Audio class terminal descriptor. See the Audio class specification for more details.

◆ AUDIO_TERMINAL_OUT_LOWFREQ

#define AUDIO_TERMINAL_OUT_LOWFREQ   0x0307

Terminal type constant for an Audio class terminal descriptor. See the Audio class specification for more details.

◆ AUDIO_TERMINAL_OUT_ROOM

#define AUDIO_TERMINAL_OUT_ROOM   0x0305

Terminal type constant for an Audio class terminal descriptor. See the Audio class specification for more details.

◆ AUDIO_TERMINAL_OUT_SPEAKER

#define AUDIO_TERMINAL_OUT_SPEAKER   0x0301

Terminal type constant for an Audio class terminal descriptor. See the Audio class specification for more details.

◆ AUDIO_TERMINAL_STREAMING

#define AUDIO_TERMINAL_STREAMING   0x0101

Terminal type constant for an Audio class terminal descriptor. See the Audio class specification for more details.

◆ AUDIO_TERMINAL_UNDEFINED

#define AUDIO_TERMINAL_UNDEFINED   0x0100

Terminal type constant for an Audio class terminal descriptor. See the Audio class specification for more details.

◆ AUDIO_TERMINAL_VENDOR

#define AUDIO_TERMINAL_VENDOR   0x01FF

Terminal type constant for an Audio class terminal descriptor. See the Audio class specification for more details.

Enumeration Type Documentation

◆ Audio_ClassRequests_t

Enum for the Audio class specific control requests that can be issued by the USB bus host.

Enumerator
AUDIO_REQ_SetCurrent 

Audio class-specific request to set the current value of a parameter within the device.

AUDIO_REQ_SetMinimum 

Audio class-specific request to set the minimum value of a parameter within the device.

AUDIO_REQ_SetMaximum 

Audio class-specific request to set the maximum value of a parameter within the device.

AUDIO_REQ_SetResolution 

Audio class-specific request to set the resolution value of a parameter within the device.

AUDIO_REQ_SetMemory 

Audio class-specific request to set the memory value of a parameter within the device.

AUDIO_REQ_GetCurrent 

Audio class-specific request to get the current value of a parameter within the device.

AUDIO_REQ_GetMinimum 

Audio class-specific request to get the minimum value of a parameter within the device.

AUDIO_REQ_GetMaximum 

Audio class-specific request to get the maximum value of a parameter within the device.

AUDIO_REQ_GetResolution 

Audio class-specific request to get the resolution value of a parameter within the device.

AUDIO_REQ_GetMemory 

Audio class-specific request to get the memory value of a parameter within the device.

AUDIO_REQ_GetStatus 

Audio class-specific request to get the device status.

◆ Audio_CSEndpoint_SubTypes_t

Audio class specific endpoint description subtypes, for the Audio Streaming interface.

Enumerator
AUDIO_DSUBTYPE_CSEndpoint_General 

Audio class specific endpoint general descriptor.

◆ Audio_CSInterface_AC_SubTypes_t

Audio class specific interface description subtypes, for the Audio Control interface.

Enumerator
AUDIO_DSUBTYPE_CSInterface_Header 

Audio class specific control interface header.

AUDIO_DSUBTYPE_CSInterface_InputTerminal 

Audio class specific control interface Input Terminal.

AUDIO_DSUBTYPE_CSInterface_OutputTerminal 

Audio class specific control interface Output Terminal.

AUDIO_DSUBTYPE_CSInterface_Mixer 

Audio class specific control interface Mixer Unit.

AUDIO_DSUBTYPE_CSInterface_Selector 

Audio class specific control interface Selector Unit.

AUDIO_DSUBTYPE_CSInterface_Feature 

Audio class specific control interface Feature Unit.

AUDIO_DSUBTYPE_CSInterface_Processing 

Audio class specific control interface Processing Unit.

AUDIO_DSUBTYPE_CSInterface_Extension 

Audio class specific control interface Extension Unit.

◆ Audio_CSInterface_AS_SubTypes_t

Audio class specific interface description subtypes, for the Audio Streaming interface.

Enumerator
AUDIO_DSUBTYPE_CSInterface_General 

Audio class specific streaming interface general descriptor.

AUDIO_DSUBTYPE_CSInterface_FormatType 

Audio class specific streaming interface format type descriptor.

AUDIO_DSUBTYPE_CSInterface_FormatSpecific 

Audio class specific streaming interface format information descriptor.

◆ Audio_Descriptor_ClassSubclassProtocol_t

Enum for possible Class, Subclass and Protocol values of device and interface descriptors relating to the Audio device class.

Enumerator
AUDIO_CSCP_AudioClass 

Descriptor Class value indicating that the device or interface belongs to the USB Audio 1.0 class.

AUDIO_CSCP_ControlSubclass 

Descriptor Subclass value indicating that the device or interface belongs to the Audio Control subclass.

AUDIO_CSCP_ControlProtocol 

Descriptor Protocol value indicating that the device or interface belongs to the Audio Control protocol.

AUDIO_CSCP_AudioStreamingSubclass 

Descriptor Subclass value indicating that the device or interface belongs to the MIDI Streaming subclass.

AUDIO_CSCP_MIDIStreamingSubclass 

Descriptor Subclass value indicating that the device or interface belongs to the Audio streaming subclass.

AUDIO_CSCP_StreamingProtocol 

Descriptor Protocol value indicating that the device or interface belongs to the Streaming Audio protocol.

◆ Audio_EndpointControls_t

Enum for Audio class specific Endpoint control modifiers which can be set and retrieved by a USB host, if the corresponding endpoint control is indicated to be supported in the Endpoint's Audio-class specific endpoint descriptor.

Enumerator
AUDIO_EPCONTROL_SamplingFreq 

Sampling frequency adjustment of the endpoint.

AUDIO_EPCONTROL_Pitch 

Pitch adjustment of the endpoint.