aboutsummaryrefslogtreecommitdiffstats
path: root/LUFA/Drivers/USB/Class/Common
diff options
context:
space:
mode:
authorDean Camera <dean@fourwalledcubicle.com>2011-06-03 07:56:12 +0000
committerDean Camera <dean@fourwalledcubicle.com>2011-06-03 07:56:12 +0000
commit2731c3a8aef715c2ea27d541e946200bd4fc189f (patch)
treed56ff72432af73136b6c5a8c5fd9fa14da9b9852 /LUFA/Drivers/USB/Class/Common
parentc2135f2776e01842a775502c24b59d9169ffa851 (diff)
downloadlufa-2731c3a8aef715c2ea27d541e946200bd4fc189f.tar.gz
lufa-2731c3a8aef715c2ea27d541e946200bd4fc189f.tar.bz2
lufa-2731c3a8aef715c2ea27d541e946200bd4fc189f.zip
Added new callback to the Audio Class driver to allow for endpoint control manipulations such as data sample rates.
Modified the Class Driver AudioInput and AudioOutput demos to support multiple sample rates. Fixed KeyboardHost and KeyboardHostWithParser demos displaying incorrect values when numerical keys were pressed. Fix broken LowLevel audio demo descriptors. Minor documentation fixes.
Diffstat (limited to 'LUFA/Drivers/USB/Class/Common')
-rw-r--r--LUFA/Drivers/USB/Class/Common/Audio.h45
1 files changed, 32 insertions, 13 deletions
diff --git a/LUFA/Drivers/USB/Class/Common/Audio.h b/LUFA/Drivers/USB/Class/Common/Audio.h
index cc6e8e52d..fd9a3a92b 100644
--- a/LUFA/Drivers/USB/Class/Common/Audio.h
+++ b/LUFA/Drivers/USB/Class/Common/Audio.h
@@ -197,7 +197,7 @@
*
* \param[in] freq Required audio sampling frequency in HZ
*/
- #define AUDIO_SAMPLE_FREQ(freq) {.Byte1 = ((uint32_t)freq & 0x0000FF), .Byte2 = (((uint32_t)freq >> 8) & 0xFF), .Byte3 = (((uint32_t)freq >> 16) & 0xFF)}
+ #define AUDIO_SAMPLE_FREQ(freq) {.Byte1 = ((uint32_t)freq & 0xFF), .Byte2 = (((uint32_t)freq >> 8) & 0xFF), .Byte3 = (((uint32_t)freq >> 16) & 0xFF)}
/** Mask for the attributes parameter of an Audio class-specific Endpoint descriptor, indicating that the endpoint
* accepts only filled endpoint packets of audio samples.
@@ -208,6 +208,16 @@
* will accept partially filled endpoint packets of audio samples.
*/
#define AUDIO_EP_ACCEPTS_SMALL_PACKETS (0 << 7)
+
+ /** 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.
+ */
+ #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 pitch adjustments to be made via control requests directed at the endpoint.
+ */
+ #define AUDIO_EP_PITCH_CONTROL (1 << 1)
/* Enums: */
/** Enum for possible Class, Subclass and Protocol values of device and interface descriptors relating to the Audio
@@ -277,6 +287,15 @@
AUDIO_REQ_GetMemory = 0x85, /**< Audio class-specific request to get the memory value of a parameter within the device. */
AUDIO_REQ_GetStatus = 0xFF, /**< Audio class-specific request to get the device status. */
};
+
+ /** 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.
+ */
+ enum Audio_EndpointControls_t
+ {
+ AUDIO_EPCONTROL_SamplingFreq = 0x01, /**< Sampling frequency adjustment of the endpoint. */
+ AUDIO_EPCONTROL_Pitch = 0x02, /**< Pitch adjustment of the endpoint. */
+ };
/* Type Defines: */
/** \brief Audio class-specific Input Terminal Descriptor (LUFA naming conventions).
@@ -538,18 +557,6 @@
uint16_t wFormatTag; /**< Format of the audio stream, see Audio Device Formats specification. */
} ATTR_PACKED USB_Audio_StdDescriptor_Interface_AS_t;
- /** \brief 24-Bit Audio Frequency Structure.
- *
- * Type define for a 24bit audio sample frequency structure. GCC does not contain a built in 24bit datatype,
- * this this structure is used to build up the value instead. Fill this structure with the \ref AUDIO_SAMPLE_FREQ() macro.
- */
- typedef struct
- {
- uint8_t Byte1; /**< Lowest 8 bits of the 24-bit value. */
- uint8_t Byte2; /**< Middle 8 bits of the 24-bit value. */
- uint8_t Byte3; /**< Upper 8 bits of the 24-bit value. */
- } ATTR_PACKED USB_Audio_SampleFreq_t;
-
/** \brief Audio class-specific Format Descriptor (LUFA naming conventions).
*
* Type define for an Audio class-specific audio format descriptor. This is used to give the host full details
@@ -581,6 +588,18 @@
*/
} ATTR_PACKED USB_Audio_Descriptor_Format_t;
+ /** \brief 24-Bit Audio Frequency Structure.
+ *
+ * Type define for a 24bit audio sample frequency structure. As GCC does not contain a built in 24-bit datatype,
+ * this this structure is used to build up the value instead. Fill this structure with the \ref AUDIO_SAMPLE_FREQ() macro.
+ */
+ typedef struct
+ {
+ uint8_t Byte1; /**< Lowest 8 bits of the 24-bit value. */
+ uint8_t Byte2; /**< Middle 8 bits of the 24-bit value. */
+ uint8_t Byte3; /**< Upper 8 bits of the 24-bit value. */
+ } ATTR_PACKED USB_Audio_SampleFreq_t;
+
/** \brief Audio class-specific Format Descriptor (USB-IF naming conventions).
*
* Type define for an Audio class-specific audio format descriptor. This is used to give the host full details