arduino-audio-tools
Loading...
Searching...
No Matches
Public Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes | List of all members
USBAudio2DescriptorBuilder Class Reference

USB Audio Class 2.0 descriptor generator. More...

#include <USBAudio2DescriptorBuilder.h>

Public Member Functions

 USBAudio2DescriptorBuilder (USBAudioConfig &cfg)
 
int audioFunctionsCount () const
 
const uint16_t buildDescriptor (uint8_t, uint8_t, uint8_t *desc)
 
const uint16_t buildFullDescriptor (uint8_t *desc)
 
const uint16_t buildFullDescriptor (uint8_t first_itf, uint8_t *desc)
 
uint16_t calcMaxPacketSize () const
 
uint16_t calcPacketSizeForRate (uint32_t rate) const
 
bool enableFeedbackEp () const
 

Static Public Attributes

static constexpr uint8_t ENTITY_CLOCK = 1
 
static constexpr uint8_t ENTITY_FU1 = 3
 first Feature Unit
 
static constexpr uint8_t ENTITY_FU2 = 6
 second Feature Unit (RXTX)
 
static constexpr uint8_t ENTITY_IT1 = 2
 first Input Terminal
 
static constexpr uint8_t ENTITY_IT2 = 5
 second Input Terminal (RXTX)
 
static constexpr uint8_t ENTITY_OT1 = 4
 first Output Terminal
 
static constexpr uint8_t ENTITY_OT2 = 7
 second Output Terminal (RXTX)
 

Protected Member Functions

uint32_t channelConfig () const
 
uint8_twriteClockSource (uint8_t *p, uint8_t clock_id)
 
uint8_twriteCsAcHeader (uint8_t *p)
 
uint8_twriteCsAsInterface (uint8_t *p, uint8_t terminal_link)
 
uint8_twriteCsIsoEndpoint (uint8_t *p)
 
uint8_twriteFeatureUnit (uint8_t *p, uint8_t unit_id, uint8_t src_id)
 
uint8_twriteFeedbackEndpoint (uint8_t *p, uint8_t ep_addr)
 
uint8_twriteFormatType (uint8_t *p)
 
uint8_twriteIAD (uint8_t *p, uint8_t first_itf, uint8_t count)
 
uint8_twriteInputTerminal (uint8_t *p, uint8_t term_id, uint16_t term_type, uint8_t clock_id)
 
uint8_twriteInterruptEndpoint (uint8_t *p, uint8_t ep_addr)
 
uint8_twriteIsoEndpoint (uint8_t *p, uint8_t ep_addr)
 
uint8_twriteOutputTerminal (uint8_t *p, uint8_t term_id, uint16_t term_type, uint8_t src_id, uint8_t clock_id)
 
uint8_twriteStdIface (uint8_t *p, uint8_t itf, uint8_t alt, uint8_t nEps, uint8_t cls, uint8_t sub, uint8_t proto)
 

Protected Attributes

USBAudioConfigp_config
 

Detailed Description

USB Audio Class 2.0 descriptor generator.

Builds the complete audio-function descriptor block (IAD + AC interface + AS interface(s)) that must be included in the device configuration descriptor.

Descriptor layout produced by buildFullDescriptor(): IAD Standard AC Interface (0 EPs) CS AC Header (wTotalLength auto-patched) Clock Source [OUT path] Input Terminal (USB Streaming) + Feature Unit + Output Terminal (Speaker) [IN path] Input Terminal (Microphone) + Feature Unit + Output Terminal (USB Streaming) [OUT AS Interface] alt=0 (zero BW) + alt=1 (CS AS + Format + ISO EP + CS ISO EP) [IN AS Interface] alt=0 (zero BW) + alt=1 (CS AS + Format + ISO EP + CS ISO EP)

Author
Phil Schatzmann

Constructor & Destructor Documentation

◆ USBAudio2DescriptorBuilder()

USBAudio2DescriptorBuilder ( USBAudioConfig cfg)
inlineexplicit

Member Function Documentation

◆ audioFunctionsCount()

int audioFunctionsCount ( ) const
inline

