LUFA Library 110528
Audio Class Device Mode Driver

Data Structures

struct  USB_ClassInfo_Audio_Device_t
 Audio Class Device Mode Configuration and State Structure. More...

Functions

bool Audio_Device_ConfigureEndpoints (USB_ClassInfo_Audio_Device_t *const AudioInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1)
void Audio_Device_ProcessControlRequest (USB_ClassInfo_Audio_Device_t *const AudioInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1)
static void Audio_Device_USBTask (USB_ClassInfo_Audio_Device_t *const AudioInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1) ATTR_ALWAYS_INLINE
static bool Audio_Device_IsSampleReceived (USB_ClassInfo_Audio_Device_t *const AudioInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1) ATTR_ALWAYS_INLINE
static bool Audio_Device_IsReadyForNextSample (USB_ClassInfo_Audio_Device_t *const AudioInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1) ATTR_ALWAYS_INLINE
static int8_t Audio_Device_ReadSample8 (USB_ClassInfo_Audio_Device_t *const AudioInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1) ATTR_ALWAYS_INLINE
static int16_t Audio_Device_ReadSample16 (USB_ClassInfo_Audio_Device_t *const AudioInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1) ATTR_ALWAYS_INLINE
static int32_t Audio_Device_ReadSample24 (USB_ClassInfo_Audio_Device_t *const AudioInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1) ATTR_ALWAYS_INLINE
static void Audio_Device_WriteSample8 (USB_ClassInfo_Audio_Device_t *const AudioInterfaceInfo, const int8_t Sample) ATTR_NON_NULL_PTR_ARG(1) ATTR_ALWAYS_INLINE
static void Audio_Device_WriteSample16 (USB_ClassInfo_Audio_Device_t *const AudioInterfaceInfo, const int16_t Sample) ATTR_NON_NULL_PTR_ARG(1) ATTR_ALWAYS_INLINE
static void Audio_Device_WriteSample24 (USB_ClassInfo_Audio_Device_t *const AudioInterfaceInfo, const int32_t Sample) ATTR_NON_NULL_PTR_ARG(1) ATTR_ALWAYS_INLINE

Detailed Description

Module Source Dependencies

The following files must be built with any user project that uses this module:

Module Description

Device Mode USB Class driver framework interface, for the Audio 1.0 USB Class driver.


Function Documentation

bool Audio_Device_ConfigureEndpoints ( USB_ClassInfo_Audio_Device_t *const  AudioInterfaceInfo)

Configures the endpoints of a given Audio interface, ready for use. This should be linked to the library EVENT_USB_Device_ConfigurationChanged() event so that the endpoints are configured when the configuration containing the given Audio interface is selected.

Note:
The endpoint index numbers as given in the interface's configuration structure must not overlap with any other interface, or endpoint bank corruption will occur. Gaps in the allocated endpoint numbers or non-sequential indexes within a single interface is allowed, but no two interfaces of any type have have interleaved endpoint indexes.
Parameters:
[in,out]AudioInterfaceInfoPointer to a structure containing an Audio Class configuration and state.
Returns:
Boolean true if the endpoints were successfully configured, false otherwise.
static bool Audio_Device_IsReadyForNextSample ( USB_ClassInfo_Audio_Device_t *const  AudioInterfaceInfo) [inline, static]

Determines if the given audio interface is ready to accept the next sample to be written to it, and selects the streaming IN endpoint ready for writing.

Precondition:
This function must only be called when the Device state machine is in the DEVICE_STATE_Configured state or the call will fail.
Parameters:
[in,out]AudioInterfaceInfoPointer to a structure containing an Audio Class configuration and state.
Returns:
Boolean true if the given Audio interface is ready to accept the next sample, false otherwise.
static bool Audio_Device_IsSampleReceived ( USB_ClassInfo_Audio_Device_t *const  AudioInterfaceInfo) [inline, static]

Determines if the given audio interface is ready for a sample to be read from it, and selects the streaming OUT endpoint ready for reading.

