FreeBSD kernel usb device Code
usb_template_audio.c File Reference
#include <sys/stdint.h>
#include <sys/stddef.h>
#include <sys/param.h>
#include <sys/queue.h>
#include <sys/types.h>
#include <sys/systm.h>
#include <sys/kernel.h>
#include <sys/bus.h>
#include <sys/module.h>
#include <sys/lock.h>
#include <sys/mutex.h>
#include <sys/condvar.h>
#include <sys/sysctl.h>
#include <sys/sx.h>
#include <sys/unistd.h>
#include <sys/callout.h>
#include <sys/malloc.h>
#include <sys/priv.h>
#include <dev/usb/usb.h>
#include <dev/usb/usbdi.h>
#include <dev/usb/usb_core.h>
#include <dev/usb/usb_cdc.h>
#include <dev/usb/usb_ioctl.h>
#include <dev/usb/usb_util.h>
#include <dev/usb/template/usb_template.h>
Include dependency graph for usb_template_audio.c:

Go to the source code of this file.

Macros

#define AUDIO_DEFAULT_VENDOR_ID   USB_TEMPLATE_VENDOR
 
#define AUDIO_DEFAULT_PRODUCT_ID   0x27e0
 
#define AUDIO_DEFAULT_MIXER   "Mixer interface"
 
#define AUDIO_DEFAULT_RECORD   "Record interface"
 
#define AUDIO_DEFAULT_PLAYBACK   "Playback interface"
 
#define AUDIO_DEFAULT_MANUFACTURER   USB_TEMPLATE_MANUFACTURER
 
#define AUDIO_DEFAULT_PRODUCT   "Audio Test Device"
 
#define AUDIO_DEFAULT_SERIAL_NUMBER   "March 2008"
 

Enumerations

enum  {
  AUDIO_LANG_INDEX , AUDIO_MIXER_INDEX , AUDIO_RECORD_INDEX , AUDIO_PLAYBACK_INDEX ,
  AUDIO_MANUFACTURER_INDEX , AUDIO_PRODUCT_INDEX , AUDIO_SERIAL_NUMBER_INDEX , AUDIO_MAX_INDEX
}
 

Functions

static const void * audio_get_string_desc (uint16_t lang_id, uint8_t string_index)
 
static void audio_init (void *arg __unused)
 
static void audio_uninit (void *arg __unused)
 
 SYSINIT (audio_init, SI_SUB_LOCK, SI_ORDER_FIRST, audio_init, NULL)
 
 SYSUNINIT (audio_uninit, SI_SUB_LOCK, SI_ORDER_FIRST, audio_uninit, NULL)
 

Variables

static struct usb_string_descriptor audio_mixer
 
static struct usb_string_descriptor audio_record
 
static struct usb_string_descriptor audio_playback
 
static struct usb_string_descriptor audio_manufacturer
 
static struct usb_string_descriptor audio_product
 
static struct usb_string_descriptor audio_serial_number
 
static struct sysctl_ctx_list audio_ctx_list
 
static const uint8_t audio_raw_desc_0 []
 
static const uint8_t audio_raw_desc_1 []
 
static const uint8_t audio_raw_desc_2 []
 
static const uint8_t audio_raw_desc_3 []
 
static const uint8_t audio_raw_desc_4 []
 
static const uint8_t audio_raw_desc_5 []
 
static const uint8_t audio_raw_desc_6 []
 
static const uint8_t audio_raw_desc_7 []
 
static const uint8_t audio_raw_desc_8 []
 
static const uint8_t audio_raw_desc_9 []
 
static const uint8_t audio_raw_desc_10 []
 
static const uint8_t audio_raw_desc_11 []
 
static const uint8_t audio_raw_desc_12 []
 
static const uint8_t audio_raw_desc_13 []
 
static const uint8_t audio_raw_desc_14 []
 
static const uint8_t audio_raw_desc_15 []
 
static const void * audio_raw_iface_0_desc []
 
static const struct usb_temp_interface_desc audio_iface_0
 
static const uint8_t audio_raw_desc_20 []
 
static const uint8_t audio_raw_desc_21 []
 
static const uint8_t audio_raw_desc_22 []
 
static const void * audio_raw_iface_1_desc []
 
static const void * audio_raw_ep_1_desc []
 
static const struct usb_temp_packet_size audio_isoc_mps
 
static const struct usb_temp_interval audio_isoc_interval
 
