nRF5 SDK v17.1.0
Macros
USB Audio descriptors

nRF52840 only: Descriptors used in the USB Audio class. More...

Macros

#define APP_USBD_AUDIO_INTERFACE_DSC(interface_number, alt_setting, ep_num, subclass)
 Initializer of interface descriptor for AUDIO class. More...
 
#define APP_USBD_AUDIO_ISO_EP_DSC(ep, ep_size, interval, refresh, synch_addr)
 Initializer of isochronous endpoint descriptors for audio class. More...
 
#define APP_USBD_AUDIO_ISO_EP_IN_DSC(ep_size)   APP_USBD_AUDIO_ISO_EP_DSC(NRF_DRV_USBD_EPIN8, ep_size, 1, 0, 0)
 Simplified version of APP_USBD_AUDIO_ISO_EP_DSC for ISO IN endpoint.
 
#define APP_USBD_AUDIO_ISO_EP_OUT_DSC(ep_size)   APP_USBD_AUDIO_ISO_EP_DSC(NRF_DRV_USBD_EPOUT8, ep_size, 1, 0, 0)
 Simplified version of APP_USBD_AUDIO_ISO_EP_DSC for ISO OUT endpoint.
 
#define APP_USBD_AUDIO_AC_IFACE_HEADER_DSC(descriptor_list,...)
 Initializer of app_usbd_audio_ac_iface_header_desc_t. More...
 
#define APP_USBD_AUDIO_INPUT_TERMINAL_DSC(terminal_id, terminal_type, nr_channels, ch_config)
 Initializer of app_usbd_audio_input_terminal_desc_t. More...
 
#define APP_USBD_AUDIO_OUTPUT_TERMINAL_DSC(terminal_id, terminal_type, source_id)
 Initializer of app_usbd_audio_output_terminal_desc_t. More...
 
#define APP_USBD_AUDIO_FEATURE_UNIT_DSC(unit_id, source_id,...)
 Initializer of app_usbd_audio_feature_unit_desc_t. More...
 
#define APP_USBD_AUDIO_AS_IFACE_DSC(terminal_link, delay, format_tag)
 Initializer of app_usbd_audio_as_iface_desc_t. More...
 
#define APP_USBD_AUDIO_AS_FORMAT_I_DSC(nr_channels, subframe_size, resolution, freq_type,...)
 Initializer of app_usbd_audio_as_format_type_one_desc_t. More...
 
#define APP_USBD_AUDIO_AS_FORMAT_II_DSC(max_bitrate, samples_per_frame, freq_type,...)
 Initializer of app_usbd_audio_as_format_type_two_desc_t. More...
 
#define APP_USBD_AUDIO_AS_FORMAT_III_DSC(nr_channels, subframe_size, resolution, freq_type,...)
 Initializer of app_usbd_audio_as_format_type_three_desc_t. More...
 
#define APP_USBD_AUDIO_EP_GENERAL_DSC(attributes, lock_delay_units, lock_delay)
 Initializer of app_usbd_audio_as_endpoint_desc_t. More...
 
#define APP_USBD_AUDIO_CONTROL_DSC(interface_number, descriptor_list, interface_list)
 Macro to configure Audio Class control descriptor. More...
 
#define APP_USBD_AUDIO_STREAMING_DSC(interface_number, alt_setting, ep_num)
 Macro to configure Audio Class streaming descriptor. More...
 
#define APP_USBD_AUDIO_MIDI_STREAMING_DSC(interface_number, alt_setting, ep_num)
 Macro to configure Audio Class MIDI streaming descriptor. More...
 

Detailed Description

nRF52840 only: Descriptors used in the USB Audio class.

Macro Definition Documentation