◆ buildDescriptor()

const uint16_t buildDescriptor ( uint8_t  ,
uint8_t  ,
uint8_t desc 
)
inline

◆ buildFullDescriptor() [1/2]

const uint16_t buildFullDescriptor ( uint8_t desc)
inline

◆ buildFullDescriptor() [2/2]

const uint16_t buildFullDescriptor ( uint8_t  first_itf,
uint8_t desc 
)
inline

◆ calcMaxPacketSize()

uint16_t calcMaxPacketSize ( ) const
inline

◆ calcPacketSizeForRate()

uint16_t calcPacketSizeForRate ( uint32_t  rate) const
inline

◆ channelConfig()

uint32_t channelConfig ( ) const
inlineprotected

◆ enableFeedbackEp()

bool enableFeedbackEp ( ) const
inline

◆ writeClockSource()

uint8_t * writeClockSource ( uint8_t p,
uint8_t  clock_id 
)
inlineprotected

◆ writeCsAcHeader()

uint8_t * writeCsAcHeader ( uint8_t p)
inlineprotected

◆ writeCsAsInterface()

uint8_t * writeCsAsInterface ( uint8_t p,
uint8_t  terminal_link 
)
inlineprotected

◆ writeCsIsoEndpoint()

uint8_t * writeCsIsoEndpoint ( uint8_t p)
inlineprotected

◆ writeFeatureUnit()

uint8_t * writeFeatureUnit ( uint8_t p,
uint8_t  unit_id,
uint8_t  src_id 
)
inlineprotected

◆ writeFeedbackEndpoint()

uint8_t * writeFeedbackEndpoint ( uint8_t p,
uint8_t  ep_addr 
)
inlineprotected

◆ writeFormatType()

uint8_t * writeFormatType ( uint8_t p)
inlineprotected

◆ writeIAD()

uint8_t * writeIAD ( uint8_t p,
uint8_t  first_itf,
uint8_t  count 
)
inlineprotected

◆ writeInputTerminal()

uint8_t * writeInputTerminal ( uint8_t p,
uint8_t  term_id,
uint16_t  term_type,
uint8_t  clock_id 
)
inlineprotected

◆ writeInterruptEndpoint()

uint8_t * writeInterruptEndpoint ( uint8_t p,
uint8_t  ep_addr 
)
inlineprotected

◆ writeIsoEndpoint()

uint8_t * writeIsoEndpoint ( uint8_t p,
uint8_t  ep_addr 
)
inlineprotected

◆ writeOutputTerminal()

uint8_t * writeOutputTerminal ( uint8_t p,
uint8_t  term_id,
uint16_t  term_type,
uint8_t  src_id,
uint8_t  clock_id 
)
inlineprotected

◆ writeStdIface()

uint8_t * writeStdIface ( uint8_t p,
uint8_t  itf,
uint8_t  alt,
uint8_t  nEps,
uint8_t  cls,
uint8_t  sub,
uint8_t  proto 
)
inlineprotected

Member Data Documentation

◆ ENTITY_CLOCK

constexpr uint8_t ENTITY_CLOCK = 1
staticconstexpr

◆ ENTITY_FU1

constexpr uint8_t ENTITY_FU1 = 3
staticconstexpr

first Feature Unit

◆ ENTITY_FU2

constexpr uint8_t ENTITY_FU2 = 6
staticconstexpr

second Feature Unit (RXTX)

◆ ENTITY_IT1

constexpr uint8_t ENTITY_IT1 = 2
staticconstexpr

first Input Terminal

◆ ENTITY_IT2

constexpr uint8_t ENTITY_IT2 = 5
staticconstexpr

second Input Terminal (RXTX)

◆ ENTITY_OT1

constexpr uint8_t ENTITY_OT1 = 4
staticconstexpr

first Output Terminal

◆ ENTITY_OT2

constexpr uint8_t ENTITY_OT2 = 7
staticconstexpr

second Output Terminal (RXTX)

◆ p_config

USBAudioConfig* p_config
protected

The documentation for this class was generated from the following file: