Data Structures | Functions

Audio Class Device Mode Driver
[Audio Class Driver - LUFA/Drivers/Class/Audio.h]

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:

Description

Device Mode USB Class driver framework interface, for the Audio 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.

Parameters:
[in,out] AudioInterfaceInfo Pointer 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] AudioInterfaceInfo Pointer 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] AudioInterfaceInfo Pointer 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_UnhandledControlRequest() event.

Parameters:
[in,out] AudioInterfaceInfo Pointer 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] AudioInterfaceInfo Pointer 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] AudioInterfaceInfo Pointer 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] AudioInterfaceInfo Pointer 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] AudioInterfaceInfo Pointer 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] AudioInterfaceInfo Pointer to a structure containing an Audio Class configuration and state.
[in] Sample Signed 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] AudioInterfaceInfo Pointer to a structure containing an Audio Class configuration and state.
[in] Sample Signed 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] AudioInterfaceInfo Pointer to a structure containing an Audio Class configuration and state.
[in] Sample Signed 8-bit audio sample.