#define APP_USBD_AUDIO_AC_IFACE_HEADER_DSC (   descriptor_list,
  ... 
)
Value:
/*.bLength = */ sizeof(app_usbd_audio_ac_iface_header_desc_t) + \
(NUM_VA_ARGS(__VA_ARGS__)), \
/*.bDescriptorType = */ APP_USBD_AUDIO_DESCRIPTOR_INTERFACE, \
/*.bDescriptorSubtype = */ APP_USBD_AUDIO_AC_IFACE_SUBTYPE_HEADER, \
/*.bcdADC = */ APP_USBD_U16_TO_RAW_DSC(0x0100), \
/*.wTotalLength = */ APP_USBD_U16_TO_RAW_DSC( \
sizeof((uint8_t[]){BRACKET_EXTRACT(descriptor_list)}) + \
(NUM_VA_ARGS(__VA_ARGS__))), \
/*.bInCollection = */ (NUM_VA_ARGS(__VA_ARGS__)), \
/*.baInterfaceNr[] = */ __VA_ARGS__, \

Initializer of app_usbd_audio_ac_iface_header_desc_t.

Parameters
descriptor_listDescriptor list following audio interface header descriptor.
...List of interfaces following audio control interface.
#define APP_USBD_AUDIO_AS_FORMAT_I_DSC (   nr_channels,
  subframe_size,
  resolution,
  freq_type,
  ... 
)
Value:
/*.bLength = */ sizeof(app_usbd_audio_as_format_type_one_desc_t) + \
(NUM_VA_ARGS(__VA_ARGS__)), \
/*.bDescriptorType = */ APP_USBD_AUDIO_DESCRIPTOR_INTERFACE, \
/*.bDescriptorSubtype = */ APP_USBD_AUDIO_AS_IFACE_SUBTYPE_FORMAT_TYPE, \
/*.bFormatType = */ (1), \
/*.bNrChannels = */ (nr_channels), \
/*.bSubFrameSize = */ (subframe_size), \
/*.bBitResolution = */ (resolution), \
/*.bSamFreqType = */ (freq_type), \
/*.tSamFreq = */ __VA_ARGS__, \

Initializer of app_usbd_audio_as_format_type_one_desc_t.

Parameters
nr_channelsNumber of channels.
subframe_sizeSubframe size.
resolutionBit resolution.
freq_typeFrequency type.
...List of frequencies.
#define APP_USBD_AUDIO_AS_FORMAT_II_DSC (   max_bitrate,
  samples_per_frame,
  freq_type,
  ... 
)
Value:
/*.bLength = */ sizeof(app_usbd_audio_as_format_type_two_desc_t) + \
(NUM_VA_ARGS(__VA_ARGS__)), \
/*.bDescriptorType = */ APP_USBD_AUDIO_DESCRIPTOR_INTERFACE, \
/*.bDescriptorSubtype = */ APP_USBD_AUDIO_AS_IFACE_SUBTYPE_FORMAT_TYPE, \
/*.bFormatType = */ (2), \
/*.wMaxBitRate = */ APP_USBD_U16_TO_RAW_DSC(max_bitrate), \
/*.wSamplesPerFrame = */ APP_USBD_U16_TO_RAW_DSC(samples_per_frame), \
/*.bSamFreqType = */ (freq_type), \
/*.tSamFreq = */ __VA_ARGS__, \

Initializer of app_usbd_audio_as_format_type_two_desc_t.

Parameters
max_bitrateMaximum bitrate.
samples_per_frameSamples per frame.
freq_typeFrequency type.
...List of frequencies.
#define APP_USBD_AUDIO_AS_FORMAT_III_DSC (   nr_channels,
  subframe_size,
  resolution,
  freq_type,
  ... 
)
Value:
/*.bLength = */ sizeof(app_usbd_audio_as_format_type_three_desc_t) + \
(NUM_VA_ARGS(__VA_ARGS__)), \
/*.bDescriptorType = */ APP_USBD_AUDIO_DESCRIPTOR_INTERFACE, \
/*.bDescriptorSubtype = */ APP_USBD_AUDIO_AS_IFACE_SUBTYPE_FORMAT_TYPE, \
/*.bFormatType = */ (3), \
/*.bNrChannels = */ (nr_channels), \
/*.bSubFrameSize = */ (subframe_size), \
/*.bBitResolution = */ (resolution), \
/*.bSamFreqType = */ (freq_type), \
/*.tSamFreq = */ __VA_ARGS__, \

Initializer of app_usbd_audio_as_format_type_three_desc_t.

