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 1
Audio Class 1 (device number 1)
|-- Configuration 0
|-- Configuration 1
The 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: