add uac1 modes

This commit is contained in:
Steven Dan
2026-04-10 16:46:12 +08:00
parent 05a5ac80ef
commit 85fce4673b
7 changed files with 98 additions and 10 deletions

View File

@@ -23,7 +23,7 @@
*/
#ifndef FLASH_MAX_UPGRADE_SIZE
//#define FLASH_MAX_UPGRADE_SIZE (512 * 1024)
#define FLASH_MAX_UPGRADE_SIZE (0x1a0000)
#define FLASH_MAX_UPGRADE_SIZE (2200 * 1024)
#endif
#define FLASH_ERROR() do {} while(0)

View File

@@ -86,7 +86,7 @@ set(APP_COMPILER_FLAGS_f5_music_uac1 ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC
-DF5_MUSIC_UAC1=1
#-DUSE_EX3D
-DMIXER=0
-ldnr_11ms
-ldnr_50ms
-DDNR_ENABLE=1
#-llib_ex3d_all
-DEQ_EN=1
@@ -129,9 +129,10 @@ set(APP_COMPILER_FLAGS_fact ${SW_USB_FACT_FLAGS} -DI2S_CHANS_DAC=2
-DINPUT_VOLUME_CONTROL=0
-DOUTPUT_VOLUME_CONTROL=0
-DDEBUG_MEMORY_LOG_ENABLED=1
-DHID_DFU_EN=1
-DXUA_DFU_EN=1
#-DIR_SWITCHING_MODE
-DHID_CONTROLS=0)
-DHID_CONTROLS=1)
@@ -200,6 +201,8 @@ set(APP_COMPILER_FLAGS_f6_f7_fps_uac1 ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2
-DAUDIO_CLASS=1
-DMIN_FREQ=48000
-DMAX_FREQ=48000
-DMCLK_441=512*44100
-DMCLK_48=512*48000
-DUAC1_MODE=1
-DUSE_EX3D=1
-DF6_F7_FPS_UAC1=1

View File

@@ -1,3 +1,3 @@
xflash bin/fact/app_usb_aud_sy102_fact.xe --loader loader.o --upgrade 2 bin/f5_music_uac1/app_usb_aud_sy102_f5_music_uac1.xe --upgrade 3 bin/f1_music_uac2/app_usb_aud_sy102_f1_music_uac2.xe --upgrade 1 bin/f3_f4_fps_uac2/app_usb_aud_sy102_f3_f4_fps_uac2.xe -o %1
xflash bin/fact/app_usb_aud_sy102_fact.xe --loader loader.o --upgrade 2 bin/f5_music_uac1/app_usb_aud_sy102_f5_music_uac1.xe --upgrade 3 bin/f1_music_uac2/app_usb_aud_sy102_f1_music_uac2.xe --upgrade 1 bin/f3_f4_fps_uac2/app_usb_aud_sy102_f3_f4_fps_uac2.xe --upgrade 4 bin/f6_f7_fps_uac1/app_usb_aud_sy102_f6_f7_fps_uac1.xe -o %1
rem --upgrade 4 bin/f6_f7_fps_uac1/app_usb_aud_sy102_f6_f7_fps_uac1.xe

View File

@@ -485,11 +485,19 @@ void button_task(chanend c_hidSendData, chanend cc_mic_level, chanend c_uac_vol,
}
else
{
#if F5_MUSIC_UAC1
if (saved_mode >= 2) {
SetRoleSwitchFlag(MODE_F6_F7_FPS_UAC1);
device_reboot();
while (1);
}
#elif F6_F7_FPS_UAC1
if (saved_mode <= 1) {
SetRoleSwitchFlag(MODE_F5_MUSIC_UAC1);
device_reboot();
while (1);
}
#endif
}
#endif
@@ -499,8 +507,10 @@ void button_task(chanend c_hidSendData, chanend cc_mic_level, chanend c_uac_vol,
if (saved_mode == 255) {
#if defined(F5_MUSIC_UAC1)
saved_mode = 1; // f5: default music mode
#elif defined(F6_F7_FPS_UAC1)
saved_mode = 2; // f6/f7: default game mode
#else
saved_mode = 1; // f6/f7: default off
saved_mode = 1; // default off
#endif
save_value(path, saved_mode);
debug_printf("Saved game_mode to flash: %d\n", saved_mode);
@@ -1082,6 +1092,19 @@ void button_task(chanend c_hidSendData, chanend cc_mic_level, chanend c_uac_vol,
active_mode = 1;
need_reboot = 1;
SetRoleSwitchFlag(MODE_F1_MUSIC_UAC2);
#elif (F6_F7_FPS_UAC1 == 1)
// UAC1 FPS firmware: music needs F5, reboot if not already music
if (active_mode != 1) {
active_mode = 1;
need_reboot = 1;
SetRoleSwitchFlag(MODE_F5_MUSIC_UAC1);
}
#elif (F5_MUSIC_UAC1 == 1)
// UAC1 Music firmware: already on music FW, toggle locally
if (active_mode != 1) {
active_mode = 1;
mode_btn_change = 1;
}
#else
active_mode = (active_mode == 1) ? 0 : 1;
mode_btn_change = 1;
@@ -1099,6 +1122,19 @@ void button_task(chanend c_hidSendData, chanend cc_mic_level, chanend c_uac_vol,
active_mode = 2;
need_reboot = 1;
SetRoleSwitchFlag(MODE_F3_F4_FPS_UAC2);
#elif (F5_MUSIC_UAC1 == 1)
// UAC1 Music firmware: game needs F6/F7, reboot if not already game
if (active_mode != 2) {
active_mode = 2;
need_reboot = 1;
SetRoleSwitchFlag(MODE_F6_F7_FPS_UAC1);
}
#elif (F6_F7_FPS_UAC1 == 1)
// UAC1 FPS firmware: already on FPS FW, switch locally (IR_OFF)
if (active_mode != 2) {
active_mode = 2;
mode_btn_change = 1;
}
#else
active_mode = (active_mode == 2) ? 0 : 2;
mode_btn_change = 1;
@@ -1121,8 +1157,20 @@ void button_task(chanend c_hidSendData, chanend cc_mic_level, chanend c_uac_vol,
active_mode = 3;
need_reboot = 1;
SetRoleSwitchFlag(MODE_F3_F4_FPS_UAC2);
#elif (F5_MUSIC_UAC1 == 1)
// UAC1 Music firmware: AI71 needs F6/F7 FPS, reboot if not already AI71
if (active_mode != 3) {
active_mode = 3;
need_reboot = 1;
SetRoleSwitchFlag(MODE_F6_F7_FPS_UAC1);
}
#elif (F6_F7_FPS_UAC1 == 1)
// UAC1 FPS firmware: already on FPS FW, switch locally (IR_GAME)
if (active_mode != 3) {
active_mode = 3;
mode_btn_change = 1;
}
#else
// FPS firmware: switch algorithm locally (toggle off or activate)
active_mode = (active_mode == 3) ? 0 : 3;
mode_btn_change = 1;
@@ -1156,6 +1204,26 @@ void button_task(chanend c_hidSendData, chanend cc_mic_level, chanend c_uac_vol,
active_mode = target;
mode_btn_change = 1;
}
#elif (F5_MUSIC_UAC1 == 1)
// UAC1 Music FW: mode 1 local, mode 2/3 need F6/F7 reboot
if (target >= 2) {
active_mode = target;
need_reboot = 1;
SetRoleSwitchFlag(MODE_F6_F7_FPS_UAC1);
} else if (target != active_mode) {
active_mode = target;
mode_btn_change = 1;
}
#elif (F6_F7_FPS_UAC1 == 1)
// UAC1 FPS FW: mode 2/3 local, mode 1 needs F5 reboot
if (target <= 1) {
active_mode = target;
need_reboot = 1;
SetRoleSwitchFlag(MODE_F5_MUSIC_UAC1);
} else if (target != active_mode) {
active_mode = target;
mode_btn_change = 1;
}
#else
active_mode = target;
mode_btn_change = 1;

View File

@@ -14,7 +14,7 @@
#if HID_DFU_EN
#ifndef DFU_FLASH_MAX_UPGRADE_SIZE
#define DFU_FLASH_MAX_UPGRADE_SIZE (1600 * 1024)
#define DFU_FLASH_MAX_UPGRADE_SIZE (2200 * 1024)
#endif
#define DFU_FLASH_ERROR()

View File

@@ -894,7 +894,7 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c
} else if (current_mode_local == 1) {
// 音乐模式EX3D关闭EQ开启
audio_ex3d_set_onoff(0);
g_eq_enable = 1;
//g_eq_enable = 1;
#if IR_SWITCHING_MODE
is_3d_on = IR_OFF;
#else
@@ -902,8 +902,15 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c
#endif
debug_printf("Mode 1: MUSIC, EQ ON, EX3D OFF\n");
} else if (current_mode_local == 2) {
#if (F6_F7_FPS_UAC1 == 1)
// UAC1 Game模式: EX3D关闭, EQ开启, IR_OFF
//g_eq_enable = 1;
audio_ex3d_set_onoff(0);
is_3d_on = IR_OFF;
debug_printf("Mode 2: UAC1 GAME, EQ ON, EX3D OFF (IR_OFF)\n");
#else
// 游戏模式 (IR_GAME, stereo): SF index 0EQ开启
g_eq_enable = 1;
//g_eq_enable = 1;
#if IR_SWITCHING_MODE
audio_ex3d_set_sf(0); // SF 0 = STEREO GAME
is_3d_on = IR_GAME;
@@ -912,7 +919,16 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c
#endif
audio_ex3d_set_onoff(1);
debug_printf("Mode 2: GAME (IR_GAME) ON, sf=0, EQ ON\n");
#endif
} else if (current_mode_local == 3) {
#if (F6_F7_FPS_UAC1 == 1)
// UAC1 AI71模式: EX3D开启, SF index 0 (stereo game), EQ开启, IR_GAME
//g_eq_enable = 1;
audio_ex3d_set_sf(0); // SF 0 = STEREO GAME
is_3d_on = IR_GAME;
audio_ex3d_set_onoff(1);
debug_printf("Mode 3: UAC1 AI71 (IR_GAME) ON, sf=0, EQ ON\n");
#else
// AI7.1模式 (IR_7_1_GAME, 7.1): SF index 1EQ开启
g_eq_enable = 1;
#if IR_SWITCHING_MODE
@@ -923,6 +939,7 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c
#endif
audio_ex3d_set_onoff(1);
debug_printf("Mode 3: AI7.1 (IR_7_1_GAME) ON, sf=1, EQ ON\n");
#endif
}
SET_SHARED_GLOBAL(g_3d_on_off_t1, is_3d_on);
} else if (tmp == 0xFD) {

View File

@@ -13,7 +13,7 @@ swlock_t lfs_lock = SWLOCK_INITIAL_VALUE;
static rtos_qspi_flash_t qspi_flash_ctx_s;
#define FLASH_CLKBLK XS1_CLKBLK_3
#ifndef FS_BASE_ADDR
#define FS_BASE_ADDR 0x1a0000
#define FS_BASE_ADDR (2500 * 1024)
#endif
#define SECTOR_SIZE 4096
rtos_qspi_flash_t *qspi_flash_ctx = &qspi_flash_ctx_s;