Parameters
nr_channelsNumber of channels.
subframe_sizeSubframe size.
resolutionBit resolution.
freq_typeFrequency type.
...List of frequencies.
#define APP_USBD_AUDIO_AS_IFACE_DSC (   terminal_link,
  delay,
  format_tag 
)
Value:
/*.bLength = */ sizeof(app_usbd_audio_as_iface_desc_t), \
/*.bDescriptorType = */ APP_USBD_AUDIO_DESCRIPTOR_INTERFACE, \
/*.bDescriptorSubtype = */ APP_USBD_AUDIO_AS_IFACE_SUBTYPE_GENERAL, \
/*.bTerminalLink = */ (terminal_link), \
/*.bDelay = */ (delay), \
/*.wFormatTag = */ APP_USBD_U16_TO_RAW_DSC(format_tag), \

Initializer of app_usbd_audio_as_iface_desc_t.

Parameters
terminal_linkTerminal link.
delayDelay.
format_tagFormat TAG.
#define APP_USBD_AUDIO_CONTROL_DSC (   interface_number,
  descriptor_list,
  interface_list 
)
Value:
APP_USBD_AUDIO_AC_IFACE_HEADER_DSC(descriptor_list, BRACKET_EXTRACT(interface_list)) \
BRACKET_EXTRACT(descriptor_list)

Macro to configure Audio Class control descriptor.

Parameters
interface_numberInterface number.
descriptor_listList of descriptors after Audio interface header descriptor.
interface_listList of interfaces passed to APP_USBD_AUDIO_AC_IFACE_HEADER_DSC
#define APP_USBD_AUDIO_EP_GENERAL_DSC (   attributes,
  lock_delay_units,
  lock_delay 
)
Value:
/*.bLength = */ sizeof(app_usbd_audio_as_endpoint_desc_t), \
/*.bDescriptorType = */ APP_USBD_AUDIO_DESCRIPTOR_ENDPOINT, \
/*.bDescriptorSubtype = */ APP_USBD_AUDIO_EP_SUBTYPE_GENERAL, \
/*.bmAttributes = */ (attributes), \
/*.bLockDelayUnits = */ (lock_delay_units), \
/*.wLockDelay = */ APP_USBD_U16_TO_RAW_DSC(lock_delay), \

Initializer of app_usbd_audio_as_endpoint_desc_t.

Parameters
attributesEndpoint attributes.
lock_delay_unitsLock delay units.
lock_delayLock delay.
#define APP_USBD_AUDIO_FEATURE_UNIT_DSC (   unit_id,
  source_id,
  ... 
)
Value:
/*.bLength = */ sizeof(app_usbd_audio_feature_unit_desc_t) + \
1 + (NUM_VA_ARGS(__VA_ARGS__)), \
/*.bDescriptorType = */ APP_USBD_AUDIO_DESCRIPTOR_INTERFACE, \
/*.bDescriptorSubtype = */ APP_USBD_AUDIO_AC_IFACE_SUBTYPE_FEATURE_UNIT, \
/*.bUnitID = */ (unit_id), \
/*.bSourceID = */ (source_id), \
/*.bControlSize = */ sizeof(uint16_t), \
/*.bmaControls[] = */ __VA_ARGS__, \
/*.iFeature = */ 0, \

Initializer of app_usbd_audio_feature_unit_desc_t.

Parameters
unit_idUnit ID.
source_idSource ID.
...List of controls.
#define APP_USBD_AUDIO_INPUT_TERMINAL_DSC (   terminal_id,
  terminal_type,
  nr_channels,
  ch_config 
)
Value:
/*.bLength = */ sizeof(app_usbd_audio_input_terminal_desc_t), \
/*.bDescriptorType = */ APP_USBD_AUDIO_DESCRIPTOR_INTERFACE, \
/*.bDescriptorSubtype = */ APP_USBD_AUDIO_AC_IFACE_SUBTYPE_INPUT_TERMINAL, \
/*.bTerminalID = */ (terminal_id), \
/*.wTerminalType = */ APP_USBD_U16_TO_RAW_DSC(terminal_type), \
/*.bAssocTerminal = */ 0, \
/*.bNrChannels = */ (nr_channels), \
/*.wChannelConfig = */ APP_USBD_U16_TO_RAW_DSC(ch_config), \
/*.iChannelNames = */ 0, \
/*.iTerminal = */ 0, \

