AVRISP programmer project now has a more robust timeout system, allowing for a doubli...
[pub/USBasp.git] / Demos / Device / LowLevel / AudioInput / Descriptors.h
index 9180ce9..bede69f 100644 (file)
@@ -1,21 +1,21 @@
 /*\r
              LUFA Library\r
 /*\r
              LUFA Library\r
-     Copyright (C) Dean Camera, 2009.\r
+     Copyright (C) Dean Camera, 2010.\r
               \r
   dean [at] fourwalledcubicle [dot] com\r
       www.fourwalledcubicle.com\r
 */\r
 \r
 /*\r
               \r
   dean [at] fourwalledcubicle [dot] com\r
       www.fourwalledcubicle.com\r
 */\r
 \r
 /*\r
-  Copyright 2009  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
+  Copyright 2010  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
 \r
 \r
-  Permission to use, copy, modify, and distribute this software\r
-  and its documentation for any purpose and without fee is hereby\r
-  granted, provided that the above copyright notice appear in all\r
-  copies and that both that the copyright notice and this\r
-  permission notice and warranty disclaimer appear in supporting\r
-  documentation, and that the name of the author not be used in\r
-  advertising or publicity pertaining to distribution of the\r
+  Permission to use, copy, modify, distribute, and sell this \r
+  software and its documentation for any purpose is hereby granted\r
+  without fee, provided that the above copyright notice appear in \r
+  all copies and that both that the copyright notice and this\r
+  permission notice and warranty disclaimer appear in supporting \r
+  documentation, and that the name of the author not be used in \r
+  advertising or publicity pertaining to distribution of the \r
   software without specific, written prior permission.\r
 \r
   The author disclaim all warranties with regard to this\r
   software without specific, written prior permission.\r
 \r
   The author disclaim all warranties with regard to this\r
 \r
                /** Convenience macro, to fill a 24-bit AudioSampleFreq_t structure with the given sample rate as a 24-bit number.\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
+                *  \param[in] freq  Required audio sampling frequency in HZ\r
                 */\r
                 */\r
-               #define SAMPLE_FREQ(freq)  {LowWord: ((uint32_t)freq & 0x00FFFF), HighByte: (((uint32_t)freq >> 16) & 0x0000FF)}\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
                /** 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_SMALL_PACKETS     (0 << 7)\r
 \r
                 */\r
                #define EP_ACCEPTS_SMALL_PACKETS     (0 << 7)\r
 \r
-               #if defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR) || defined(__DOXYGEN__)\r
-                       /** Endpoint number of the Audio isochronous streaming data endpoint. */\r
-                       #define AUDIO_STREAM_EPNUM       1\r
-               #else\r
-                       #define AUDIO_STREAM_EPNUM       3              \r
-               #endif\r
+               /** Endpoint number of the Audio isochronous streaming data endpoint. */\r
+               #define AUDIO_STREAM_EPNUM           1\r
                \r
                /** Endpoint size in bytes of the Audio isochronous streaming data endpoint. The Windows audio stack requires\r
                 *  at least 192 bytes for correct output, thus the smaller 128 byte maximum endpoint size on some of the smaller\r
                \r
                /** Endpoint size in bytes of the Audio isochronous streaming data endpoint. The Windows audio stack requires\r
                 *  at least 192 bytes for correct output, thus the smaller 128 byte maximum endpoint size on some of the smaller\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
                        \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
+               } USB_Audio_Interface_AC_t;\r
                \r
                /** Type define for an Audio class specific Feature Unit descriptor. This indicates to the host what features\r
                 *  are present in the device's audio stream for basic control, such as per-channel volume. See the USB Audio\r
                \r
                /** Type define for an Audio class specific Feature Unit descriptor. This indicates to the host what features\r
                 *  are present in the device's audio stream for basic control, such as per-channel volume. See the USB Audio\r
                        uint8_t                   ChannelControls[3]; /**< Feature masks for the control channel, and each separate audio channel */\r
                        \r
                        uint8_t                   FeatureUnitStrIndex; /**< Index of a string descriptor describing this descriptor within the device */\r
                        uint8_t                   ChannelControls[3]; /**< Feature masks for the control channel, and each separate audio channel */\r
                        \r
                        uint8_t                   FeatureUnitStrIndex; /**< Index of a string descriptor describing this descriptor within the device */\r