static const struct usb_temp_endpoint_desc audio_isoc_out_ep
 
static const struct usb_temp_endpoint_descaudio_iface_1_ep []
 
static const struct usb_temp_interface_desc audio_iface_1_alt_0
 
static const struct usb_temp_interface_desc audio_iface_1_alt_1
 
static const uint8_t audio_raw_desc_30 []
 
static const uint8_t audio_raw_desc_31 []
 
static const uint8_t audio_raw_desc_32 []
 
static const void * audio_raw_iface_2_desc []
 
static const void * audio_raw_ep_2_desc []
 
static const struct usb_temp_endpoint_desc audio_isoc_in_ep
 
static const struct usb_temp_endpoint_descaudio_iface_2_ep []
 
static const struct usb_temp_interface_desc audio_iface_2_alt_0
 
static const struct usb_temp_interface_desc audio_iface_2_alt_1
 
static const struct usb_temp_interface_descaudio_interfaces []
 
static const struct usb_temp_config_desc audio_config_desc
 
static const struct usb_temp_config_descaudio_configs []
 
static usb_temp_get_string_desc_t audio_get_string_desc
 
struct usb_temp_device_desc usb_template_audio
 

Macro Definition Documentation

◆ AUDIO_DEFAULT_MANUFACTURER

#define AUDIO_DEFAULT_MANUFACTURER   USB_TEMPLATE_MANUFACTURER

Definition at line 86 of file usb_template_audio.c.

◆ AUDIO_DEFAULT_MIXER

#define AUDIO_DEFAULT_MIXER   "Mixer interface"

Definition at line 83 of file usb_template_audio.c.

◆ AUDIO_DEFAULT_PLAYBACK

#define AUDIO_DEFAULT_PLAYBACK   "Playback interface"

Definition at line 85 of file usb_template_audio.c.

◆ AUDIO_DEFAULT_PRODUCT

#define AUDIO_DEFAULT_PRODUCT   "Audio Test Device"

Definition at line 87 of file usb_template_audio.c.

◆ AUDIO_DEFAULT_PRODUCT_ID

#define AUDIO_DEFAULT_PRODUCT_ID   0x27e0

Definition at line 82 of file usb_template_audio.c.

◆ AUDIO_DEFAULT_RECORD

#define AUDIO_DEFAULT_RECORD   "Record interface"

Definition at line 84 of file usb_template_audio.c.

◆ AUDIO_DEFAULT_SERIAL_NUMBER

#define AUDIO_DEFAULT_SERIAL_NUMBER   "March 2008"

Definition at line 88 of file usb_template_audio.c.

◆ AUDIO_DEFAULT_VENDOR_ID

#define AUDIO_DEFAULT_VENDOR_ID   USB_TEMPLATE_VENDOR

Definition at line 81 of file usb_template_audio.c.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
AUDIO_LANG_INDEX 
AUDIO_MIXER_INDEX 
AUDIO_RECORD_INDEX 
AUDIO_PLAYBACK_INDEX 
AUDIO_MANUFACTURER_INDEX 
AUDIO_PRODUCT_INDEX 
AUDIO_SERIAL_NUMBER_INDEX 
AUDIO_MAX_INDEX 

Definition at line 70 of file usb_template_audio.c.

Function Documentation

◆ audio_get_string_desc()

◆ audio_init()

◆ audio_uninit()

static void audio_uninit ( void *arg  __unused)
static

Definition at line 473 of file usb_template_audio.c.

References audio_ctx_list.

◆ SYSINIT()

SYSINIT ( audio_init  ,
SI_SUB_LOCK  ,
SI_ORDER_FIRST  ,
audio_init  ,
NULL   
)

◆ SYSUNINIT()

SYSUNINIT ( audio_uninit  ,
SI_SUB_LOCK  ,
SI_ORDER_FIRST  ,
audio_uninit  ,
NULL   
)

Variable Documentation

◆ audio_config_desc

const struct usb_temp_config_desc audio_config_desc
static
Initial value:
= {
.ppIfaceDesc = audio_interfaces,
.bmAttributes = 0,
.bMaxPower = 0,
.iConfiguration = AUDIO_PRODUCT_INDEX,
}
static const struct usb_temp_interface_desc * audio_interfaces[]
@ AUDIO_PRODUCT_INDEX

Definition at line 352 of file usb_template_audio.c.

◆ audio_configs

const struct usb_temp_config_desc* audio_configs[]
static
Initial value:
= {
NULL,
}
static const struct usb_temp_config_desc audio_config_desc

