diff options
| author | sakumisu <[email protected]> | 2022-06-07 22:08:25 +0800 |
|---|---|---|
| committer | sakumisu <[email protected]> | 2022-06-07 22:08:45 +0800 |
| commit | efa9de9303f784324e4a869dcb3816d0f8f46cd6 (patch) | |
| tree | 4122c1837e6d753620a54b113af39d901845fe5b | |
| parent | 1277126712c922d59f4a0fac7e05648c2294885d (diff) | |
add uac1.0 multichan config
| -rw-r--r-- | demo/audio_v1_mic_multichan_template.c (renamed from demo/audio_v1_mic_singlechan_template.c) | 56 | ||||
| -rw-r--r-- | demo/audio_v1_mic_speaker_multichan_template.c (renamed from demo/audio_v1_mic_speaker_dualchan_template.c) | 12 |
2 files changed, 48 insertions, 20 deletions
diff --git a/demo/audio_v1_mic_singlechan_template.c b/demo/audio_v1_mic_multichan_template.c index c10275dc..18797f9e 100644 --- a/demo/audio_v1_mic_singlechan_template.c +++ b/demo/audio_v1_mic_multichan_template.c @@ -17,30 +17,58 @@ /* AUDIO Class Config */ #define AUDIO_FREQ 16000U +#define IN_CHANNEL_NUM 1 + +#if IN_CHANNEL_NUM == 1 +#define INPUT_CTRL 0x03 +#define INPUT_CH_ENABLE 0x0001 +#elif IN_CHANNEL_NUM == 2 +#define INPUT_CTRL 0x03, 0x03 +#define INPUT_CH_ENABLE 0x0003 +#elif IN_CHANNEL_NUM == 3 +#define INPUT_CTRL 0x03, 0x03, 0x03 +#define INPUT_CH_ENABLE 0x0007 +#elif IN_CHANNEL_NUM == 4 +#define INPUT_CTRL 0x03, 0x03, 0x03, 0x03 +#define INPUT_CH_ENABLE 0x000f +#elif IN_CHANNEL_NUM == 5 +#define INPUT_CTRL 0x03, 0x03, 0x03, 0x03, 0x03 +#define INPUT_CH_ENABLE 0x001f +#elif IN_CHANNEL_NUM == 6 +#define INPUT_CTRL 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 +#define INPUT_CH_ENABLE 0x003F +#elif IN_CHANNEL_NUM == 7 +#define INPUT_CTRL 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 +#define INPUT_CH_ENABLE 0x007f +#elif IN_CHANNEL_NUM == 8 +#define INPUT_CTRL 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 +#define INPUT_CH_ENABLE 0x00ff +#endif + /* AudioFreq * DataSize (2 bytes) * NumChannels (Stereo: 1) */ /* 16bit(2 Bytes) 单声道(Mono:1) */ -#define AUDIO_IN_PACKET ((uint32_t)((AUDIO_FREQ * 2 * 1) / 1000)) +#define AUDIO_IN_PACKET ((uint32_t)((AUDIO_FREQ * 2 * IN_CHANNEL_NUM) / 1000)) -#define USB_AUDIO_CONFIG_DESC_SIZ (unsigned long)(9 + \ - AUDIO_AC_DESCRIPTOR_INIT_LEN(1) + \ - AUDIO_SIZEOF_AC_INPUT_TERMINAL_DESC + \ - AUDIO_SIZEOF_AC_FEATURE_UNIT_DESC(1, 1) + \ - AUDIO_SIZEOF_AC_OUTPUT_TERMINAL_DESC + \ +#define USB_AUDIO_CONFIG_DESC_SIZ (unsigned long)(9 + \ + AUDIO_AC_DESCRIPTOR_INIT_LEN(1) + \ + AUDIO_SIZEOF_AC_INPUT_TERMINAL_DESC + \ + AUDIO_SIZEOF_AC_FEATURE_UNIT_DESC(1, IN_CHANNEL_NUM) + \ + AUDIO_SIZEOF_AC_OUTPUT_TERMINAL_DESC + \ AUDIO_AS_DESCRIPTOR_INIT_LEN(1)) -#define AUDIO_AC_SIZ (AUDIO_SIZEOF_AC_HEADER_DESC(1) + \ - AUDIO_SIZEOF_AC_INPUT_TERMINAL_DESC + \ - AUDIO_SIZEOF_AC_FEATURE_UNIT_DESC(1, 1) + \ +#define AUDIO_AC_SIZ (AUDIO_SIZEOF_AC_HEADER_DESC(1) + \ + AUDIO_SIZEOF_AC_INPUT_TERMINAL_DESC + \ + AUDIO_SIZEOF_AC_FEATURE_UNIT_DESC(1, IN_CHANNEL_NUM) + \ AUDIO_SIZEOF_AC_OUTPUT_TERMINAL_DESC) const uint8_t audio_descriptor[] = { - USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0x00, 0x00, 0x00, USBD_VID, USBD_PID, 0x0001, 0x01), + USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0xef, 0x02, 0x01, USBD_VID, USBD_PID, 0x0001, 0x01), USB_CONFIG_DESCRIPTOR_INIT(USB_AUDIO_CONFIG_DESC_SIZ, 0x02, 0x01, USB_CONFIG_BUS_POWERED, USBD_MAX_POWER), AUDIO_AC_DESCRIPTOR_INIT(0x00, 0x02, AUDIO_AC_SIZ, 0x00, 0x01), - AUDIO_AC_INPUT_TERMINAL_DESCRIPTOR_INIT(0x01, AUDIO_INTERM_MIC, 0x01, 0x0001), - AUDIO_AC_FEATURE_UNIT_DESCRIPTOR_INIT(0x02, 0x01, 0x01, 0x03), + AUDIO_AC_INPUT_TERMINAL_DESCRIPTOR_INIT(0x01, AUDIO_INTERM_MIC, IN_CHANNEL_NUM, INPUT_CH_ENABLE), + AUDIO_AC_FEATURE_UNIT_DESCRIPTOR_INIT(0x02, 0x01, 0x01, INPUT_CTRL), AUDIO_AC_OUTPUT_TERMINAL_DESCRIPTOR_INIT(0x03, AUDIO_TERMINAL_STREAMING, 0x02), - AUDIO_AS_DESCRIPTOR_INIT(0x01, 0x03, 0x01, 0x81, AUDIO_IN_PACKET, EP_INTERVAL, AUDIO_SAMPLE_FREQ_3B(AUDIO_FREQ)), + AUDIO_AS_DESCRIPTOR_INIT(0x01, 0x03, IN_CHANNEL_NUM, AUDIO_IN_EP, AUDIO_IN_PACKET, EP_INTERVAL, AUDIO_SAMPLE_FREQ_3B(AUDIO_FREQ)), /////////////////////////////////////// /// string0 descriptor /////////////////////////////////////// @@ -96,7 +124,7 @@ const uint8_t audio_descriptor[] = { '1', 0x00, /* wcChar6 */ '0', 0x00, /* wcChar7 */ '0', 0x00, /* wcChar8 */ - '0', 0x00, /* wcChar9 */ + '0' + IN_CHANNEL_NUM, 0x00, /* wcChar9 */ #ifdef CONFIG_USB_HS /////////////////////////////////////// /// device qualifier descriptor diff --git a/demo/audio_v1_mic_speaker_dualchan_template.c b/demo/audio_v1_mic_speaker_multichan_template.c index 8d156842..bd39af03 100644 --- a/demo/audio_v1_mic_speaker_dualchan_template.c +++ b/demo/audio_v1_mic_speaker_multichan_template.c @@ -1,17 +1,17 @@ #include "usbd_core.h" #include "usbd_audio.h" +#define USBD_VID 0xffff +#define USBD_PID 0xffff +#define USBD_MAX_POWER 100 +#define USBD_LANGID_STRING 1033 + #ifdef CONFIG_USB_HS #define EP_INTERVAL 0x04 #else #define EP_INTERVAL 0x01 #endif -#define USBD_VID 0xffff -#define USBD_PID 0xffff -#define USBD_MAX_POWER 100 -#define USBD_LANGID_STRING 1033 - #define AUDIO_IN_EP 0x81 #define AUDIO_OUT_EP 0x02 @@ -45,7 +45,7 @@ AUDIO_SIZEOF_AC_OUTPUT_TERMINAL_DESC) const uint8_t audio_descriptor[] = { - USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0x00, 0x00, 0x00, USBD_VID, USBD_PID, 0x0001, 0x01), + USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0xef, 0x02, 0x01, USBD_VID, USBD_PID, 0x0001, 0x01), USB_CONFIG_DESCRIPTOR_INIT(USB_AUDIO_CONFIG_DESC_SIZ, 0x03, 0x01, USB_CONFIG_BUS_POWERED, USBD_MAX_POWER), AUDIO_AC_DESCRIPTOR_INIT(0x00, 0x03, AUDIO_AC_SIZ, 0x00, 0x01, 0x02), AUDIO_AC_INPUT_TERMINAL_DESCRIPTOR_INIT(0x01, AUDIO_INTERM_MIC, 0x02, 0x0003), |
