-\r
-               #include <string.h>\r
-\r
-       /* Macros: */\r
-               /** Descriptor header constant to indicate a Audio class interface descriptor. */\r
-               #define DTYPE_AudioInterface         0x24\r
-\r
-               /** Descriptor header constant to indicate a Audio class endpoint descriptor. */\r
-               #define DTYPE_AudioEndpoint          0x25\r
-\r
-               /** Audio class descriptor subtype value for a Audio class specific header descriptor. */\r
-               #define DSUBTYPE_Header              0x01\r
-\r
-               /** Audio class descriptor subtype value for an Output Terminal Audio class specific descriptor. */\r
-               #define DSUBTYPE_InputTerminal       0x02\r
-\r
-               /** Audio class descriptor subtype value for an Input Terminal Audio class specific descriptor. */\r
-               #define DSUBTYPE_OutputTerminal      0x03\r
-\r
-               /** Audio class descriptor subtype value for a Feature Unit Audio class specific descriptor. */\r
-               #define DSUBTYPE_FeatureUnit         0x06\r
-\r
-               /** Audio class descriptor subtype value for a general Audio class specific descriptor. */\r
-               #define DSUBTYPE_General             0x01\r
-\r
-               /** Audio class descriptor subtype value for an Audio class specific descriptor indicating the format of an audio stream. */\r
-               #define DSUBTYPE_Format              0x02\r
-               \r
-               //@{\r
-               /** Supported channel mask for an Audio class terminal descriptor. See the Audio class specification for more details. */\r
-\r
-               #define CHANNEL_LEFT_FRONT           (1 << 0)\r
-               #define CHANNEL_RIGHT_FRONT          (1 << 1)\r
-               #define CHANNEL_CENTER_FRONT         (1 << 2)\r
-               #define CHANNEL_LOW_FREQ_ENHANCE     (1 << 3)\r
-               #define CHANNEL_LEFT_SURROUND        (1 << 4)\r
-               #define CHANNEL_RIGHT_SURROUND       (1 << 5)\r
-               #define CHANNEL_LEFT_OF_CENTER       (1 << 6)\r
-               #define CHANNEL_RIGHT_OF_CENTER      (1 << 7)\r
-               #define CHANNEL_SURROUND             (1 << 8)\r
-               #define CHANNEL_SIDE_LEFT            (1 << 9)\r
-               #define CHANNEL_SIDE_RIGHT           (1 << 10)\r
-               #define CHANNEL_TOP                  (1 << 11)\r
-               //@}\r
-\r
-               //@{\r
-               /** Supported feature mask for an Audio class feature unit descriptor. See the Audio class specification for more details. */\r
-\r
-               #define FEATURE_MUTE                 (1 << 0)\r
-               #define FEATURE_VOLUME               (1 << 1)\r
-               #define FEATURE_BASS                 (1 << 2)\r
-               #define FEATURE_MID                  (1 << 3)\r
-               #define FEATURE_TREBLE               (1 << 4)\r
-               #define FEATURE_GRAPHIC_EQUALIZER    (1 << 5)\r
-               #define FEATURE_AUTOMATIC_GAIN       (1 << 6)\r
-               #define FEATURE_DELAY                (1 << 7)\r
-               #define FEATURE_BASS_BOOST           (1 << 8)\r
-               #define FEATURE_BASS_LOUDNESS        (1 << 9)\r
-               //@}\r
-\r
-               //@{\r
-               /** Terminal type constant for an Audio class terminal descriptor. See the Audio class specification for more details. */\r
-               \r
-               #define TERMINAL_UNDEFINED           0x0100\r
-               #define TERMINAL_STREAMING           0x0101\r
-               #define TERMINAL_VENDOR              0x01FF\r
-               #define TERMINAL_IN_UNDEFINED        0x0200\r
-               #define TERMINAL_IN_MIC              0x0201\r
-               #define TERMINAL_IN_DESKTOP_MIC      0x0202\r
-               #define TERMINAL_IN_PERSONAL_MIC     0x0203\r
-               #define TERMINAL_IN_OMNIDIR_MIC      0x0204\r
-               #define TERMINAL_IN_MIC_ARRAY        0x0205\r
-               #define TERMINAL_IN_PROCESSING_MIC   0x0206\r
-               #define TERMINAL_IN_OUT_UNDEFINED    0x0300\r
-               #define TERMINAL_OUT_SPEAKER         0x0301\r
-               #define TERMINAL_OUT_HEADPHONES      0x0302\r
-               #define TERMINAL_OUT_HEAD_MOUNTED    0x0303\r
-               #define TERMINAL_OUT_DESKTOP         0x0304\r
-               #define TERMINAL_OUT_ROOM            0x0305\r
-               #define TERMINAL_OUT_COMMUNICATION   0x0306\r
-               #define TERMINAL_OUT_LOWFREQ         0x0307\r
-               //@}\r
-\r
-               /** Convenience macro, to fill a 24-bit AudioSampleFreq_t structure with the given sample rate as a 24-bit number.\r
-                *\r
-                *  \param freq  Required audio sampling frequency in HZ\r
-                */\r
-               #define SAMPLE_FREQ(freq)  {LowWord: ((uint32_t)freq & 0x00FFFF), HighByte: (((uint32_t)freq >> 16) & 0x0000FF)}\r
-               \r
-               /** Mask for the attributes parameter of an Audio class specific Endpoint descriptor, indicating that the endpoint\r
-                *  accepts only filled endpoint packets of audio samples.\r
-                */\r
-               #define EP_ACCEPTS_ONLY_FULL_PACKETS (1 << 7)\r
-\r
-               /** Mask for the attributes parameter of an Audio class specific Endpoint descriptor, indicating that the endpoint\r
-                *  will accept partially filled endpoint packets of audio samples.\r
-                */\r
-               #define EP_ACCEPTS_SMALL_PACKETS     (0 << 7)\r
-               \r
-       /* Type Defines: */\r
-               /** Type define for an Audio class specific interface descriptor. This follows a regular interface descriptor to\r
-                *  supply extra information about the audio device's layout to the host. See the USB Audio specification for more\r
-                *  details.\r
-                */\r
-               typedef struct\r
-               {\r
-                       USB_Descriptor_Header_t   Header; /**< Regular descriptor header containing the descriptor's type and length */\r
-                       uint8_t                   Subtype; /**< Sub type value used to distinguish between audio class specific descriptors */\r
-\r
-                       uint16_t                  ACSpecification; /**< Binary coded decimal value, indicating the supported Audio Class specification version */\r
-                       uint16_t                  TotalLength; /**< Total length of the Audio class specific descriptors, including this descriptor */\r
-                       \r
-                       uint8_t                   InCollection; /**< Total number of audio class interfaces within this device */\r
-                       uint8_t                   InterfaceNumbers[1]; /**< Interface numbers of each audio interface */\r
-               } USB_AudioInterface_AC_t;\r