USBD_Audio_CfgAdd
Description
Add an audio class instance into the specified configuration. The audio class instance was previously created by the function USBD_Audio_Add.
Files
usbd_audio.h / usbd_audio.c
Prototype
void USBD_Audio_CfgAdd (CPU_INT08U class_nbr,
CPU_INT08U dev_nbr,
CPU_INT08U cfg_nbr,
USBD_ERR *p_err);Arguments
class_nbr
Class instance number.
dev_nbr
Device number.
cfg_nbr
Configuration index to add audio class instance to.
p_err
Pointer to variable that will receive the return error code from this function.
USBD_ERR_NONE
USBD_ERR_INVALID_ARG
USBD_ERR_ALLOC
USBD_ERR_NULL_PTR
USBD_ERR_DEV_INVALID_NBR
USBD_ERR_DEV_INVALID_STATE
USBD_ERR_CFG_INVALID_NBR
USBD_ERR_IF_ALLOC
USBD_ERR_IF_ALT_ALLOC
USBD_ERR_IF_INVALID_NBR
USBD_ERR_EP_NONE_AVAIL
USBD_ERR_EP_ALLOC
Returned Value
None.
Callers
Application.
Notes / Warnings
If
USBD_Audio_CfgAdd()is called several times from the application, it allows to create multiple instances and multiple configurations. For instance, the following architecture could be created:Audio Class 0 (device number 0)|-- Configuration 0|-- Configuration 1Audio Class 1 (device number 1)|-- Configuration 0|-- Configuration 1The Configuration Descriptor corresponding to an audio device has the following format:
Configuration Descriptor|-- Interface Descriptor (AudioControl) [standard]|-- Header Descriptor [class-specific]|-- Unit Descriptor(s) [class-specific]|-- Terminal Descriptor(s) [class-specific]|-- Endpoint Descriptor (Interrupt IN) - optional [standard]|-- Interface Descriptor (AudioStreaming) [standard]|-- AS Interface Descriptor [class-specific]|-- AS Format Type Descriptor [class-specific]|-- AS Format-Specific Descriptor(s) [class-specific]|-- Endpoint Descriptor (Isochronous IN or OUT Data) [standard]|-- AS Isochronous Audio Data Endpoint Descriptor [class-specific]|-- Endpoint Descriptor (Isochronous OUT or IN Synch endpoint) [standard]|-- Interface Descriptor (AudioStreaming) [standard]|-- ...|-- Interface Descriptor (AudioStreaming) [standard]|-- ...
The function USBD_Audio_CfgAdd() only adds the AudioControl interface descriptor. Other standard and class-specific descriptors are added by functions: