| LPCOpen Platform v1.03 LPCOpen Platform for NXP LPC Microcontrollers

- Main Page
- Modules
- Data Structures
- Files
- Related Pages

All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Functions
Audio 1.0 Class Device Mode Driver
Audio 1.0 Class Driver

## Detailed Description

# Module Source Dependencies

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

- nxpUSBlib/Drivers/USB/Class/Device/Audio.c (Makefile source module name: NXPUSBLIB_SRC_USBCLASS)

# Module Description

Device Mode USB Class driver framework interface, for the Audio 1.0 USB Class 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)
| 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.
void | Audio_Device_ProcessControlRequest (USB_ClassInfo_Audio_Device_t *const AudioInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1)
| 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.
bool | CALLBACK_Audio_Device_GetSetEndpointProperty (USB_ClassInfo_Audio_Device_t *const AudioInterfaceInfo, const uint8_t EndpointProperty, const uint8_t EndpointAddress, const uint8_t EndpointControl, uint16_t *const DataLength, uint8_t *Data)
| Audio class driver callback for the setting and retrieval of streaming endpoint properties. This callback must be implemented in the user application to handle property manipulations on streaming audio endpoints.
void | EVENT_Audio_Device_StreamStartStop (USB_ClassInfo_Audio_Device_t *const AudioInterfaceInfo)
| Audio class driver event for an Audio Stream start/stop change. This event fires each time the device receives a stream enable or disable control request from the host, to start and stop the audio stream. The current state of the stream can be determined by the State.InterfaceEnabled value inside the Audio interface structure passed as a parameter.
static PRAGMA_ALWAYS_INLINE void | Audio_Device_USBTask (USB_ClassInfo_Audio_Device_t *const AudioInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1) ATTR_ALWAYS_INLINE
| 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().
static PRAGMA_ALWAYS_INLINE bool | Audio_Device_IsSampleReceived (USB_ClassInfo_Audio_Device_t *const AudioInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1) ATTR_ALWAYS_INLINE
| 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.
static PRAGMA_ALWAYS_INLINE bool | Audio_Device_IsReadyForNextSample (USB_ClassInfo_Audio_Device_t *const AudioInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1) ATTR_ALWAYS_INLINE
| 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.
static PRAGMA_ALWAYS_INLINE int8_t | Audio_Device_ReadSample8 (USB_ClassInfo_Audio_Device_t *const AudioInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1) ATTR_ALWAYS_INLINE
| Reads the next 8-bit audio sample from the current audio interface.
static PRAGMA_ALWAYS_INLINE int16_t | Audio_Device_ReadSample16 (USB_ClassInfo_Audio_Device_t *const AudioInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1) ATTR_ALWAYS_INLINE
| Reads the next 16-bit audio sample from the current audio interface.
static PRAGMA_ALWAYS_INLINE int32_t | Audio_Device_ReadSample24 (USB_ClassInfo_Audio_Device_t *const AudioInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1) ATTR_ALWAYS_INLINE
| Reads the next 24-bit audio sample from the current audio interface.
static PRAGMA_ALWAYS_INLINE void | Audio_Device_WriteSample8 (USB_ClassInfo_Audio_Device_t *const AudioInterfaceInfo, const int8_t Sample) ATTR_NON_NULL_PTR_ARG(1)
| Writes the next 8-bit audio sample to the current audio interface.
static PRAGMA_ALWAYS_INLINE void | Audio_Device_WriteSample16 (USB_ClassInfo_Audio_Device_t *const AudioInterfaceInfo, const int16_t Sample) ATTR_NON_NULL_PTR_ARG(1) ATTR_ALWAYS_INLINE
| Writes the next 16-bit audio sample to the current audio interface.
static PRAGMA_ALWAYS_INLINE void | Audio_Device_WriteSample24 (USB_ClassInfo_Audio_Device_t *const AudioInterfaceInfo, const int32_t Sample) ATTR_NON_NULL_PTR_ARG(1) ATTR_ALWAYS_INLINE
| Writes the next 24-bit audio sample to the current audio interface.

## 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

  AudioInterfaceInfo | : Pointer to a structure containing an Audio Class configuration and state.

Returns
  Boolean `true` if the endpoints were successfully configured, `false` otherwise.