Initializer of app_usbd_audio_input_terminal_desc_t.

Parameters
terminal_idTerminal ID.
terminal_typeTerminal type app_usbd_audio_terminal_type_t
nr_channelsNumber of channels.
ch_configChannel config bitmask.
#define APP_USBD_AUDIO_INTERFACE_DSC (   interface_number,
  alt_setting,
  ep_num,
  subclass 
)
Value:
/*.bLength = */ sizeof(app_usbd_descriptor_iface_t), \
/*.bDescriptorType = */ APP_USBD_DESCRIPTOR_INTERFACE, \
/*.bInterfaceNumber = */ (interface_number), \
/*.bAlternateSetting = */ (alt_setting), \
/*.bNumEndpoints = */ (ep_num), \
/*.bInterfaceClass = */ APP_USBD_AUDIO_CLASS, \
/*.bInterfaceSubClass = */ (subclass), \
/*.bInterfaceProtocol = */ APP_USBD_AUDIO_CLASS_PROTOCOL_UNDEFINED, \
/*.iInterface = 0, */ 0x00, \

Initializer of interface descriptor for AUDIO class.

Parameters
interface_numberInterface number.
alt_settingInterface alternate setting.
ep_numNumber of endpoints.
subclassAudio subclass app_usbd_audio_subclass_t
#define APP_USBD_AUDIO_ISO_EP_DSC (   ep,
  ep_size,
  interval,
  refresh,
  synch_addr 
)
Value:
/*.bLength = */ sizeof(app_usbd_descriptor_ep_t) + 2, \
/*.bDescriptorType = */ APP_USBD_DESCRIPTOR_ENDPOINT, \
/*.bEndpointAddress = */ ep, \
/*.bmAttributes = */ APP_USBD_DESCRIPTOR_EP_ATTR_TYPE_ISOCHRONOUS, \
/*.wMaxPacketSize = */ APP_USBD_U16_TO_RAW_DSC(ep_size), \
/*.bInterval = */ (interval), \
/*.bRefresh = */ (refresh), \
/*.bInterval = */ (synch_addr), \

Initializer of isochronous endpoint descriptors for audio class.

Parameters
epISO endpoint id: NRF_DRV_USBD_EPIN8, NRF_DRV_USBD_EPOUT8
ep_sizeEndpoint size (bytes).
intervalEndpoint interval (milliseconds).
refreshRefresh value (usually 0).
synch_addrSynch address (usually 0).
#define APP_USBD_AUDIO_MIDI_STREAMING_DSC (   interface_number,
  alt_setting,
  ep_num 
)
Value:
APP_USBD_AUDIO_INTERFACE_DSC(interface_number, alt_setting, ep_num, \

Macro to configure Audio Class MIDI streaming descriptor.

Parameters
interface_numberInterface number.
alt_settingAlternate interface setting.
ep_numNumber of endpoints.
#define APP_USBD_AUDIO_OUTPUT_TERMINAL_DSC (   terminal_id,
  terminal_type,
  source_id 
)
Value:
/*.bLength = */ sizeof(app_usbd_audio_output_terminal_desc_t), \
/*.bDescriptorType = */ APP_USBD_AUDIO_DESCRIPTOR_INTERFACE, \
/*.bTerminalID = */ (terminal_id), \
/*.wTerminalType = */ APP_USBD_U16_TO_RAW_DSC(terminal_type), \
/*.bAssocTerminal = */ 0, \
/*.bSourceID = */ (source_id), \
/*.iTerminal = */ 0, \

Initializer of app_usbd_audio_output_terminal_desc_t.

Parameters
terminal_idTerminal ID.
terminal_typeTerminal type app_usbd_audio_terminal_type_t
source_idSource ID.
#define APP_USBD_AUDIO_STREAMING_DSC (   interface_number,
  alt_setting,
  ep_num 
)
Value:
APP_USBD_AUDIO_INTERFACE_DSC(interface_number, alt_setting, ep_num, \

Macro to configure Audio Class streaming descriptor.

Parameters
interface_numberInterface number.
alt_settingAlternate interface setting.
ep_numNumber of endpoints.

Documentation feedback | Developer Zone | Subscribe | Updated