Definition at line 359 of file usb_template_audio.c.

◆ audio_ctx_list

struct sysctl_ctx_list audio_ctx_list
static

Definition at line 97 of file usb_template_audio.c.

Referenced by audio_init(), and audio_uninit().

◆ audio_get_string_desc

usb_temp_get_string_desc_t audio_get_string_desc
static

Definition at line 364 of file usb_template_audio.c.

◆ audio_iface_0

const struct usb_temp_interface_desc audio_iface_0
static
Initial value:
= {
.ppEndpoints = NULL,
.ppRawDesc = audio_raw_iface_0_desc,
.bInterfaceClass = UICLASS_AUDIO,
.bInterfaceSubClass = UISUBCLASS_AUDIOCONTROL,
.bInterfaceProtocol = 0,
.iInterface = AUDIO_MIXER_INDEX,
}
#define UICLASS_AUDIO
Definition: usb.h:429
#define UISUBCLASS_AUDIOCONTROL
Definition: usb.h:430
static const void * audio_raw_iface_0_desc[]
@ AUDIO_MIXER_INDEX

Definition at line 208 of file usb_template_audio.c.

◆ audio_iface_1_alt_0

const struct usb_temp_interface_desc audio_iface_1_alt_0
static
Initial value:
= {
.ppEndpoints = NULL,
.ppRawDesc = NULL,
.bInterfaceClass = UICLASS_AUDIO,
.bInterfaceSubClass = UISUBCLASS_AUDIOSTREAM,
.bInterfaceProtocol = 0,
.iInterface = AUDIO_PLAYBACK_INDEX,
}
#define UISUBCLASS_AUDIOSTREAM
Definition: usb.h:431
@ AUDIO_PLAYBACK_INDEX

Definition at line 266 of file usb_template_audio.c.

◆ audio_iface_1_alt_1

const struct usb_temp_interface_desc audio_iface_1_alt_1
static
Initial value:
= {
.ppEndpoints = audio_iface_1_ep,
.bInterfaceClass = UICLASS_AUDIO,
.bInterfaceSubClass = UISUBCLASS_AUDIOSTREAM,
.bInterfaceProtocol = 0,
.iInterface = AUDIO_PLAYBACK_INDEX,
.isAltInterface = 1,
}
const void ** ppRawDesc
Definition: usb_template.h:56
static const struct usb_temp_endpoint_desc * audio_iface_1_ep[]
static const void * audio_raw_iface_1_desc[]

Definition at line 275 of file usb_template_audio.c.

◆ audio_iface_1_ep

const struct usb_temp_endpoint_desc* audio_iface_1_ep[]
static
Initial value:
= {
NULL,
}
static const struct usb_temp_endpoint_desc audio_isoc_out_ep

Definition at line 261 of file usb_template_audio.c.

◆ audio_iface_2_alt_0

const struct usb_temp_interface_desc audio_iface_2_alt_0
static
Initial value:
= {
.ppEndpoints = NULL,
.ppRawDesc = NULL,
.bInterfaceClass = UICLASS_AUDIO,
.bInterfaceSubClass = UISUBCLASS_AUDIOSTREAM,
.bInterfaceProtocol = 0,
.iInterface = AUDIO_RECORD_INDEX,
}
@ AUDIO_RECORD_INDEX

Definition at line 324 of file usb_template_audio.c.

◆ audio_iface_2_alt_1

const struct usb_temp_interface_desc audio_iface_2_alt_1
static
Initial value:
= {
.ppEndpoints = audio_iface_2_ep,
.bInterfaceClass = UICLASS_AUDIO,
.bInterfaceSubClass = UISUBCLASS_AUDIOSTREAM,
.bInterfaceProtocol = 0,
.iInterface = AUDIO_RECORD_INDEX,
.isAltInterface = 1,
}
static const void * audio_raw_iface_2_desc[]
static const struct usb_temp_endpoint_desc * audio_iface_2_ep[]

Definition at line 333 of file usb_template_audio.c.

◆ audio_iface_2_ep

const struct usb_temp_endpoint_desc* audio_iface_2_ep[]
static
Initial value:
= {
NULL,
}
static const struct usb_temp_endpoint_desc audio_isoc_in_ep

Definition at line 319 of file usb_template_audio.c.

◆ audio_interfaces

