update mode switch

This commit is contained in:
Steven Dan
2026-05-22 14:14:05 +08:00
parent 0dbe01a0bc
commit bba34bbcd5
5 changed files with 67 additions and 54 deletions

View File

@@ -122,12 +122,11 @@ set(APP_COMPILER_FLAGS_fps_uac1 ${SW_USB_AUDIO_FLAGS} -DXUA_SPDIF_RX
-DXUA_USE_SW_PLL=0 -DXUA_USE_SW_PLL=0
-DOUT_VOLUME_IN_MIXER=0 -DOUT_VOLUME_IN_MIXER=0
-DFPS_UAC1=1 -DFPS_UAC1=1
#-fxscope -DUAC1_MODE=1
#-DXSCOPE
-DXUA_DFU_EN=0 -DXUA_DFU_EN=0
-DSTREAM_FORMAT_OUTPUT_1_RESOLUTION_BITS=32 -DSTREAM_FORMAT_OUTPUT_1_RESOLUTION_BITS=24
-DOUTPUT_FORMAT_COUNT=1 -DOUTPUT_FORMAT_COUNT=1
-DSTREAM_FORMAT_INPUT_1_RESOLUTION_BITS=32 -DSTREAM_FORMAT_INPUT_1_RESOLUTION_BITS=24
-DINPUT_FORMAT_COUNT=1 -DINPUT_FORMAT_COUNT=1
-DMCLK_441=\(1024*44100\) -DMCLK_441=\(1024*44100\)
-DMCLK_48=\(1024*48000\) -DMCLK_48=\(1024*48000\)
@@ -140,10 +139,13 @@ set(APP_COMPILER_FLAGS_fps_uac1 ${SW_USB_AUDIO_FLAGS} -DXUA_SPDIF_RX
-DXMOS_FPS_EN=1 -DXMOS_FPS_EN=1
-DUAC1=1 -DUAC1=1
-DWIN_OS_DETECTION=1 -DWIN_OS_DETECTION=1
#-DLOW_POWER_EN=1
-DCHAN_BUFF_CTRL=1
-DXUD_PRIORITY_HIGH=1
-DHID_CONTROLS=1 -DHID_CONTROLS=1
-DDNR_50MS=1 -DDNR_50MS=1
-ldnr_50ms -ldnr_50ms
#-DDEBUG_MEMORY_LOG_ENABLED=1 -DDEBUG_MEMORY_LOG_ENABLED=1
-DNO_LOG_TIMESTAPS=0 -DNO_LOG_TIMESTAPS=0
-DI2S_CHANS_ADC=2) -DI2S_CHANS_ADC=2)

View File