Precondition:
This function must only be called when the Device state machine is in the DEVICE_STATE_Configured state or the call will fail.
Parameters:
[in,out]AudioInterfaceInfoPointer to a structure containing an Audio Class configuration and state.
Returns:
Boolean true if the given Audio interface has a sample to be read, false otherwise.
void Audio_Device_ProcessControlRequest ( USB_ClassInfo_Audio_Device_t *const  AudioInterfaceInfo)

Processes incoming control requests from the host, that are directed to the given Audio class interface. This should be linked to the library EVENT_USB_Device_ControlRequest() event.

Parameters:
[in,out]AudioInterfaceInfoPointer to a structure containing an Audio Class configuration and state.
static int16_t Audio_Device_ReadSample16 ( USB_ClassInfo_Audio_Device_t *const  AudioInterfaceInfo) [inline, static]

Reads the next 16-bit audio sample from the current audio interface.

Precondition:
This should be preceded immediately by a call to the Audio_Device_IsSampleReceived() function to ensure that the correct endpoint is selected and ready for data.
Parameters:
[in,out]AudioInterfaceInfoPointer to a structure containing an Audio Class configuration and state.
Returns:
Signed 16-bit audio sample from the audio interface.
static int32_t Audio_Device_ReadSample24 ( USB_ClassInfo_Audio_Device_t *const  AudioInterfaceInfo) [inline, static]

Reads the next 24-bit audio sample from the current audio interface.

Precondition:
This should be preceded immediately by a call to the Audio_Device_IsSampleReceived() function to ensure that the correct endpoint is selected and ready for data.
Parameters:
[in,out]AudioInterfaceInfoPointer to a structure containing an Audio Class configuration and state.
Returns:
Signed 24-bit audio sample from the audio interface.
static int8_t Audio_Device_ReadSample8 ( USB_ClassInfo_Audio_Device_t *const  AudioInterfaceInfo) [inline, static]

Reads the next 8-bit audio sample from the current audio interface.

Precondition:
This should be preceded immediately by a call to the Audio_Device_IsSampleReceived() function to ensure ensure the correct endpoint is selected and ready for data.
Parameters:
[in,out]AudioInterfaceInfoPointer to a structure containing an Audio Class configuration and state.
Returns:
Signed 8-bit audio sample from the audio interface.
static void Audio_Device_USBTask ( USB_ClassInfo_Audio_Device_t *const  AudioInterfaceInfo) [inline, static]

General management task for a given Audio class interface, required for the correct operation of the interface. This should be called frequently in the main program loop, before the master USB management task USB_USBTask().

Parameters:
[in,out]AudioInterfaceInfoPointer to a structure containing an Audio Class configuration and state.
static void Audio_Device_WriteSample16 ( USB_ClassInfo_Audio_Device_t *const  AudioInterfaceInfo,
const int16_t  Sample 
) [inline, static]

Writes the next 16-bit audio sample to the current audio interface.

Precondition:
This should be preceded immediately by a call to the Audio_Device_IsReadyForNextSample() function to ensure that the correct endpoint is selected and ready for data.
Parameters:
[in,out]AudioInterfaceInfoPointer to a structure containing an Audio Class configuration and state.
[in]SampleSigned 16-bit audio sample.
static void Audio_Device_WriteSample24 ( USB_ClassInfo_Audio_Device_t *const  AudioInterfaceInfo,
const int32_t  Sample 
) [inline, static]

Writes the next 24-bit audio sample to the current audio interface.

Precondition:
This should be preceded immediately by a call to the Audio_Device_IsReadyForNextSample() function to ensure that the correct endpoint is selected and ready for data.
Parameters:
[in,out]AudioInterfaceInfoPointer to a structure containing an Audio Class configuration and state.
[in]SampleSigned 24-bit audio sample.
static void Audio_Device_WriteSample8 ( USB_ClassInfo_Audio_Device_t *const  AudioInterfaceInfo,
const int8_t  Sample 
) [inline, static]

Writes the next 8-bit audio sample to the current audio interface.

Precondition:
This should be preceded immediately by a call to the Audio_Device_IsReadyForNextSample() function to ensure that the correct endpoint is selected and ready for data.
Parameters:
[in,out]AudioInterfaceInfoPointer to a structure containing an Audio Class configuration and state.
[in]SampleSigned 8-bit audio sample.