From 2f4da7f2621cad20fa1967e01a801c92b99ed6a9 Mon Sep 17 00:00:00 2001 From: Keith Au Date: Thu, 16 Jan 2020 15:05:41 +0800 Subject: [PATCH] adding variable reference freqency support. Currently only 48kHz work --- lib_xua/api/xua_conf_default.h | 7 +++++++ lib_xua/src/core/endpoint0/xua_ep0_descriptors.h | 8 ++++++++ lib_xua/src/core/endpoint0/xua_ep0_uacreqs.xc | 4 +++- 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/lib_xua/api/xua_conf_default.h b/lib_xua/api/xua_conf_default.h index b22046f0..2810a7d5 100644 --- a/lib_xua/api/xua_conf_default.h +++ b/lib_xua/api/xua_conf_default.h @@ -233,6 +233,13 @@ #define DEFAULT_AUDOUT_FREQ (48000) #endif +/** + * @brief Default Reference input sampling frequency + */ +#ifndef DEFAULT_AUDIN_FREQ +#define DEFAULT_AUDIN_FREQ (48000) +#endif + /* Audio Class Defines */ /** diff --git a/lib_xua/src/core/endpoint0/xua_ep0_descriptors.h b/lib_xua/src/core/endpoint0/xua_ep0_descriptors.h index 3a567417..cfe8a664 100644 --- a/lib_xua/src/core/endpoint0/xua_ep0_descriptors.h +++ b/lib_xua/src/core/endpoint0/xua_ep0_descriptors.h @@ -2599,6 +2599,13 @@ unsigned char cfgDesc_Audio1[] = NUM_USB_CHAN_OUT_FS, /* nrChannels */ FS_STREAM_FORMAT_OUTPUT_1_SUBSLOT_BYTES, /* subFrameSize */ FS_STREAM_FORMAT_OUTPUT_1_RESOLUTION_BITS, /* bitResolution */ + + #ifdef USB_CMD_CFG_SAMP_FREQ + USB_OUT_SAMP_FREQ_NUM, + CHARIFY_SR(USB_OUT_SAMP_FREQ_0), + CHARIFY_SR(USB_OUT_SAMP_FREQ_1), + CHARIFY_SR(USB_OUT_SAMP_FREQ_2), + #else num_freqs_a1, /* SamFreqType - sample freq count */ @@ -2652,6 +2659,7 @@ unsigned char cfgDesc_Audio1[] = #if (MIN_FREQ <= 96000) && (MAX_FREQ_FS >= 96000) 0x00, 0x77, 0x01, /* sampleFreq - 96KHz */ #endif + #endif //USB_CMD_CFG_SAMP_FREQ /* Standard AS Isochronous Audio Data Endpoint Descriptor 4.6.1.1 */ 0x09, diff --git a/lib_xua/src/core/endpoint0/xua_ep0_uacreqs.xc b/lib_xua/src/core/endpoint0/xua_ep0_uacreqs.xc index 446b9213..eabe3b56 100644 --- a/lib_xua/src/core/endpoint0/xua_ep0_uacreqs.xc +++ b/lib_xua/src/core/endpoint0/xua_ep0_uacreqs.xc @@ -55,12 +55,14 @@ extern unsigned char mixSel[MAX_MIX_COUNT][MIX_INPUTS]; #ifdef USB_CMD_CFG_SAMP_FREQ extern unsigned int g_curAudOut_SamFreq; +extern unsigned int g_curAudIn_SamFreq; #endif /* Global var for current frequency, set to default freq */ #ifdef USB_CMD_CFG_SAMP_FREQ #define g_curUSBin_SamFreq g_curAudOut_SamFreq -unsigned int g_curUSBout_SamFreq = DEFAULT_FREQ; +#define g_curUSBout_SamFreq g_curAudIn_SamFreq + unsigned int g_curSamFreq = DEFAULT_FREQ; // should no longer be used #else unsigned int g_curUSBin_SamFreq = DEFAULT_FREQ;