@@ -218,8 +218,10 @@ void switch_mode_by_c1_mode(unsigned c1_mode, unsigned force_reboot)
switch (c1_mode) switch (c1_mode)
{ {
case 1: case 1:
#if !BYPASS_UAC1
SetRoleSwitchFlag(MODE_BYPASS_UAC1); SetRoleSwitchFlag(MODE_BYPASS_UAC1);
reboot_need = 1; reboot_need = 0;
#endif
break; break;
case 2: case 2:
SetRoleSwitchFlag(MODE_V71_UAC1); SetRoleSwitchFlag(MODE_V71_UAC1);
@@ -230,20 +232,25 @@ void switch_mode_by_c1_mode(unsigned c1_mode, unsigned force_reboot)
reboot_need = 0; reboot_need = 0;
break; break;
case 4: case 4:
#if !FPS_UAC1
SetRoleSwitchFlag(MODE_FPS_UAC1); SetRoleSwitchFlag(MODE_FPS_UAC1);
reboot_need = 1; reboot_need = 1;
#endif
break; break;
case 5: case 5:
SetRoleSwitchFlag(MODE_FPS_UAC1); #if !BYPASS_UAC1
reboot_need = 0; SetRoleSwitchFlag(MODE_BYPASS_UAC1);
reboot_need = 1;
#endif
break; break;
} }
#endif #endif
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: reboot_need = %d, force_reboot = %d\n", reboot_need, force_reboot);
debug_printf("switch_mode_by_c1_mode: c1_mode = %d\n", c1_mode); debug_printf("switch_mode_by_c1_mode: c1_mode = %d\n", c1_mode);
if (reboot_need || force_reboot)
{
delay_milliseconds(200);
device_reboot(); device_reboot();
while (1); while (1);
} }
@@ -1992,7 +1999,7 @@ static inline void apply_c1_panel_leds(unsigned mode_led_color_idx, unsigned mic
p_mic_mute_led_blue <: 1; p_mic_mute_led_blue <: 1;
} }
void app_control_slave(server interface c1_led_ctrl_if i_c1_led_ctrl, chanend c_eq_data) void app_control_slave(server interface c1_led_ctrl_if i_c1_led_ctrl)
{ {
// 改动原因tile1 先于 tile0 运行,上电先把硬件灯全灭且不调用 apply避免用占位 mic/mode 组合误亮shadow 置为全灭电平便于首包 set_* 时 apply 与端口一致。 // 改动原因tile1 先于 tile0 运行,上电先把硬件灯全灭且不调用 apply避免用占位 mic/mode 组合误亮shadow 置为全灭电平便于首包 set_* 时 apply 与端口一致。
unsigned led_shadow = 0xF; unsigned led_shadow = 0xF;

View File

@@ -27,7 +27,7 @@ extern void UserBufferManagementSetChan(chanend c);
extern void dsp_main (chanend c_data , chanend cc_br_eof); extern void dsp_main (chanend c_data , chanend cc_br_eof);
extern void br_dsp_proc_task(chanend c_validate, chanend cc_br_eof); extern void br_dsp_proc_task(chanend c_validate, chanend cc_br_eof);
extern void validate_algo(chanend c_validate); extern void validate_algo(chanend c_validate);
void app_control_slave(server interface c1_led_ctrl_if i_c1_led_ctrl, chanend c_eq_data); void app_control_slave(server interface c1_led_ctrl_if i_c1_led_ctrl);
extern void dnr_dsp_proc_task(void); extern void dnr_dsp_proc_task(void);
extern void dsp_core0(void); extern void dsp_core0(void);
extern void eq_dsp_main(chanend c_data); extern void eq_dsp_main(chanend c_data);
@@ -36,7 +36,7 @@ extern unsafe streaming chanend uc_dfu;
extern void fps1_dsp_proc_task(void); extern void fps1_dsp_proc_task(void);
extern void fps2_dsp_proc_task(void); extern void fps2_dsp_proc_task(void);
#define USER_MAIN_DECLARATIONS 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_validate; \
streaming chan c_audiohw; streaming chan c_dfu; interface c1_led_ctrl_if i_c1_led_ctrl; \ 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_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; chan c_erase;
@@ -58,7 +58,7 @@ extern void fps2_dsp_proc_task(void);
dsp_core0();\ dsp_core0();\
} \ } \
\ \
on tile[1]: app_control_slave(i_c1_led_ctrl, c_eq_data); \ on tile[1]: app_control_slave(i_c1_led_ctrl); \
\ \
#else #else
@@ -69,8 +69,6 @@ extern void fps2_dsp_proc_task(void);
unsafe { \ unsafe { \
uc_audiohw = (chanend) c_audiohw;\ uc_audiohw = (chanend) c_audiohw;\
uc_br_data = (chanend) c_data_transport;\ uc_br_data = (chanend) c_data_transport;\
uc_i2s = (chanend) c_i2s;\
uc_eq_data = (chanend) c_eq_data;\
uc_dfu = (chanend) c_dfu;\ uc_dfu = (chanend) c_dfu;\
} \ } \
validate_algo(c_validate); \ validate_algo(c_validate); \
@@ -79,7 +77,7 @@ extern void fps2_dsp_proc_task(void);
AudioHwRemote(c_audiohw, i_c1_led_ctrl, c_erase, c_dfu);\ AudioHwRemote(c_audiohw, i_c1_led_ctrl, c_erase, c_dfu);\
}\ }\
on tile[1]: { br_dsp_proc_task(c_validate, cc_br_eof); } \ on tile[1]: { br_dsp_proc_task(c_validate, cc_br_eof); } \
on tile[1]: app_control_slave(i_c1_led_ctrl, c_eq_data); \ on tile[1]: app_control_slave(i_c1_led_ctrl); \
\ \
#endif #endif

View File