-               } USB_AudioFeatureUnit_t;\r
+               } USB_Audio_FeatureUnit_t;\r
 \r
                /** Type define for an Audio class specific input terminal descriptor. This indicates to the host that the device\r
                 *  contains an input audio source, either from a physical terminal on the device, or a logical terminal (for example,\r
 \r
                /** Type define for an Audio class specific input terminal descriptor. This indicates to the host that the device\r
                 *  contains an input audio source, either from a physical terminal on the device, or a logical terminal (for example,\r
                        \r
                        uint8_t                   ChannelStrIndex; /**< Index of a string descriptor describing this channel within the device */\r
                        uint8_t                   TerminalStrIndex; /**< Index of a string descriptor describing this descriptor within the device */\r
                        \r
                        uint8_t                   ChannelStrIndex; /**< Index of a string descriptor describing this channel within the device */\r
                        uint8_t                   TerminalStrIndex; /**< Index of a string descriptor describing this descriptor within the device */\r
-               } USB_AudioInputTerminal_t;\r
+               } USB_Audio_InputTerminal_t;\r
 \r
                /** Type define for an Audio class specific output terminal descriptor. This indicates to the host that the device\r
                 *  contains an output audio sink, either to a physical terminal on the device, or a logical terminal (for example,\r
 \r
                /** Type define for an Audio class specific output terminal descriptor. This indicates to the host that the device\r
                 *  contains an output audio sink, either to a physical terminal on the device, or a logical terminal (for example,\r
                        uint8_t                   SourceID; /**< ID value of the unit this terminal's audio is sourced from */\r
                        \r
                        uint8_t                   TerminalStrIndex; /**< Index of a string descriptor describing this descriptor within the device */\r
                        uint8_t                   SourceID; /**< ID value of the unit this terminal's audio is sourced from */\r
                        \r
                        uint8_t                   TerminalStrIndex; /**< Index of a string descriptor describing this descriptor within the device */\r
-               } USB_AudioOutputTerminal_t;\r
+               } USB_Audio_OutputTerminal_t;\r
                \r
                /** Type define for an Audio class specific streaming interface descriptor. This indicates to the host\r
                 *  how audio streams within the device are formatted. See the USB Audio specification for more details.\r
                \r
                /** Type define for an Audio class specific streaming interface descriptor. This indicates to the host\r
                 *  how audio streams within the device are formatted. See the USB Audio specification for more details.\r
                        \r
                        uint8_t                   FrameDelay; /**< Delay in frames resulting from the complete sample processing from input to output */\r
                        uint16_t                  AudioFormat; /**< Format of the audio stream, see Audio Device Formats specification */\r
                        \r
                        uint8_t                   FrameDelay; /**< Delay in frames resulting from the complete sample processing from input to output */\r
                        uint16_t                  AudioFormat; /**< Format of the audio stream, see Audio Device Formats specification */\r
-               } USB_AudioInterface_AS_t;\r
+               } USB_Audio_Interface_AS_t;\r
                \r
                /** Type define for a 24bit audio sample frequency structure. GCC does not contain a built in 24bit datatype,\r
                 *  this this structure is used to build up the value instead. Fill this structure with the SAMPLE_FREQ() macro.\r
                \r
                /** Type define for a 24bit audio sample frequency structure. GCC does not contain a built in 24bit datatype,\r
                 *  this this structure is used to build up the value instead. Fill this structure with the SAMPLE_FREQ() macro.\r
                {\r
                        uint16_t                  LowWord; /**< Low 16 bits of the 24-bit value */\r
                        uint8_t                   HighByte; /**< Upper 8 bits of the 24-bit value */\r
                {\r
                        uint16_t                  LowWord; /**< Low 16 bits of the 24-bit value */\r
                        uint8_t                   HighByte; /**< Upper 8 bits of the 24-bit value */\r
-               } AudioSampleFreq_t;\r
+               } Audio_SampleFreq_t;\r
 \r
                /** Type define for an Audio class specific audio format descriptor. This is used to give the host full details\r
                 *  about the number of channels, the sample resolution, acceptable sample frequencies and encoding method used\r
 \r
                /** Type define for an Audio class specific audio format descriptor. This is used to give the host full details\r
                 *  about the number of channels, the sample resolution, acceptable sample frequencies and encoding method used\r
                        uint8_t                   BitResolution; /**< Bits of resolution of each channel's samples in the stream */\r
 \r
                        uint8_t                   SampleFrequencyType; /**< Total number of sample frequencies supported by the device */                       \r
                        uint8_t                   BitResolution; /**< Bits of resolution of each channel's samples in the stream */\r
 \r
                        uint8_t                   SampleFrequencyType; /**< Total number of sample frequencies supported by the device */                       \r
