diff --git a/sw_usb_audio/app_usb_aud_fosi_c1/src/extensions/audiohw.xc b/sw_usb_audio/app_usb_aud_fosi_c1/src/extensions/audiohw.xc index 9beaef9..e9238c6 100644 --- a/sw_usb_audio/app_usb_aud_fosi_c1/src/extensions/audiohw.xc +++ b/sw_usb_audio/app_usb_aud_fosi_c1/src/extensions/audiohw.xc @@ -121,10 +121,10 @@ timer tm; // 改动原因:新增C1模式持久化文件路径,使用LittleFS保存mode按键状态,保证断电重启后可恢复。 #define C1_MODE_VALUE_PATH "c1_mode_value" -// 改动原因:c1_mode 与 tile1 mode 灯索引一致:1=灭 2=蓝 3=绿 4=橙 5=紫;合法范围 1~5,interface 原样传 c1_mode。 +// 改动原因:产品仅保留两档——1=BYPASS_UAC1(灯灭)、4=FPS_UAC1(橙灯常亮);灯索引与 c1_mode 同值下发 tile1。 #define C1_MODE_VALUE_DEFAULT 1 #define C1_MODE_VALUE_MIN 1 -#define C1_MODE_VALUE_MAX 5 +#define C1_MODE_VALUE_MAX 4 // 改动原因:DAC 音量单独持久化路径,与 mode 的 c1_mode 文件分离,避免互相覆盖且便于维护。 #define C1_DAC_VOL_INFO_PATH "c1_dac_vol" @@ -156,24 +156,25 @@ static unsigned c1_saved_dac_vol_is_valid(unsigned char v) return 0; } -// 改动原因:产品停用 mode 2(BR)/3(V71);越界或 Flash 残留 2/3 归一到可用档(2/3→4),供上电与灯色共用。 +// 改动原因:仅合法档 1(BYPASS)/4(FPS);Flash 残留 2/3(V71) 归 4,5(旧紫灯 BYPASS) 归 1,供上电与灯色共用。 static inline unsigned c1_mode_sanitize(unsigned mode_value) { - if (mode_value > C1_MODE_VALUE_MAX || mode_value < C1_MODE_VALUE_MIN) - return C1_MODE_VALUE_DEFAULT; + if (mode_value == 1 || mode_value == 4) + return mode_value; if (mode_value == 2 || mode_value == 3) return 4; - return mode_value; + if (mode_value == 5) + return 1; + return C1_MODE_VALUE_DEFAULT; } -// 改动原因:mode 短按循环跳过 2、3,仅 1→4→5→1(与 switch_mode_by_c1_mode 可用档一致)。 +// 改动原因:mode 短按仅在 BYPASS(1) 与 FPS(4) 两档间切换,与 switch_mode_by_c1_mode 一致。 static inline unsigned c1_mode_advance(unsigned mode_value) { switch (c1_mode_sanitize(mode_value)) { case 1: return 4; - case 4: return 5; - case 5: return 1; + case 4: return 1; default: return C1_MODE_VALUE_DEFAULT; } } @@ -222,21 +223,14 @@ void switch_mode_by_c1_mode(unsigned c1_mode, unsigned force_reboot) break; } #else + // 改动原因:UAC1 仅保留 BYPASS(1,灯灭) 与 FPS(4,橙灯);移除 V71(2/3) 及旧紫灯 BYPASS(5)。 switch (c1_mode) { case 1: #if !BYPASS_UAC1 SetRoleSwitchFlag(MODE_BYPASS_UAC1); - reboot_need = 0; -#endif - break; - case 2: - SetRoleSwitchFlag(MODE_V71_UAC1); reboot_need = 1; - break; - case 3: - SetRoleSwitchFlag(MODE_V71_UAC1); - reboot_need = 0; +#endif break; case 4: #if !FPS_UAC1 @@ -244,12 +238,7 @@ void switch_mode_by_c1_mode(unsigned c1_mode, unsigned force_reboot) reboot_need = 1; #endif break; - - case 5: -#if !BYPASS_UAC1 - SetRoleSwitchFlag(MODE_BYPASS_UAC1); - reboot_need = 1; -#endif + default: break; } #endif // UAC1_MODE == 1 @@ -595,7 +584,7 @@ void AudioHwRemote2(streaming chanend c, client interface i2c_master_if i2c, cli firmware_upgrade_init(); #endif - // 改动原因:上电归一 c1_mode(含停用档 2/3→4),与按键循环 1/4/5 一致并写回 Flash。 + // 改动原因:上电归一 c1_mode 为 1 或 4,与按键 BYPASS/FPS 两档循环一致并写回 Flash。 { unsigned c1_mode_corrected = c1_mode_sanitize(c1_mode); if (c1_mode_corrected != c1_mode) @@ -957,7 +946,7 @@ void AudioHwRemote2(streaming chanend c, client interface i2c_master_if i2c, cli { if (pressed_count == 0) { - // 改动原因:mode 短按在 c1_mode 1/4/5 间循环(跳过停用档 2/3);持久化后切角色并 set_mode_led_color 下发 tile1。 + // 改动原因:mode 短按在 BYPASS(1,灭)/FPS(4,橙) 两档间切换;持久化后切角色并 set_mode_led_color 下发 tile1。 if ((mode_press_ticks >= C1_KEY_SHORT_TICKS) && (mode_press_ticks < C1_KEY_LONG_TICKS)) { c1_mode = c1_mode_advance(c1_mode); @@ -1927,7 +1916,7 @@ static inline void c1_panel_leds_force_all_off_hw(void) p_mode_led_blue <: 1; } -// 改动原因:c1_mode 与灯索引一致:1=灯 2=蓝 3=绿 4=橙(R+G) 5=紫(R+B);仅驱动 mode 区(p_leds bit2/3 + p_mode_led_blue),不受 mic 变声影响。 +// 改动原因:c1_mode 与灯索引一致:1=灭(BYPASS) 4=橙(R+G,FPS);仅驱动 mode 区(p_leds bit2/3 + p_mode_led_blue),不受 mic 变声影响。 // 改动原因:规格 mic 区灯仅反映静音——静音红灯常亮,非静音(含DNR开/关)全灭;DNR状态由APP显示。 static inline void apply_c1_panel_leds(unsigned mode_led_color_idx, unsigned mic_mute_switch, unsigned &led_shadow) { @@ -2001,10 +1990,8 @@ void app_control_slave(server interface c1_led_ctrl_if i_c1_led_ctrl) unsafe { select{ case i_c1_led_ctrl.set_mode_led_color(unsigned color_idx): - // 改动原因:color_idx 与 c1_mode 同値 1~5;越界时酆位为默认灯码,避免未定义索引。 - mode_led_color_idx = color_idx; - if (mode_led_color_idx > 5 || mode_led_color_idx < 1) - mode_led_color_idx = C1_MODE_VALUE_DEFAULT; + // 改动原因:color_idx 与 c1_mode 同值,仅 1(灭)/4(橙);越界时 sanitize 为合法档。 + mode_led_color_idx = c1_mode_sanitize(color_idx); apply_c1_panel_leds(mode_led_color_idx, mic_mute_switch, led_shadow); break; case i_c1_led_ctrl.set_mic_mute_state(unsigned mute_state): diff --git a/sw_usb_audio/app_usb_aud_fosi_c1/src/extensions/user_main.h b/sw_usb_audio/app_usb_aud_fosi_c1/src/extensions/user_main.h index 566dbb9..501a992 100644 --- a/sw_usb_audio/app_usb_aud_fosi_c1/src/extensions/user_main.h +++ b/sw_usb_audio/app_usb_aud_fosi_c1/src/extensions/user_main.h @@ -8,7 +8,7 @@ #include "app_dsp.h" // 改动原因:mode/mic mute LED物理端口在tile1,定义跨tile的LED控制interface,供tile0按键逻辑调用,tile1统一驱动硬件LED。 interface c1_led_ctrl_if { - // 改动原因:与 c1_mode 同值下发 tile1:1=灭 2=蓝 3=绿 4=橙 5=紫(灯索引即 mode)。 + // 改动原因:与 c1_mode 同值下发 tile1:1=BYPASS(灭) 4=FPS(橙灯常亮)(灯索引即 mode)。 void set_mode_led_color(unsigned color_idx); // 改动原因:规格 mic 指示灯仅反映静音——0=静音红灯常亮,1=非静音全灭;DNR 无灯由 APP 显示。 void set_mic_mute_state(unsigned mute_switch); diff --git a/sw_usb_audio/app_usb_aud_fosi_c1_lp/src/extensions/audiohw.xc b/sw_usb_audio/app_usb_aud_fosi_c1_lp/src/extensions/audiohw.xc index 0610cfd..92f21fe 100644 --- a/sw_usb_audio/app_usb_aud_fosi_c1_lp/src/extensions/audiohw.xc +++ b/sw_usb_audio/app_usb_aud_fosi_c1_lp/src/extensions/audiohw.xc @@ -121,10 +121,10 @@ timer tm; // 改动原因:新增C1模式持久化文件路径,使用LittleFS保存mode按键状态,保证断电重启后可恢复。 #define C1_MODE_VALUE_PATH "c1_mode_value" -// 改动原因:c1_mode 与 tile1 mode 灯索引一致:1=灭 2=蓝 3=绿 4=橙 5=紫;合法范围 1~5,interface 原样传 c1_mode。 +// 改动原因:产品仅保留两档——1=BYPASS_UAC1(灯灭)、4=FPS_UAC1(橙灯常亮);灯索引与 c1_mode 同值下发 tile1。 #define C1_MODE_VALUE_DEFAULT 1 #define C1_MODE_VALUE_MIN 1 -#define C1_MODE_VALUE_MAX 5 +#define C1_MODE_VALUE_MAX 4 // 改动原因:DAC 音量单独持久化路径,与 mode 的 c1_mode 文件分离,避免互相覆盖且便于维护。 #define C1_DAC_VOL_INFO_PATH "c1_dac_vol" @@ -156,24 +156,25 @@ static unsigned c1_saved_dac_vol_is_valid(unsigned char v) return 0; } -// 改动原因:产品停用 mode 2(BR)/3(V71);越界或 Flash 残留 2/3 归一到可用档(2/3→4),供上电与灯色共用。 +// 改动原因:仅合法档 1(BYPASS)/4(FPS);Flash 残留 2/3(V71) 归 4,5(旧紫灯 BYPASS) 归 1,供上电与灯色共用。 static inline unsigned c1_mode_sanitize(unsigned mode_value) { - if (mode_value > C1_MODE_VALUE_MAX || mode_value < C1_MODE_VALUE_MIN) - return C1_MODE_VALUE_DEFAULT; + if (mode_value == 1 || mode_value == 4) + return mode_value; if (mode_value == 2 || mode_value == 3) return 4; - return mode_value; + if (mode_value == 5) + return 1; + return C1_MODE_VALUE_DEFAULT; } -// 改动原因:mode 短按循环跳过 2、3,仅 1→4→5→1(与 switch_mode_by_c1_mode 可用档一致)。 +// 改动原因:mode 短按仅在 BYPASS(1) 与 FPS(4) 两档间切换,与 switch_mode_by_c1_mode 一致。 static inline unsigned c1_mode_advance(unsigned mode_value) { switch (c1_mode_sanitize(mode_value)) { case 1: return 4; - case 4: return 5; - case 5: return 1; + case 4: return 1; default: return C1_MODE_VALUE_DEFAULT; } } @@ -222,21 +223,14 @@ void switch_mode_by_c1_mode(unsigned c1_mode, unsigned force_reboot) break; } #else + // 改动原因:UAC1 仅保留 BYPASS(1,灯灭) 与 FPS(4,橙灯);移除 V71(2/3) 及旧紫灯 BYPASS(5)。 switch (c1_mode) { case 1: #if !BYPASS_UAC1 SetRoleSwitchFlag(MODE_BYPASS_UAC1); - reboot_need = 0; -#endif - break; - case 2: - SetRoleSwitchFlag(MODE_V71_UAC1); reboot_need = 1; - break; - case 3: - SetRoleSwitchFlag(MODE_V71_UAC1); - reboot_need = 0; +#endif break; case 4: #if !FPS_UAC1 @@ -244,12 +238,7 @@ void switch_mode_by_c1_mode(unsigned c1_mode, unsigned force_reboot) reboot_need = 1; #endif break; - - case 5: -#if !BYPASS_UAC1 - SetRoleSwitchFlag(MODE_BYPASS_UAC1); - reboot_need = 1; -#endif + default: break; } #endif // UAC1_MODE == 1 @@ -598,7 +587,7 @@ void AudioHwRemote2(streaming chanend c, client interface i2c_master_if i2c, cli debug_printf("AudioHwRemote2: c1_mode = %d\n", c1_mode); - // 改动原因:上电归一 c1_mode(含停用档 2/3→4),与按键循环 1/4/5 一致并写回 Flash。 + // 改动原因:上电归一 c1_mode 为 1 或 4,与按键 BYPASS/FPS 两档循环一致并写回 Flash。 { unsigned c1_mode_corrected = c1_mode_sanitize(c1_mode); if (c1_mode_corrected != c1_mode) @@ -960,7 +949,7 @@ void AudioHwRemote2(streaming chanend c, client interface i2c_master_if i2c, cli { if (pressed_count == 0) { - // 改动原因:mode 短按在 c1_mode 1/4/5 间循环(跳过停用档 2/3);持久化后切角色并 set_mode_led_color 下发 tile1。 + // 改动原因:mode 短按在 BYPASS(1,灭)/FPS(4,橙) 两档间切换;持久化后切角色并 set_mode_led_color 下发 tile1。 if ((mode_press_ticks >= C1_KEY_SHORT_TICKS) && (mode_press_ticks < C1_KEY_LONG_TICKS)) { c1_mode = c1_mode_advance(c1_mode); @@ -1930,7 +1919,7 @@ static inline void c1_panel_leds_force_all_off_hw(void) p_mode_led_blue <: 1; } -// 改动原因:c1_mode 与灯索引一致:1=灯 2=蓝 3=绿 4=橙(R+G) 5=紫(R+B);仅驱动 mode 区(p_leds bit2/3 + p_mode_led_blue),不受 mic 变声影响。 +// 改动原因:c1_mode 与灯索引一致:1=灭(BYPASS) 4=橙(R+G,FPS);仅驱动 mode 区(p_leds bit2/3 + p_mode_led_blue),不受 mic 变声影响。 // 改动原因:规格 mic 区灯仅反映静音——静音红灯常亮,非静音(含DNR开/关)全灭;DNR状态由APP显示。 static inline void apply_c1_panel_leds(unsigned mode_led_color_idx, unsigned mic_mute_switch, unsigned &led_shadow) { @@ -2004,10 +1993,8 @@ void app_control_slave(server interface c1_led_ctrl_if i_c1_led_ctrl, chanend c_ unsafe { select{ case i_c1_led_ctrl.set_mode_led_color(unsigned color_idx): - // 改动原因:color_idx 与 c1_mode 同値 1~5;越界时酆位为默认灯码,避免未定义索引。 - mode_led_color_idx = color_idx; - if (mode_led_color_idx > 5 || mode_led_color_idx < 1) - mode_led_color_idx = C1_MODE_VALUE_DEFAULT; + // 改动原因:color_idx 与 c1_mode 同值,仅 1(灭)/4(橙);越界时 sanitize 为合法档。 + mode_led_color_idx = c1_mode_sanitize(color_idx); apply_c1_panel_leds(mode_led_color_idx, mic_mute_switch, led_shadow); break; case i_c1_led_ctrl.set_mic_mute_state(unsigned mute_state): diff --git a/sw_usb_audio/app_usb_aud_fosi_c1_lp/src/extensions/user_main.h b/sw_usb_audio/app_usb_aud_fosi_c1_lp/src/extensions/user_main.h index ab1e6f6..4eaca16 100644 --- a/sw_usb_audio/app_usb_aud_fosi_c1_lp/src/extensions/user_main.h +++ b/sw_usb_audio/app_usb_aud_fosi_c1_lp/src/extensions/user_main.h @@ -7,7 +7,7 @@ #include "app_dsp.h" // 改动原因:mode/mic mute LED物理端口在tile1,定义跨tile的LED控制interface,供tile0按键逻辑调用,tile1统一驱动硬件LED。 interface c1_led_ctrl_if { - // 改动原因:与 c1_mode 同值下发 tile1:1=灭 2=蓝 3=绿 4=橙 5=紫(灯索引即 mode)。 + // 改动原因:与 c1_mode 同值下发 tile1:1=BYPASS(灭) 4=FPS(橙灯常亮)(灯索引即 mode)。 void set_mode_led_color(unsigned color_idx); // 改动原因:规格 mic 指示灯仅反映静音——0=静音红灯常亮,1=非静音全灭;DNR 无灯由 APP 显示。 void set_mic_mute_state(unsigned mute_switch);