@@ -87,27 +87,27 @@ set(SW_FACT_AUDIO_FLAGS ${EXTRA_BUILD_FLAGS} ${SW_FACT_VERSION}
# BYTE2: Contains Input Channel Count, Output Channel Count, Other Config # BYTE2: Contains Input Channel Count, Output Channel Count, Other Config
# BYTE3: Reserved, currently set to 0 # BYTE3: Reserved, currently set to 0
set(APP_COMPILER_FLAGS_factory ${SW_FACT_AUDIO_FLAGS} -DI2S_CHANS_DAC=2 #set(APP_COMPILER_FLAGS_factory ${SW_FACT_AUDIO_FLAGS} -DI2S_CHANS_DAC=2
-DNUM_USB_CHAN_IN=0 # -DNUM_USB_CHAN_IN=0
-DXUA_DFU_EN=1 # -DXUA_DFU_EN=1
-DBOOT_MODE=1 # -DBOOT_MODE=1
-DFACT_MODE=1 # -DFACT_MODE=1
#-fxscope # #-fxscope
#-DXSCOPE # #-DXSCOPE
-DSTREAM_FORMAT_OUTPUT_1_RESOLUTION_BITS=32 # -DSTREAM_FORMAT_OUTPUT_1_RESOLUTION_BITS=32
-DOUTPUT_FORMAT_COUNT=1 # -DOUTPUT_FORMAT_COUNT=1
-DXUA_SPDIF_TX_EN=0 # -DXUA_SPDIF_TX_EN=0
-DMAX_FREQ=\(48000\) # -DMAX_FREQ=\(48000\)
-DMIN_FREQ=\(48000\) # -DMIN_FREQ=\(48000\)
-DDEFAULT_FREQ=\(48000\) # -DDEFAULT_FREQ=\(48000\)
-DUART_DEBUG=0 # -DUART_DEBUG=0
-DHID_CONTROLS=1 # -DHID_CONTROLS=1
-DEQ_EN=1 # -DEQ_EN=1
-DHID_DFU_EN=1 # -DHID_DFU_EN=1
#-DDEBUG_MEMORY_LOG_ENABLED=0 # #-DDEBUG_MEMORY_LOG_ENABLED=0
-DNUM_USB_CHAN_OUT=2 # -DNUM_USB_CHAN_OUT=2
-DI2S_CHANS_ADC=0) # -DI2S_CHANS_ADC=0)
#
set(APP_COMPILER_FLAGS_bypass_uac1 ${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 -DXUA_SPDIF_TX_EN=0
-DI2S_CHANS_DAC=2 -DI2S_CHANS_DAC=2
@@ -122,8 +122,7 @@ set(APP_COMPILER_FLAGS_bypass_uac1 ${SW_USB_AUDIO_FLAGS} -DXUA_SPDIF_RX
-DXUA_USE_SW_PLL=0 -DXUA_USE_SW_PLL=0
-DOUT_VOLUME_IN_MIXER=0 -DOUT_VOLUME_IN_MIXER=0
-DBYPASS_UAC1=1 -DBYPASS_UAC1=1
#-fxscope -DUAC1_MODE=1
#-DXSCOPE
-DXUA_DFU_EN=1 -DXUA_DFU_EN=1
-DSTREAM_FORMAT_OUTPUT_1_RESOLUTION_BITS=24 -DSTREAM_FORMAT_OUTPUT_1_RESOLUTION_BITS=24
-DOUTPUT_FORMAT_COUNT=1 -DOUTPUT_FORMAT_COUNT=1
@@ -135,15 +134,15 @@ set(APP_COMPILER_FLAGS_bypass_uac1 ${SW_USB_AUDIO_FLAGS} -DXUA_SPDIF_RX
-DMIN_FREQ=\(48000\) -DMIN_FREQ=\(48000\)
-DDEFAULT_FREQ=\(48000\) -DDEFAULT_FREQ=\(48000\)
-DHID_CONTROLS_UAC1=1 -DHID_CONTROLS_UAC1=1
#-DEQ_EN=1 -DEQ_EN=1
-DXMOS_FPS_EN=0 -DXMOS_FPS_EN=0
-DUAC1=1 -DUAC1=1
-DHID_CONTROLS=1 -DHID_CONTROLS=1
#-DDNR_50MS=1 -DDNR_50MS=1
#-DLOW_POWER_EN=1 -DLOW_POWER_EN=1
#-DCHAN_BUFF_CTRL=1 -DCHAN_BUFF_CTRL=1
#-DXUD_PRIORITY_HIGH=1 -DXUD_PRIORITY_HIGH=1
#-ldnr_50ms -ldnr_50ms
-DDEBUG_MEMORY_LOG_ENABLED=1 -DDEBUG_MEMORY_LOG_ENABLED=1
-DNO_LOG_TIMESTAPS=0 -DNO_LOG_TIMESTAPS=0
-DI2S_CHANS_ADC=2) -DI2S_CHANS_ADC=2)

View File

@@ -218,8 +218,10 @@ void switch_mode_by_c1_mode(unsigned c1_mode, unsigned force_reboot)
switch (c1_mode) switch (c1_mode)
{ {
case 1: case 1:
#if !BYPASS_UAC1
SetRoleSwitchFlag(MODE_BYPASS_UAC1); SetRoleSwitchFlag(MODE_BYPASS_UAC1);
reboot_need = 1; reboot_need = 0;
#endif
break; break;
case 2: case 2:
SetRoleSwitchFlag(MODE_V71_UAC1); SetRoleSwitchFlag(MODE_V71_UAC1);
@@ -230,20 +232,25 @@ void switch_mode_by_c1_mode(unsigned c1_mode, unsigned force_reboot)
reboot_need = 0; reboot_need = 0;
break; break;
case 4: case 4:
#if !FPS_UAC1
SetRoleSwitchFlag(MODE_FPS_UAC1); SetRoleSwitchFlag(MODE_FPS_UAC1);
reboot_need = 1; reboot_need = 1;
break; break;
#endif
case 5: case 5:
SetRoleSwitchFlag(MODE_FPS_UAC1); #if !BYPASS_UAC1
reboot_need = 0; SetRoleSwitchFlag(MODE_BYPASS_UAC1);
reboot_need = 1;
#endif
break; break;
} }
#endif #endif // UAC1_MODE == 1
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: reboot_need = %d, force_reboot = %d\n", reboot_need, force_reboot);
debug_printf("switch_mode_by_c1_mode: c1_mode = %d\n", c1_mode); debug_printf("switch_mode_by_c1_mode: c1_mode = %d\n", c1_mode);
if (reboot_need || force_reboot)
{
delay_milliseconds(200);
device_reboot(); device_reboot();
while (1); while (1);
} }