update modes

This commit is contained in:
Steven Dan
2026-05-21 15:09:59 +08:00
parent fe7ac4d781
commit 9f2edd1e14
14 changed files with 196 additions and 190 deletions

View File

@@ -50,6 +50,7 @@ XUD_Result_t HidInterfaceClassRequests(
#endif
#if DEBUG_MEMORY_LOG_ENABLED
unsigned log_switch;
buffer[0] = 0x1;
GET_SHARED_GLOBAL(log_switch, g_log_switch);
if (log_switch) {
@@ -57,16 +58,7 @@ XUD_Result_t HidInterfaceClassRequests(
UserReadHIDLog(&buffer[1]);
}
#endif
#if 0
debug_printf("%d:\n", ret_len);
for(int i=0; i < ret_len; i++)
{
printhex((buffer, unsigned char[])[i]);
printstr("-");
}
printstrln("\n");
#endif
return XUD_DoGetRequest(c_ep0_out, c_ep0_in, (buffer, unsigned char []), ret_len, sp.wLength);
return XUD_DoGetRequest(c_ep0_out, c_ep0_in, (buffer, unsigned char []), ret_len, sp.wLength);
break;
case HID_GET_IDLE:
/* Do nothing - i.e. STALL */

View File

@@ -97,8 +97,8 @@ set(APP_COMPILER_FLAGS_factory ${SW_FACT_AUDIO_FLAGS} -DI2S_CHANS_DA
-DSTREAM_FORMAT_OUTPUT_1_RESOLUTION_BITS=32
-DOUTPUT_FORMAT_COUNT=1
-DXUA_SPDIF_TX_EN=0
-DMAX_FREQ=\(768000\)
-DMIN_FREQ=\(44100\)
-DMAX_FREQ=\(48000\)
-DMIN_FREQ=\(48000\)
-DDEFAULT_FREQ=\(48000\)
-DUART_DEBUG=0
-DHID_CONTROLS=1
@@ -125,9 +125,9 @@ set(APP_COMPILER_FLAGS_fps_uac1 ${SW_USB_AUDIO_FLAGS} -DXUA_SPDIF_RX
#-fxscope
#-DXSCOPE
-DXUA_DFU_EN=0
-DSTREAM_FORMAT_OUTPUT_1_RESOLUTION_BITS=24
-DSTREAM_FORMAT_OUTPUT_1_RESOLUTION_BITS=32
-DOUTPUT_FORMAT_COUNT=1
-DSTREAM_FORMAT_INPUT_1_RESOLUTION_BITS=24
-DSTREAM_FORMAT_INPUT_1_RESOLUTION_BITS=32
-DINPUT_FORMAT_COUNT=1
-DMCLK_441=\(1024*44100\)
-DMCLK_48=\(1024*48000\)
@@ -148,81 +148,81 @@ set(APP_COMPILER_FLAGS_fps_uac1 ${SW_USB_AUDIO_FLAGS} -DXUA_SPDIF_RX
-DI2S_CHANS_ADC=2)
set(APP_COMPILER_FLAGS_fps_uac2 ${SW_USB_AUDIO_FLAGS} -DXUA_SPDIF_RX_EN=0
-DXUA_SPDIF_TX_EN=0
-DI2S_CHANS_DAC=2
-DSPDIF_RX_I2S_OUT=0
#-DAUDIO_CLASS=1
-DXUA_USB_EN=1
-DNUM_USB_CHAN_IN=2
-DWINDOWS_OS_DESCRIPTOR_SUPPORT
-DNUM_USB_CHAN_IN_FS=2
-DNUM_USB_CHAN_OUT=2
-DNUM_USB_CHAN_OUT_FS=2
-DXUA_USE_SW_PLL=0
-DOUT_VOLUME_IN_MIXER=0
-DFPS_UAC2=1
#-fxscope
#-DXSCOPE
-DXUA_DFU_EN=1
-DSTREAM_FORMAT_OUTPUT_1_RESOLUTION_BITS=32
-DOUTPUT_FORMAT_COUNT=1
-DSTREAM_FORMAT_INPUT_1_RESOLUTION_BITS=32
-DINPUT_FORMAT_COUNT=1
-DMCLK_441=\(1024*44100\)
-DMCLK_48=\(1024*48000\)
-DMAX_FREQ=\(48000\)
-DMIN_FREQ=\(48000\)
-DDEFAULT_FREQ=\(48000\)
-lxmos_fps
#-DHID_CONTROLS_UAC1=1
-DEQ_EN=1
-DXMOS_FPS_EN=1
-DUAC1=1
-DHID_CONTROLS=1
-DDNR_50MS=1
-ldnr_50ms
#-DDEBUG_MEMORY_LOG_ENABLED=1
-DNO_LOG_TIMESTAPS=0
-DI2S_CHANS_ADC=2)
set(APP_COMPILER_FLAGS_br_uac2 ${SW_USB_AUDIO_FLAGS}
-DXUA_SPDIF_RX_EN=0
-DXUA_SPDIF_TX_EN=0
-DI2S_CHANS_DAC=2
-DSPDIF_RX_I2S_OUT=0
#-DAUDIO_CLASS=1
-DXUA_USB_EN=1
-DNUM_USB_CHAN_IN=2
-DNUM_USB_CHAN_OUT=8
-DNUM_USB_CHAN_OUT_FS=2
-DXUA_USE_SW_PLL=0
-DOUT_VOLUME_IN_MIXER=0
-DBR_UAC2=1
#-fxscope
#-DXSCOPE
-DXUA_DFU_EN=1
-DSTREAM_FORMAT_OUTPUT_1_RESOLUTION_BITS=32
-DOUTPUT_FORMAT_COUNT=1
-DSTREAM_FORMAT_INPUT_1_RESOLUTION_BITS=32
-DINPUT_FORMAT_COUNT=1
-DMCLK_441=\(1024*44100\)
-DMCLK_48=\(1024*48000\)
-DMAX_FREQ=\(48000\)
-DMIN_FREQ=\(48000\)
-DDEFAULT_FREQ=\(48000\)
-DUAC1=1
-DTHREE_AUDIO=1
#-lxmos_fps
-DHID_CONTROLS=1
-DBR_ALGO=1
-lbr
-DEQ_EN=1
-DDNR_50MS=1
-ldnr_50ms
#-DDEBUG_MEMORY_LOG_ENABLED=1
-DNO_LOG_TIMESTAPS=0
-DI2S_CHANS_ADC=2)
#set(APP_COMPILER_FLAGS_fps_uac2 ${SW_USB_AUDIO_FLAGS} -DXUA_SPDIF_RX_EN=0
# -DXUA_SPDIF_TX_EN=0
# -DI2S_CHANS_DAC=2
# -DSPDIF_RX_I2S_OUT=0
# #-DAUDIO_CLASS=1
# -DXUA_USB_EN=1
# -DNUM_USB_CHAN_IN=2
# -DWINDOWS_OS_DESCRIPTOR_SUPPORT
# -DNUM_USB_CHAN_IN_FS=2
# -DNUM_USB_CHAN_OUT=2
# -DNUM_USB_CHAN_OUT_FS=2
# -DXUA_USE_SW_PLL=0
# -DOUT_VOLUME_IN_MIXER=0
# -DFPS_UAC2=1
# #-fxscope
# #-DXSCOPE
# -DXUA_DFU_EN=1
# -DSTREAM_FORMAT_OUTPUT_1_RESOLUTION_BITS=32
# -DOUTPUT_FORMAT_COUNT=1
# -DSTREAM_FORMAT_INPUT_1_RESOLUTION_BITS=32
# -DINPUT_FORMAT_COUNT=1
# -DMCLK_441=\(1024*44100\)
# -DMCLK_48=\(1024*48000\)
# -DMAX_FREQ=\(48000\)
# -DMIN_FREQ=\(48000\)
# -DDEFAULT_FREQ=\(48000\)
# -lxmos_fps
# #-DHID_CONTROLS_UAC1=1
# -DEQ_EN=1
# -DXMOS_FPS_EN=1
# -DUAC1=1
# -DHID_CONTROLS=1
# -DDNR_50MS=1
# -ldnr_50ms
# #-DDEBUG_MEMORY_LOG_ENABLED=1
# -DNO_LOG_TIMESTAPS=0
# -DI2S_CHANS_ADC=2)
#
#set(APP_COMPILER_FLAGS_br_uac2 ${SW_USB_AUDIO_FLAGS}
# -DXUA_SPDIF_RX_EN=0
# -DXUA_SPDIF_TX_EN=0
# -DI2S_CHANS_DAC=2
# -DSPDIF_RX_I2S_OUT=0
# #-DAUDIO_CLASS=1
# -DXUA_USB_EN=1
# -DNUM_USB_CHAN_IN=2
# -DNUM_USB_CHAN_OUT=8
# -DNUM_USB_CHAN_OUT_FS=2
# -DXUA_USE_SW_PLL=0
# -DOUT_VOLUME_IN_MIXER=0
# -DBR_UAC2=1
# #-fxscope
# #-DXSCOPE
# -DXUA_DFU_EN=1
# -DSTREAM_FORMAT_OUTPUT_1_RESOLUTION_BITS=32
# -DOUTPUT_FORMAT_COUNT=1
# -DSTREAM_FORMAT_INPUT_1_RESOLUTION_BITS=32
# -DINPUT_FORMAT_COUNT=1
# -DMCLK_441=\(1024*44100\)
# -DMCLK_48=\(1024*48000\)
# -DMAX_FREQ=\(48000\)
# -DMIN_FREQ=\(48000\)
# -DDEFAULT_FREQ=\(48000\)
# -DUAC1=1
# -DTHREE_AUDIO=1
# #-lxmos_fps
# -DHID_CONTROLS=1
# -DBR_ALGO=1
# -lbr
# -DEQ_EN=1
# -DDNR_50MS=1
# -ldnr_50ms
# #-DDEBUG_MEMORY_LOG_ENABLED=1
# -DNO_LOG_TIMESTAPS=0
# -DI2S_CHANS_ADC=2)

View File

@@ -1 +1 @@
xflash bin/factory/phaten_module_factory.xe --loader loader.o --upgrade 2 bin/fps_uac1/phaten_module_fps_uac1.xe --upgrade 1 bin/fps_uac2/phaten_module_fps_uac2.xe --upgrade 6 ../app_usb_aud_fosi_c1_lp/bin/bypass_uac2/phaten_module_bypass_uac2.xe -o %1
xflash bin/factory/phaten_module_factory.xe --loader loader.o --upgrade 6 bin/fps_uac1/phaten_module_fps_uac1.xe --upgrade 2 ../app_usb_aud_fosi_c1_lp/bin/bypass_uac1/phaten_module_bypass_uac1.xe -o %1

View File

@@ -1 +1 @@
xflash --factory-version 15.3 --target-file src/core/xu316_qf60.xn --upgrade 2 bin/fps_uac1/phaten_module_fps_uac1.xe --upgrade 1 bin/fps_uac2/phaten_module_fps_uac2.xe --upgrade 6 ../app_usb_aud_fosi_c1_lp/bin/bypass_uac2/phaten_module_bypass_uac2.xe -o %1
xflash --factory-version 15.3 --target-file src/core/xu316_qf60.xn --upgrade 6 bin/fps_uac1/phaten_module_fps_uac1.xe --upgrade 2 ../app_usb_aud_fosi_c1_lp/bin/bypass_uac1/phaten_module_bypass_uac1.xe -o %1

View File

@@ -34,11 +34,11 @@ extern "C" {
#define DISABLE_REBOOT 1
#define MODE_FPS_UAC2 COAX_IN_FLAG // 1 FPS
#define MODE_FPS_UAC1 USB_IN_FLAG // 2 UAC1
#define MODE_BYPASS_UAC1 USB_IN_FLAG // 2 BYPASS
#define MODE_BR_UAC2 OPT_IN_FLAG // 3 BR
#define MODE_V71_UAC2 UAC1_IN_FLAG // 4 V71
#define MODE_V71_UAC1 BT_IN_FLAG // 5 UAC1
#define MODE_BYPASS_UAC2 I2S_IN_FLAG // 6 BYPASS
#define MODE_FPS_UAC1 I2S_IN_FLAG // 6 UAC1
extern unsigned g_host_os; // 1 -> Windows, 2 -> Others
audio_sampling g_new_playback_format, g_playback_format;
@@ -184,8 +184,8 @@ void switch_mode_by_c1_mode(unsigned c1_mode, unsigned force_reboot)
switch (c1_mode)
{
case 1:
#if !BYPASS_UAC2
SetRoleSwitchFlag(MODE_BYPASS_UAC2);
#if !BYPASS_UAC1
SetRoleSwitchFlag(MODE_BYPASS_UAC1);
reboot_need = 1;
#endif
break;
@@ -218,8 +218,8 @@ void switch_mode_by_c1_mode(unsigned c1_mode, unsigned force_reboot)
switch (c1_mode)
{
case 1:
SetRoleSwitchFlag(MODE_FPS_UAC1);
reboot_need = 0;
SetRoleSwitchFlag(MODE_BYPASS_UAC1);
reboot_need = 1;
break;
case 2:
SetRoleSwitchFlag(MODE_V71_UAC1);
@@ -242,6 +242,8 @@ void switch_mode_by_c1_mode(unsigned c1_mode, unsigned force_reboot)
if (reboot_need || force_reboot)
{
delay_milliseconds(20);
debug_printf("switch_mode_by_c1_mode: reboot_need = %d, force_reboot = %d\n", reboot_need, force_reboot);
debug_printf("switch_mode_by_c1_mode: c1_mode = %d\n", c1_mode);
device_reboot();
while (1);
}
@@ -568,7 +570,7 @@ void AudioHwRemote2(streaming chanend c, client interface i2c_master_if i2c, cli
}
#if defined(WIN_OS_DETECTION)
#if 0// defined(WIN_OS_DETECTION)
for(int i = 0; i < 500; i++)
{
GET_SHARED_GLOBAL(host_os, g_host_os);
@@ -588,6 +590,7 @@ void AudioHwRemote2(streaming chanend c, client interface i2c_master_if i2c, cli
switch_mode_by_c1_mode(c1_mode, 0);
}
#endif
switch_mode_by_c1_mode(c1_mode, 0);
// 改动原因:开机从 LittleFS 恢复 DAC 音量寄存器码;无效或未写过时用最大音量 C1_DAC_VOL_MAX避免误用默认值或垃圾数据。

View File

@@ -479,7 +479,7 @@ static inline int32_t apply_gain(int32_t sample, int32_t gain_db) {
* 改动原因所有采样率共用44100Hz数组参数相同只需要设置sample_rate标记
* 系数会根据采样率动态计算,不需要复制参数
*/
#if !UAC1
#if 1// !UAC1
static int copy_params_from_44100(uint32_t sample_rate, uint8_t mode) {
if (mode >= NUM_EQ_MODES) {
debug_printf("Error: Invalid mode %d in copy_params_from_44100\n", mode);
@@ -698,7 +698,7 @@ unsigned int is_eq_disabled(void)
}
void clear_eq_status(unsigned sample_freq, unsigned ch_no) {
#if !UAC1
#if 1// !UAC1
int n;
debug_printf("clear_eq_status %d %d\n", sample_freq, ch_no);
if(is_eq_disabled())
@@ -720,7 +720,7 @@ void clear_eq_status(unsigned sample_freq, unsigned ch_no) {
// 复位EQ参数函数
uint8_t reset_eq_params(uint8_t mode) {
debug_printf("Resetting EQ params for mode %d\n", mode);
#if !UAC1
#if 1 //!UAC1
// 检查模式号有效性
if (mode != 0xFF && mode >= NUM_EQ_MODES) {
debug_printf("Error: Invalid mode %d\n", mode);
@@ -882,7 +882,7 @@ void debug_print_eq_mode(eq_mode_data_t *eq_data) {
int32_t handler_eq_filter(unsigned sample_freq, uint32_t ch, int32_t new_sample) {
int32_t temp_sample = new_sample;
#if !UAC1
#if 1// !UAC1
if(is_eq_disabled())
{
@@ -1109,7 +1109,7 @@ unsigned char process_send_params(uint8_t data[], uint16_t len) {
return false;
}
#if !UAC1
#if 1// !UAC1
// Process read request (0x8E) - GET_EQ_PARAMS
if (data[1] == 0x8E) {
debug_printf("Received read request (GET_EQ_PARAMS)\n");
@@ -1685,7 +1685,7 @@ unsigned char process_send_params(uint8_t data[], uint16_t len) {
if (data[1] == 0x8d)
{
#if !UAC1
#if 1// !UAC1
debug_printf("Received set EQ filter parameters command (SET_EQ_PARAMS)\n");
// Get mode value (跳过report_id字节)
@@ -2010,7 +2010,7 @@ uint8_t process_uart_set_eq_mode(uint8_t mode)
*/
uint8_t process_uart_get_eq_mode(uint8_t *response, uint8_t response_size)
{
#if !UAC1
#if 1 //!UAC1
if (response_size < 22) {
debug_printf("Response buffer too small\n");
return 0;
@@ -2067,7 +2067,7 @@ uint8_t process_uart_get_eq_mode(uint8_t *response, uint8_t response_size)
*/
uint8_t process_uart_set_mode_gain_and_name(uint8_t *data)
{
#if !UAC1
#if 1// !UAC1
uint8_t mode = data[5]; // 串口数据位置
int32_t gain = (data[9] << 24) | (data[8] << 16) | (data[7] << 8) | data[6]; // 小端序
char mode_name[16] = {0};
@@ -2169,7 +2169,7 @@ uint8_t process_uart_set_mode_gain_and_name(uint8_t *data)
uint8_t process_uart_set_eq_params(uint8_t *data)
{
uint8_t result = 0x00;
#if !UAC1
#if 1// !UAC1
uint8_t mode = data[5]; // 模式值
uint8_t band_index = data[6]; // 滤波器索引
uint8_t filter_type = data[7]; // 滤波器类型
@@ -2240,7 +2240,7 @@ uint8_t process_uart_set_eq_params(uint8_t *data)
*/
uint8_t process_uart_get_eq_params(uint8_t *data, uint8_t *response, uint8_t response_size)
{
#if !UAC1
#if 1// !UAC1
if (response_size < 27) {
debug_printf("Response buffer too small\n");
return 0;

View File

@@ -97,8 +97,8 @@ set(APP_COMPILER_FLAGS_factory ${SW_FACT_AUDIO_FLAGS} -DI2S_CHANS_DA
-DSTREAM_FORMAT_OUTPUT_1_RESOLUTION_BITS=32
-DOUTPUT_FORMAT_COUNT=1
-DXUA_SPDIF_TX_EN=0
-DMAX_FREQ=\(768000\)
-DMIN_FREQ=\(44100\)
-DMAX_FREQ=\(48000\)
-DMIN_FREQ=\(48000\)
-DDEFAULT_FREQ=\(48000\)
-DUART_DEBUG=0
-DHID_CONTROLS=1
@@ -108,11 +108,11 @@ set(APP_COMPILER_FLAGS_factory ${SW_FACT_AUDIO_FLAGS} -DI2S_CHANS_DA
-DNUM_USB_CHAN_OUT=2
-DI2S_CHANS_ADC=0)
set(APP_COMPILER_FLAGS_bypass_uac2 ${SW_USB_AUDIO_FLAGS} -DXUA_SPDIF_RX_EN=0
set(APP_COMPILER_FLAGS_bypass_uac1 ${SW_USB_AUDIO_FLAGS} -DXUA_SPDIF_RX_EN=0
-DXUA_SPDIF_TX_EN=0
-DI2S_CHANS_DAC=2
-DSPDIF_RX_I2S_OUT=0
#-DAUDIO_CLASS=1
-DAUDIO_CLASS=1
-DXUA_USB_EN=1
-DNUM_USB_CHAN_IN=2
-DWINDOWS_OS_DESCRIPTOR_SUPPORT
@@ -121,34 +121,73 @@ set(APP_COMPILER_FLAGS_bypass_uac2 ${SW_USB_AUDIO_FLAGS} -DXUA_SPDIF_RX
-DNUM_USB_CHAN_OUT_FS=2
-DXUA_USE_SW_PLL=0
-DOUT_VOLUME_IN_MIXER=0
-DBYPASS_UAC2=1
-DBYPASS_UAC1=1
#-fxscope
#-DXSCOPE
-DXUA_DFU_EN=1
-DSTREAM_FORMAT_OUTPUT_1_RESOLUTION_BITS=32
-DSTREAM_FORMAT_OUTPUT_1_RESOLUTION_BITS=24
-DOUTPUT_FORMAT_COUNT=1
-DSTREAM_FORMAT_INPUT_1_RESOLUTION_BITS=32
-DSTREAM_FORMAT_INPUT_1_RESOLUTION_BITS=24
-DINPUT_FORMAT_COUNT=1
-DMCLK_441=\(1024*44100\)
-DMCLK_48=\(1024*48000\)
-DMAX_FREQ=\(48000\)
-DMIN_FREQ=\(48000\)
-DDEFAULT_FREQ=\(48000\)
#-lxmos_fps
#-DHID_CONTROLS_UAC1=1
-DEQ_EN=0
-DHID_CONTROLS_UAC1=1
#-DEQ_EN=1
-DXMOS_FPS_EN=0
-DUAC1=1
-DHID_CONTROLS=1
-DDNR_50MS=1
-DLOW_POWER_EN=1
-DCHAN_BUFF_CTRL=1
-DXUD_PRIORITY_HIGH=1
-ldnr_50ms
#-DDEBUG_MEMORY_LOG_ENABLED=1
#-DDNR_50MS=1
#-DLOW_POWER_EN=1
#-DCHAN_BUFF_CTRL=1
#-DXUD_PRIORITY_HIGH=1
#-ldnr_50ms
-DDEBUG_MEMORY_LOG_ENABLED=1
-DNO_LOG_TIMESTAPS=0
-DI2S_CHANS_ADC=2)
#set(APP_COMPILER_FLAGS_bypass_uac2 ${SW_USB_AUDIO_FLAGS} -DXUA_SPDIF_RX_EN=0
# -DXUA_SPDIF_TX_EN=0
# -DI2S_CHANS_DAC=2
# -DSPDIF_RX_I2S_OUT=0
# -DXUA_USB_EN=1
# -DNUM_USB_CHAN_IN=2
# -DWINDOWS_OS_DESCRIPTOR_SUPPORT
# -DNUM_USB_CHAN_IN_FS=2
# -DNUM_USB_CHAN_OUT=2
# -DNUM_USB_CHAN_OUT_FS=2
# -DXUA_USE_SW_PLL=0
# -DOUT_VOLUME_IN_MIXER=0
# -DBYPASS_UAC2=1
# #-fxscope
# #-DXSCOPE
# -DXUA_DFU_EN=1
# -DSTREAM_FORMAT_OUTPUT_1_RESOLUTION_BITS=32
# -DOUTPUT_FORMAT_COUNT=1
# -DSTREAM_FORMAT_INPUT_1_RESOLUTION_BITS=32
# -DINPUT_FORMAT_COUNT=1
# -DMCLK_441=\(1024*44100\)
# -DMCLK_48=\(1024*48000\)
# -DMAX_FREQ=\(48000\)
# -DMIN_FREQ=\(48000\)
# -DDEFAULT_FREQ=\(48000\)
# #-lxmos_fps
# #-DHID_CONTROLS_UAC1=1
# -DEQ_EN=0
# -DXMOS_FPS_EN=0
# -DUAC1=1
# -DHID_CONTROLS=1
# -DDNR_50MS=1
# -DLOW_POWER_EN=1
# -DCHAN_BUFF_CTRL=1
# -DXUD_PRIORITY_HIGH=1
# -ldnr_50ms
# #-DDEBUG_MEMORY_LOG_ENABLED=1
# -DNO_LOG_TIMESTAPS=0
# -DI2S_CHANS_ADC=2)
set(APP_INCLUDES src src/core src/extensions ../shared/)
set(XMOS_SANDBOX_DIR ${CMAKE_CURRENT_LIST_DIR}/../..)
link_directories("${CMAKE_CURRENT_LIST_DIR}/src/extensions/dnr/")

View File

@@ -1 +0,0 @@
xflash bin/factory/phaten_module_factory.xe --loader loader.o --upgrade 2 bin/fps_uac1/phaten_module_fps_uac1.xe --upgrade 1 bin/fps_uac2/phaten_module_fps_uac2.xe --upgrade 6 ../app_usb_aud_fosi_c1_lp/bin/bypass_uac2/phaten_module_bypass_uac2.xe -o %1

View File

@@ -1 +0,0 @@
xflash --factory-version 15.3 --target-file src/core/xu316_qf60.xn --upgrade 2 bin/fps_uac1/phaten_module_fps_uac1.xe --upgrade 1 bin/fps_uac2/phaten_module_fps_uac2.xe --upgrade 6 ../app_usb_aud_fosi_c1_lp/bin/bypass_uac2/phaten_module_bypass_uac2.xe -o %1

View File

@@ -34,11 +34,11 @@ extern "C" {
#define DISABLE_REBOOT 1
#define MODE_FPS_UAC2 COAX_IN_FLAG // 1 FPS
#define MODE_FPS_UAC1 USB_IN_FLAG // 2 UAC1
#define MODE_BYPASS_UAC1 USB_IN_FLAG // 2 BYPASS
#define MODE_BR_UAC2 OPT_IN_FLAG // 3 BR
#define MODE_V71_UAC2 UAC1_IN_FLAG // 4 V71
#define MODE_V71_UAC1 BT_IN_FLAG // 5 UAC1
#define MODE_BYPASS_UAC2 I2S_IN_FLAG // 6 BYPASS
#define MODE_FPS_UAC1 I2S_IN_FLAG // 6 UAC1
extern unsigned g_host_os; // 1 -> Windows, 2 -> Others
audio_sampling g_new_playback_format, g_playback_format;
@@ -184,8 +184,8 @@ void switch_mode_by_c1_mode(unsigned c1_mode, unsigned force_reboot)
switch (c1_mode)
{
case 1:
#if !BYPASS_UAC2
SetRoleSwitchFlag(MODE_BYPASS_UAC2);
#if !BYPASS_UAC1
SetRoleSwitchFlag(MODE_BYPASS_UAC1);
reboot_need = 1;
#endif
break;
@@ -218,8 +218,8 @@ void switch_mode_by_c1_mode(unsigned c1_mode, unsigned force_reboot)
switch (c1_mode)
{
case 1:
SetRoleSwitchFlag(MODE_FPS_UAC1);
reboot_need = 0;
SetRoleSwitchFlag(MODE_BYPASS_UAC1);
reboot_need = 1;
break;
case 2:
SetRoleSwitchFlag(MODE_V71_UAC1);
@@ -242,8 +242,10 @@ void switch_mode_by_c1_mode(unsigned c1_mode, unsigned force_reboot)
if (reboot_need || force_reboot)
{
delay_milliseconds(20);
device_reboot();
while (1);
debug_printf("switch_mode_by_c1_mode: reboot_need = %d, force_reboot = %d\n", reboot_need, force_reboot);
debug_printf("switch_mode_by_c1_mode: c1_mode = %d\n", c1_mode);
// device_reboot();
// while (1);
}
}
@@ -489,7 +491,7 @@ void save_value(unsigned char * unsafe path, unsigned char value);
unsigned char load_value(unsigned char * unsafe path);
#define C1_MODE_INFO_PATH "c1_mode"
/* 改动原因c_dfu 仅接收 FIRMWARE_UPGRADE_START在此线程执行 handle_firmware_upgrade_start */
void AudioHwRemote2(streaming chanend c, client interface i2c_master_if i2c, client interface c1_led_ctrl_if i_c1_led_ctrl, chanend c_erase, streaming chanend c_dfu)
void AudioHwRemote2(streaming chanend c, client interface i2c_master_if i2c, client interface c1_led_ctrl_if i_c1_led_ctrl, streaming chanend c_dfu)
{
unsigned cmd;
int value;
@@ -557,6 +559,9 @@ void AudioHwRemote2(streaming chanend c, client interface i2c_master_if i2c, cli
firmware_upgrade_init();
#endif
debug_printf("AudioHwRemote2: c1_mode = %d\n", c1_mode);
// 改动原因:上电归一 c1_mode含停用档 2/3→4与按键循环 1/4/5 一致并写回 Flash。
{
unsigned c1_mode_corrected = c1_mode_sanitize(c1_mode);
@@ -568,7 +573,7 @@ void AudioHwRemote2(streaming chanend c, client interface i2c_master_if i2c, cli
}
#if defined(WIN_OS_DETECTION)
#if 0 // defined(WIN_OS_DETECTION)
for(int i = 0; i < 500; i++)
{
GET_SHARED_GLOBAL(host_os, g_host_os);
@@ -588,6 +593,7 @@ void AudioHwRemote2(streaming chanend c, client interface i2c_master_if i2c, cli
switch_mode_by_c1_mode(c1_mode, 0);
}
#endif
switch_mode_by_c1_mode(c1_mode, 0);
// 改动原因:开机从 LittleFS 恢复 DAC 音量寄存器码;无效或未写过时用最大音量 C1_DAC_VOL_MAX避免误用默认值或垃圾数据。
@@ -1553,14 +1559,14 @@ void flag_handler()
}
void AudioHwRemote(streaming chanend c, client interface c1_led_ctrl_if i_c1_led_ctrl, chanend c_erase, streaming chanend c_dfu)
void AudioHwRemote(streaming chanend c, client interface c1_led_ctrl_if i_c1_led_ctrl, streaming chanend c_dfu)
{
i2c_master_if i2c[1];
par
{
i2c_master(i2c, 1, p_scl, p_sda, 100);
AudioHwRemote2(c, i2c[0], i_c1_led_ctrl, c_erase, c_dfu);
AudioHwRemote2(c, i2c[0], i_c1_led_ctrl, c_dfu);
}
}

View File

@@ -16,6 +16,10 @@
#include "aizip_dnr.h"
#include "debug_print.h"
#include "flash.h"
#include "swlock.h"
// Global flash lock defined in lfs_services.c — protects all flash hardware access
extern swlock_t flash_lock;
//for AGC
//static agc_stage_ctx_t DWORD_ALIGNED agc_stage_state = {};
@@ -80,7 +84,9 @@ void Aizip_DNR_init(void)
delay_microseconds(10000);
// setFlashPortPins(XS1_PORT_1B,XS1_PORT_1C,XS1_PORT_4B, XS1_CLKBLK_3);
swlock_acquire(&flash_lock);
int sta = AI_DNR_init(&pram);
swlock_release(&flash_lock);
dnr_init_flag = 1;
debug_printf("AI_DNR_init status %d\n", sta);
}

View File

@@ -34,7 +34,7 @@ unsigned g_log_switch = 0;
#include <stdint.h>
#include <stdbool.h>
#include <string.h>
#if !UAC1
#if 1// !UAC1
#include "eq_params_44100.h"
// 改动原因进一步优化EQ参数存储策略所有采样率共用44100Hz数组
@@ -479,7 +479,7 @@ static inline int32_t apply_gain(int32_t sample, int32_t gain_db) {
* 改动原因所有采样率共用44100Hz数组参数相同只需要设置sample_rate标记
* 系数会根据采样率动态计算,不需要复制参数
*/
#if !UAC1
#if 1// !UAC1
static int copy_params_from_44100(uint32_t sample_rate, uint8_t mode) {
if (mode >= NUM_EQ_MODES) {
debug_printf("Error: Invalid mode %d in copy_params_from_44100\n", mode);
@@ -698,7 +698,7 @@ unsigned int is_eq_disabled(void)
}
void clear_eq_status(unsigned sample_freq, unsigned ch_no) {
#if !UAC1
#if 1// !UAC1
int n;
debug_printf("clear_eq_status %d %d\n", sample_freq, ch_no);
if(is_eq_disabled())
@@ -720,7 +720,7 @@ void clear_eq_status(unsigned sample_freq, unsigned ch_no) {
// 复位EQ参数函数
uint8_t reset_eq_params(uint8_t mode) {
debug_printf("Resetting EQ params for mode %d\n", mode);
#if !UAC1
#if 1 //!UAC1
// 检查模式号有效性
if (mode != 0xFF && mode >= NUM_EQ_MODES) {
debug_printf("Error: Invalid mode %d\n", mode);
@@ -882,7 +882,7 @@ void debug_print_eq_mode(eq_mode_data_t *eq_data) {
int32_t handler_eq_filter(unsigned sample_freq, uint32_t ch, int32_t new_sample) {
int32_t temp_sample = new_sample;
#if !UAC1
#if 1// !UAC1
if(is_eq_disabled())
{
@@ -1109,7 +1109,7 @@ unsigned char process_send_params(uint8_t data[], uint16_t len) {
return false;
}
#if !UAC1
#if 1// !UAC1
// Process read request (0x8E) - GET_EQ_PARAMS
if (data[1] == 0x8E) {
debug_printf("Received read request (GET_EQ_PARAMS)\n");
@@ -1685,7 +1685,7 @@ unsigned char process_send_params(uint8_t data[], uint16_t len) {
if (data[1] == 0x8d)
{
#if !UAC1
#if 1// !UAC1
debug_printf("Received set EQ filter parameters command (SET_EQ_PARAMS)\n");
// Get mode value (跳过report_id字节)
@@ -2010,7 +2010,7 @@ uint8_t process_uart_set_eq_mode(uint8_t mode)
*/
uint8_t process_uart_get_eq_mode(uint8_t *response, uint8_t response_size)
{
#if !UAC1
#if 1 //!UAC1
if (response_size < 22) {
debug_printf("Response buffer too small\n");
return 0;
@@ -2067,7 +2067,7 @@ uint8_t process_uart_get_eq_mode(uint8_t *response, uint8_t response_size)
*/
uint8_t process_uart_set_mode_gain_and_name(uint8_t *data)
{
#if !UAC1
#if 1// !UAC1
uint8_t mode = data[5]; // 串口数据位置
int32_t gain = (data[9] << 24) | (data[8] << 16) | (data[7] << 8) | data[6]; // 小端序
char mode_name[16] = {0};
@@ -2169,7 +2169,7 @@ uint8_t process_uart_set_mode_gain_and_name(uint8_t *data)
uint8_t process_uart_set_eq_params(uint8_t *data)
{
uint8_t result = 0x00;
#if !UAC1
#if 1// !UAC1
uint8_t mode = data[5]; // 模式值
uint8_t band_index = data[6]; // 滤波器索引
uint8_t filter_type = data[7]; // 滤波器类型
@@ -2240,7 +2240,7 @@ uint8_t process_uart_set_eq_params(uint8_t *data)
*/
uint8_t process_uart_get_eq_params(uint8_t *data, uint8_t *response, uint8_t response_size)
{
#if !UAC1
#if 1// !UAC1
if (response_size < 27) {
debug_printf("Response buffer too small\n");
return 0;

View File

@@ -73,37 +73,6 @@ extern unsigned g_adc_loop;
void unmute_dac(void);
inline unsigned is_silence(const unsigned samps[], int len)
{
// -30dB阈值20*log10(threshold/max_value) = -30
// threshold = max_value * 10^(-30/20) = max_value * 0.0316
// 对于32位有符号整数max_value = 2^31-1 ≈ 0x7FFFFFFF
// threshold ≈ 0x7FFFFFFF * 0.0316 ≈ 0x04000000
const unsigned int SILENCE_THRESHOLD = 0x10945; // -90db 0x20c49b; // 0x30000; // 0x0246b4e3; -35 // 0x04000000; // 约-30dB
for (int i = 0; i < len; ++i) {
// 正确的绝对值计算:使用条件运算符
unsigned int abs_val;
if (samps[i] & 0x80000000) {
// 负数取反加1
abs_val = ~samps[i] + 1;
} else {
// 正数:直接使用
abs_val = samps[i];
}
// 检查是否超过静音阈值
if (abs_val > SILENCE_THRESHOLD) {
//static int count = 0;
//count++;
// if (count % 1000000 == 0)
// debug_printf("abs_val %08x, %08x\n", abs_val, samps[i]);
return 0; // 不是静音
}
}
return 1; // 是静音
}
void UserBufferManagement(unsigned sampsFromUsbToAudio[], unsigned sampsFromAudioToUsb[])
{
unsigned dnr_enable = 0;

View File

@@ -17,11 +17,7 @@ interface c1_led_ctrl_if {
void switch_handler(void);
void flag_handler();
/* 改动原因:固件升级 START 在 AudioHwRemote2 处理,需传入 c_dfu其余升级命令在 process_send_params 直接处理 */
void AudioHwRemote(streaming chanend c, client interface c1_led_ctrl_if i_c1_led_ctrl, chanend c_erase, streaming chanend c_dfu);
void uart_handler(streaming chanend c_tx, streaming chanend c_rx);
void uart_tx_handler(streaming chanend c_tx);
void uart_rx_handler(streaming chanend c_rx);
void i2s_driver(chanend c);
void AudioHwRemote(streaming chanend c, client interface c1_led_ctrl_if i_c1_led_ctrl, streaming chanend c_dfu);
extern unsafe chanend uc_i2s;
extern unsafe chanend uc_br_data;
extern unsafe chanend uc_eq_data;
@@ -38,11 +34,9 @@ extern unsafe streaming chanend uc_dfu;
extern void fps1_dsp_proc_task(void);
extern void fps2_dsp_proc_task(void);
#define USER_MAIN_DECLARATIONS streaming chan c_rx; streaming chan c_tx; \
chan c_i2s; chan c_data_transport, cc_br_eof, c_eq_data, c_validate; \
#define USER_MAIN_DECLARATIONS chan c_data_transport, cc_br_eof, c_eq_data, c_validate; \
streaming chan c_audiohw; streaming chan c_dfu; interface c1_led_ctrl_if i_c1_led_ctrl; \
chan c_usb_to_io; chan c_io_to_usb; chan c_io_to_dspL; chan c_dspL_to_io; chan c_io_to_dspR; chan c_dspR_to_io; \
chan c_erase;
@@ -50,11 +44,10 @@ extern void fps2_dsp_proc_task(void);
unsafe { \
uc_audiohw = (chanend) c_audiohw;\
uc_dfu = (chanend) c_dfu;\
dsp_core0();\
} \
}\
on tile[0]: {\
AudioHwRemote(c_audiohw, i_c1_led_ctrl, c_erase, c_dfu);\
AudioHwRemote(c_audiohw, i_c1_led_ctrl, c_dfu);\
}\
on tile[1]: app_control_slave(i_c1_led_ctrl, c_eq_data); \
\