Definition at line 140 of file AudioClassDevice.c.

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

  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.

Definition at line 220 of file AudioClassDevice.h.

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

  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.

Definition at line 198 of file AudioClassDevice.h.

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

  AudioInterfaceInfo | : Pointer to a structure containing an Audio Class configuration and state.

Returns
  Nothing

Definition at line 43 of file AudioClassDevice.c.

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

  AudioInterfaceInfo | : Pointer to a structure containing an Audio Class configuration and state.

Returns
  Signed 16-bit audio sample from the audio interface.

Definition at line 267 of file AudioClassDevice.h.

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

  AudioInterfaceInfo | : Pointer to a structure containing an Audio Class configuration and state.

Returns
  Signed 24-bit audio sample from the audio interface.

Definition at line 293 of file AudioClassDevice.h.

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 that the correct endpoint is selected and ready for data.

Parameters

  AudioInterfaceInfo | : Pointer to a structure containing an Audio Class configuration and state.

Returns
  Signed 8-bit audio sample from the audio interface.

Definition at line 241 of file AudioClassDevice.h.

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

  AudioInterfaceInfo | : Pointer to a structure containing an Audio Class configuration and state.

Returns
  Nothing

Definition at line 180 of file AudioClassDevice.h.

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

  AudioInterfaceInfo | : Pointer to a structure containing an Audio Class configuration and state.
  Sample | : Signed 16-bit audio sample.

Returns
  Nothing

Definition at line 342 of file AudioClassDevice.h.

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

  AudioInterfaceInfo | : Pointer to a structure containing an Audio Class configuration and state.
  Sample | : Signed 24-bit audio sample.

Returns
  Nothing

Definition at line 364 of file AudioClassDevice.h.

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

  AudioInterfaceInfo | : Pointer to a structure containing an Audio Class configuration and state.
  Sample | : Signed 8-bit audio sample.

Returns
  Nothing

Definition at line 320 of file AudioClassDevice.h.

bool CALLBACK_Audio_Device_GetSetEndpointProperty | ( | USB_ClassInfo_Audio_Device_t *const | AudioInterfaceInfo,
|  | const uint8_t | EndpointProperty,
|  | const uint8_t | EndpointAddress,
|  | const uint8_t | EndpointControl,
|  | uint16_t *const | DataLength,
|  | uint8_t * | Data
| ) |  |

Audio class driver callback for the setting and retrieval of streaming endpoint properties. This callback must be implemented in the user application to handle property manipulations on streaming audio endpoints.

When the DataLength parameter is NULL, this callback should only indicate whether the specified operation is valid for the given endpoint index, and should return as fast as possible. When non-NULL, this value may be altered for GET operations to indicate the size of the retreived data.

Note
  The length of the retrieved data stored into the Data buffer on GET operations should not exceed the initial value of the `DataLength` parameter.

Parameters

  AudioInterfaceInfo | : Pointer to a structure containing an Audio Class configuration and state.
  EndpointProperty | : Property of the endpoint to get or set, a value from Audio_ClassRequests_t.
  EndpointAddress | : Address of the streaming endpoint whose property is being referenced.
  EndpointControl | : Parameter of the endpoint to get or set, a value from Audio_EndpointControls_t.
  DataLength | : For SET operations, the length of the parameter data to set. For GET operations, the maximum length of the retrieved data. When NULL, the function should return whether the given property and parameter is valid for the requested endpoint without reading or modifying the Data buffer.
  Data | : Pointer to a location where the parameter data is stored for SET operations, or where the retrieved data is to be stored for GET operations.

Returns
  Boolean true if the property get/set was successful, false otherwise.

Definition at line 421 of file AudioOutput.c.

void EVENT_Audio_Device_StreamStartStop | ( | USB_ClassInfo_Audio_Device_t *const | AudioInterfaceInfo | ) |

Audio class driver event for an Audio Stream start/stop change. This event fires each time the device receives a stream enable or disable control request from the host, to start and stop the audio stream. The current state of the stream can be determined by the State.InterfaceEnabled value inside the Audio interface structure passed as a parameter.

Parameters

  AudioInterfaceInfo | : Pointer to a structure containing an Audio Class configuration and state.

Returns
  Nothing

Definition at line 412 of file AudioOutput.c.