const struct usb_temp_interface_desc* audio_interfaces[]
static
Initial value:
= {
NULL,
}
static const struct usb_temp_interface_desc audio_iface_0
static const struct usb_temp_interface_desc audio_iface_1_alt_1
static const struct usb_temp_interface_desc audio_iface_2_alt_1
static const struct usb_temp_interface_desc audio_iface_2_alt_0
static const struct usb_temp_interface_desc audio_iface_1_alt_0

Definition at line 343 of file usb_template_audio.c.

◆ audio_isoc_in_ep

const struct usb_temp_endpoint_desc audio_isoc_in_ep
static
Initial value:
= {
.ppRawDesc = audio_raw_ep_2_desc,
.pPacketSize = &audio_isoc_mps,
.pIntervals = &audio_isoc_interval,
.bEndpointAddress = UE_DIR_IN,
.bmAttributes = UE_ISOCHRONOUS | UE_ISO_ADAPT,
}
#define UE_DIR_IN
Definition: usb.h:531
#define UE_ISO_ADAPT
Definition: usb.h:550
#define UE_ISOCHRONOUS
Definition: usb.h:542
static const struct usb_temp_packet_size audio_isoc_mps
static const void * audio_raw_ep_2_desc[]
static const struct usb_temp_interval audio_isoc_interval

Definition at line 311 of file usb_template_audio.c.

◆ audio_isoc_interval

const struct usb_temp_interval audio_isoc_interval
static
Initial value:
= {
.bInterval[USB_SPEED_FULL] = 1,
.bInterval[USB_SPEED_HIGH] = 4,
}
@ USB_SPEED_FULL
Definition: usb.h:754
@ USB_SPEED_HIGH
Definition: usb.h:755

Definition at line 248 of file usb_template_audio.c.

◆ audio_isoc_mps

const struct usb_temp_packet_size audio_isoc_mps
static
Initial value:
= {
.mps[USB_SPEED_FULL] = 0xC8,
.mps[USB_SPEED_HIGH] = 0xC8,
}

Definition at line 243 of file usb_template_audio.c.

◆ audio_isoc_out_ep

const struct usb_temp_endpoint_desc audio_isoc_out_ep
static
Initial value:
= {
.ppRawDesc = audio_raw_ep_1_desc,
.pPacketSize = &audio_isoc_mps,
.pIntervals = &audio_isoc_interval,
.bEndpointAddress = UE_DIR_OUT,
.bmAttributes = UE_ISOCHRONOUS | UE_ISO_ADAPT,
}
#define UE_DIR_OUT
Definition: usb.h:532
static const void * audio_raw_ep_1_desc[]

Definition at line 253 of file usb_template_audio.c.

◆ audio_manufacturer

struct usb_string_descriptor audio_manufacturer
static

Definition at line 93 of file usb_template_audio.c.

Referenced by audio_get_string_desc(), and audio_init().

◆ audio_mixer

struct usb_string_descriptor audio_mixer
static

Definition at line 90 of file usb_template_audio.c.

Referenced by audio_get_string_desc(), and audio_init().

◆ audio_playback

struct usb_string_descriptor audio_playback
static

Definition at line 92 of file usb_template_audio.c.

Referenced by audio_get_string_desc(), and audio_init().

◆ audio_product

struct usb_string_descriptor audio_product
static

Definition at line 94 of file usb_template_audio.c.

Referenced by audio_get_string_desc(), and audio_init().

◆ audio_raw_desc_0

const uint8_t audio_raw_desc_0[]
static
Initial value:
= {
0x0a, 0x24, 0x01, 0x00, 0x01, 0xa9, 0x00, 0x02,
0x01, 0x02
}

Definition at line 108 of file usb_template_audio.c.

◆ audio_raw_desc_1

const uint8_t audio_raw_desc_1[]
static
Initial value:
= {
0x0c, 0x24, 0x02, 0x01, 0x01, 0x01, 0x00, 0x02,
0x03, 0x00, 0x00, 0x00
}

Definition at line 113 of file usb_template_audio.c.

◆ audio_raw_desc_10

const uint8_t audio_raw_desc_10[]
static
Initial value:
= {
0x0a, 0x24, 0x06, 0x0a, 0x02, 0x01, 0x43, 0x00,
0x00, 0x00
}

Definition at line 158 of file usb_template_audio.c.

◆ audio_raw_desc_11

const uint8_t audio_raw_desc_11[]
static
Initial value:
= {
0x0a, 0x24, 0x06, 0x0b, 0x03, 0x01, 0x01, 0x02,
0x02, 0x00
}