-                       AudioSampleFreq_t         SampleFrequencies[1]; /**< Sample frequencies supported by the device */\r
-               } USB_AudioFormat_t;\r
+                       Audio_SampleFreq_t        SampleFrequencies[1]; /**< Sample frequencies supported by the device */\r
+               } USB_Audio_Format_t;\r
                \r
                /** Type define for an Audio class specific endpoint descriptor. This contains a regular endpoint \r
                 *  descriptor with a few Audio-class specific extensions. See the USB Audio specification for more details.\r
                \r
                /** Type define for an Audio class specific endpoint descriptor. This contains a regular endpoint \r
                 *  descriptor with a few Audio-class specific extensions. See the USB Audio specification for more details.\r
                        USB_Descriptor_Endpoint_t Endpoint; /**< Standard endpoint descriptor describing the audio endpoint */\r
 \r
                        uint8_t                   Refresh; /**< Always set to zero */\r
                        USB_Descriptor_Endpoint_t Endpoint; /**< Standard endpoint descriptor describing the audio endpoint */\r
 \r
                        uint8_t                   Refresh; /**< Always set to zero */\r
-                       uint8_t                   SyncEndpointNumber; /**< Endpoint address to send synchronisation information to, if needed (zero otherwise) */\r
-               } USB_AudioStreamEndpoint_Std_t;\r
+                       uint8_t                   SyncEndpointNumber; /**< Endpoint address to send synchronization information to, if needed (zero otherwise) */\r
+               } USB_Audio_StreamEndpoint_Std_t;\r
                                        \r
                /** Type define for an Audio class specific extended endpoint descriptor. This contains extra information\r
                 *  on the usage of endpoints used to stream audio in and out of the USB Audio device, and follows an Audio\r
                                        \r
                /** Type define for an Audio class specific extended endpoint descriptor. This contains extra information\r
                 *  on the usage of endpoints used to stream audio in and out of the USB Audio device, and follows an Audio\r
 \r
                        uint8_t                   LockDelayUnits; /**< Units used for the LockDelay field, see Audio class specification */\r
                        uint16_t                  LockDelay; /**< Time required to internally lock endpoint's internal clock recovery circuitry */\r
 \r
                        uint8_t                   LockDelayUnits; /**< Units used for the LockDelay field, see Audio class specification */\r
                        uint16_t                  LockDelay; /**< Time required to internally lock endpoint's internal clock recovery circuitry */\r
-               } USB_AudioStreamEndpoint_Spc_t;\r
+               } USB_Audio_StreamEndpoint_Spc_t;\r
                \r
                /** Type define for the device configuration descriptor structure. This must be defined in the\r
                 *  application code, as the configuration descriptor contains several sub-descriptors which\r
                \r
                /** Type define for the device configuration descriptor structure. This must be defined in the\r
                 *  application code, as the configuration descriptor contains several sub-descriptors which\r
                {\r
                        USB_Descriptor_Configuration_Header_t Config;\r
                        USB_Descriptor_Interface_t            AudioControlInterface;\r
                {\r
                        USB_Descriptor_Configuration_Header_t Config;\r
                        USB_Descriptor_Interface_t            AudioControlInterface;\r
-                       USB_AudioInterface_AC_t               AudioControlInterface_SPC;\r
-                       USB_AudioInputTerminal_t              InputTerminal;\r
-                       USB_AudioOutputTerminal_t             OutputTerminal;\r
+                       USB_Audio_Interface_AC_t              AudioControlInterface_SPC;\r
+                       USB_Audio_InputTerminal_t             InputTerminal;\r
+                       USB_Audio_OutputTerminal_t            OutputTerminal;\r
                        USB_Descriptor_Interface_t            AudioStreamInterface_Alt0;\r
                        USB_Descriptor_Interface_t            AudioStreamInterface_Alt1;\r
                        USB_Descriptor_Interface_t            AudioStreamInterface_Alt0;\r
                        USB_Descriptor_Interface_t            AudioStreamInterface_Alt1;\r
-                       USB_AudioInterface_AS_t               AudioStreamInterface_SPC;\r
-                       USB_AudioFormat_t                     AudioFormat;\r
-                       USB_AudioStreamEndpoint_Std_t         AudioEndpoint;\r
-                       USB_AudioStreamEndpoint_Spc_t         AudioEndpoint_SPC;\r
+                       USB_Audio_Interface_AS_t              AudioStreamInterface_SPC;\r
+                       USB_Audio_Format_t                    AudioFormat;\r
+                       USB_Audio_StreamEndpoint_Std_t        AudioEndpoint;\r
+                       USB_Audio_StreamEndpoint_Spc_t        AudioEndpoint_SPC;\r
                } USB_Descriptor_Configuration_t;\r
                \r
        /* Function Prototypes: */\r
                } USB_Descriptor_Configuration_t;\r
                \r
        /* Function Prototypes: */\r