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
-DOUT_VOLUME_IN_MIXER=0
-DFPS_UAC1=1
#-fxscope
#-DXSCOPE
-DUAC1_MODE=1
-DXUA_DFU_EN=0
-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\)
@@ -140,10 +139,13 @@ set(APP_COMPILER_FLAGS_fps_uac1 ${SW_USB_AUDIO_FLAGS} -DXUA_SPDIF_RX
-DXMOS_FPS_EN=1
-DUAC1=1
-DWIN_OS_DETECTION=1
#-DLOW_POWER_EN=1
-DCHAN_BUFF_CTRL=1
-DXUD_PRIORITY_HIGH=1
-DHID_CONTROLS=1
-DDNR_50MS=1
-ldnr_50ms
#-DDEBUG_MEMORY_LOG_ENABLED=1
-DDEBUG_MEMORY_LOG_ENABLED=1
-DNO_LOG_TIMESTAPS=0
-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)
{
case 1:
#if !BYPASS_UAC1
SetRoleSwitchFlag(MODE_BYPASS_UAC1);
reboot_need = 1;
reboot_need = 0;
#endif
break;
case 2:
SetRoleSwitchFlag(MODE_V71_UAC1);
@@ -230,20 +232,25 @@ void switch_mode_by_c1_mode(unsigned c1_mode, unsigned force_reboot)
reboot_need = 0;
break;
case 4:
#if !FPS_UAC1
SetRoleSwitchFlag(MODE_FPS_UAC1);
reboot_need = 1;
#endif
break;
case 5:
SetRoleSwitchFlag(MODE_FPS_UAC1);
reboot_need = 0;
#if !BYPASS_UAC1
SetRoleSwitchFlag(MODE_BYPASS_UAC1);
reboot_need = 1;
#endif
break;
}
#endif
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);
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);
delay_milliseconds(200);
device_reboot();
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;
}
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 与端口一致。
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 br_dsp_proc_task(chanend c_validate, chanend cc_br_eof);
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 dsp_core0(void);
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 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; \
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;
@@ -58,7 +58,7 @@ extern void fps2_dsp_proc_task(void);
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
@@ -69,8 +69,6 @@ extern void fps2_dsp_proc_task(void);
unsafe { \
uc_audiohw = (chanend) c_audiohw;\
uc_br_data = (chanend) c_data_transport;\
uc_i2s = (chanend) c_i2s;\
uc_eq_data = (chanend) c_eq_data;\
uc_dfu = (chanend) c_dfu;\
} \
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);\
}\
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