Definition at line 163 of file usb_template_audio.c.

◆ audio_raw_desc_12

const uint8_t audio_raw_desc_12[]
static
Initial value:
= {
0x0a, 0x24, 0x06, 0x0c, 0x04, 0x01, 0x01, 0x00,
0x00, 0x00
}

Definition at line 168 of file usb_template_audio.c.

◆ audio_raw_desc_13

const uint8_t audio_raw_desc_13[]
static
Initial value:
= {
0x0a, 0x24, 0x06, 0x0d, 0x02, 0x01, 0x03, 0x00,
0x00, 0x00
}

Definition at line 173 of file usb_template_audio.c.

◆ audio_raw_desc_14

const uint8_t audio_raw_desc_14[]
static
Initial value:
= {
0x0a, 0x24, 0x06, 0x0e, 0x03, 0x01, 0x01, 0x02,
0x02, 0x00
}

Definition at line 178 of file usb_template_audio.c.

◆ audio_raw_desc_15

const uint8_t audio_raw_desc_15[]
static
Initial value:
= {
0x0f, 0x24, 0x04, 0x0f, 0x03, 0x01, 0x0d, 0x0e,
0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00
}

Definition at line 183 of file usb_template_audio.c.

◆ audio_raw_desc_2

const uint8_t audio_raw_desc_2[]
static
Initial value:
= {
0x0c, 0x24, 0x02, 0x02, 0x01, 0x02, 0x00, 0x02,
0x03, 0x00, 0x00, 0x00
}

Definition at line 118 of file usb_template_audio.c.

◆ audio_raw_desc_20

const uint8_t audio_raw_desc_20[]
static
Initial value:
= {
0x07, 0x24, 0x01, 0x01, 0x03, 0x01, 0x00
}

Definition at line 217 of file usb_template_audio.c.

◆ audio_raw_desc_21

const uint8_t audio_raw_desc_21[]
static
Initial value:
= {
0x0b, 0x24, 0x02, 0x01, 0x02, 0x02, 0x10, 0x01,
0x80, 0xbb, 0x00
}

Definition at line 222 of file usb_template_audio.c.

◆ audio_raw_desc_22

const uint8_t audio_raw_desc_22[]
static
Initial value:
= {
0x07, 0x25, 0x01, 0x00, 0x01, 0x04, 0x00
}

Definition at line 228 of file usb_template_audio.c.

◆ audio_raw_desc_3

const uint8_t audio_raw_desc_3[]
static
Initial value:
= {
0x0c, 0x24, 0x02, 0x03, 0x03, 0x06, 0x00, 0x02,
0x03, 0x00, 0x00, 0x00
}

Definition at line 123 of file usb_template_audio.c.

◆ audio_raw_desc_30

const uint8_t audio_raw_desc_30[]
static
Initial value:
= {
0x07, 0x24, 0x01, 0x07, 0x01, 0x01, 0x00
}

Definition at line 285 of file usb_template_audio.c.

◆ audio_raw_desc_31

const uint8_t audio_raw_desc_31[]
static
Initial value:
= {
0x0b, 0x24, 0x02, 0x01, 0x02, 0x02, 0x10, 0x01,
0x80, 0xbb, 0x00
}

Definition at line 290 of file usb_template_audio.c.

◆ audio_raw_desc_32

const uint8_t audio_raw_desc_32[]
static
Initial value:
= {
0x07, 0x25, 0x01, 0x01, 0x00, 0x00, 0x00
}

Definition at line 296 of file usb_template_audio.c.

◆ audio_raw_desc_4

const uint8_t audio_raw_desc_4[]
static
Initial value:
= {
0x0c, 0x24, 0x02, 0x04, 0x05, 0x06, 0x00, 0x02,
0x03, 0x00, 0x00, 0x00
}

Definition at line 128 of file usb_template_audio.c.

◆ audio_raw_desc_5

const uint8_t audio_raw_desc_5[]
static
Initial value:
= {
0x09, 0x24, 0x03, 0x05, 0x05, 0x06, 0x00, 0x01,
0x00
}

Definition at line 133 of file usb_template_audio.c.

◆ audio_raw_desc_6

const uint8_t audio_raw_desc_6[]
static
Initial value:
= {
0x09, 0x24, 0x03, 0x06, 0x01, 0x03, 0x00, 0x09,
0x00
}

Definition at line 138 of file usb_template_audio.c.

◆ audio_raw_desc_7

const uint8_t audio_raw_desc_7[]
static
Initial value:
= {
0x09, 0x24, 0x03, 0x07, 0x01, 0x01, 0x00, 0x08,
0x00
}

Definition at line 143 of file usb_template_audio.c.

◆ audio_raw_desc_8

const uint8_t audio_raw_desc_8[]
static
Initial value:
= {
0x09, 0x24, 0x05, 0x08, 0x03, 0x0a, 0x0b, 0x0c,
0x00
}

Definition at line 148 of file usb_template_audio.c.

◆ audio_raw_desc_9

const uint8_t audio_raw_desc_9[]
static
Initial value:
= {
0x0a, 0x24, 0x06, 0x09, 0x0f, 0x01, 0x01, 0x02,
0x02, 0x00
}

Definition at line 153 of file usb_template_audio.c.

◆ audio_raw_ep_1_desc

const void* audio_raw_ep_1_desc[]
static
Initial value:
= {
NULL,
}
static const uint8_t audio_raw_desc_22[]

Definition at line 238 of file usb_template_audio.c.

◆ audio_raw_ep_2_desc

const void* audio_raw_ep_2_desc[]
static
Initial value:
= {
NULL,
}
static const uint8_t audio_raw_desc_32[]

Definition at line 306 of file usb_template_audio.c.

◆ audio_raw_iface_0_desc

const void* audio_raw_iface_0_desc[]
static
Initial value:
= {
NULL,
}
static const uint8_t audio_raw_desc_6[]
static const uint8_t audio_raw_desc_4[]
static const uint8_t audio_raw_desc_1[]
static const uint8_t audio_raw_desc_10[]
static const uint8_t audio_raw_desc_5[]
static const uint8_t audio_raw_desc_2[]
static const uint8_t audio_raw_desc_8[]
static const uint8_t audio_raw_desc_14[]
static const uint8_t audio_raw_desc_15[]
static const uint8_t audio_raw_desc_3[]
static const uint8_t audio_raw_desc_12[]
static const uint8_t audio_raw_desc_7[]
static const uint8_t audio_raw_desc_9[]
static const uint8_t audio_raw_desc_11[]
static const uint8_t audio_raw_desc_0[]
static const uint8_t audio_raw_desc_13[]

Definition at line 188 of file usb_template_audio.c.

◆ audio_raw_iface_1_desc

const void* audio_raw_iface_1_desc[]
static
Initial value:
= {
NULL,
}
static const uint8_t audio_raw_desc_20[]
static const uint8_t audio_raw_desc_21[]

Definition at line 232 of file usb_template_audio.c.

◆ audio_raw_iface_2_desc

const void* audio_raw_iface_2_desc[]
static
Initial value:
= {
NULL,
}
static const uint8_t audio_raw_desc_31[]
static const uint8_t audio_raw_desc_30[]

Definition at line 300 of file usb_template_audio.c.

◆ audio_record

struct usb_string_descriptor audio_record
static

Definition at line 91 of file usb_template_audio.c.

Referenced by audio_get_string_desc(), and audio_init().

◆ audio_serial_number

struct usb_string_descriptor audio_serial_number
static

Definition at line 95 of file usb_template_audio.c.

Referenced by audio_get_string_desc(), and audio_init().

◆ usb_template_audio

struct usb_temp_device_desc usb_template_audio
Initial value:
= {
.getStringDesc = &audio_get_string_desc,
.ppConfigDesc = audio_configs,
.bcdDevice = 0x0100,
.bDeviceClass = UDCLASS_COMM,
.bDeviceSubClass = 0,
.bDeviceProtocol = 0,
.iManufacturer = AUDIO_MANUFACTURER_INDEX,
.iProduct = AUDIO_PRODUCT_INDEX,
.iSerialNumber = AUDIO_SERIAL_NUMBER_INDEX,
}
#define UDCLASS_COMM
Definition: usb.h:372
#define AUDIO_DEFAULT_VENDOR_ID
static const struct usb_temp_config_desc * audio_configs[]
#define AUDIO_DEFAULT_PRODUCT_ID
@ AUDIO_SERIAL_NUMBER_INDEX
@ AUDIO_MANUFACTURER_INDEX
static usb_temp_get_string_desc_t audio_get_string_desc

Definition at line 366 of file usb_template_audio.c.

Referenced by audio_init(), and usb_temp_setup_by_index().