update mode update
This commit is contained in:
@@ -61,6 +61,7 @@ set(APP_COMPILER_FLAGS_f1_music_uac2 ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC
|
||||
-DF1_MUSIC_UAC2=1
|
||||
#-DUSE_EX3D
|
||||
-DMIXER=0
|
||||
-DUAC2_MODE=1
|
||||
#-ldnr_50ms
|
||||
#-llib_ex3d_all
|
||||
-DEQ_EN=1
|
||||
@@ -84,6 +85,7 @@ set(APP_COMPILER_FLAGS_f3_f4_fps_uac2 ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2
|
||||
-DUSE_EX3D=1
|
||||
-DF3_F4_FPS_UAC2=1
|
||||
-DMIXER=0
|
||||
-DUAC2_MODE=1
|
||||
-ldnr_50ms
|
||||
-llib_ex3d_all
|
||||
-DEQ_EN=1
|
||||
@@ -129,6 +131,7 @@ 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
|
||||
-DUAC1_MODE=1
|
||||
-DUSE_EX3D=1
|
||||
-DF6_F7_FPS_UAC1=1
|
||||
-DMIXER=0
|
||||
|
||||
@@ -128,12 +128,10 @@ unsigned g_led_blink_is_white = 0;
|
||||
#define LED_WHITE (LED_RED & LED_GREEN & LED_BLUE)
|
||||
enum { OS_WIN = 1, OS_OTHERS = 2 };
|
||||
// 改动原因:定义模式切换标志值,用于在SPATIAL_GAME、STEREO_8K、STEREO_2K、UAC1之间循环切换
|
||||
#define MODE_STEREO_2K UAC1_IN_FLAG // 4 STEREO_2K模式标志
|
||||
#define MODE_SPATIAL_GAME COAX_IN_FLAG //1 SPATIAL_GAME模式标志
|
||||
#define MODE_SPATIAL_MOVIE OPT_IN_FLAG // 3 STEREO_8K模式标志
|
||||
#define MODE_UAC1 USB_IN_FLAG // 2 UAC1模式标志
|
||||
|
||||
|
||||
#define MODE_F3_F4_FPS_UAC2 COAX_IN_FLAG //1 SPATIAL_GAME模式标志
|
||||
#define MODE_F5_MUSIC_UAC1 UAC1_IN_FLAG // 2 UAC1模式标志
|
||||
#define MODE_F1_MUSIC_UAC2 OPT_IN_FLAG // 3 STEREO_8K模式标志
|
||||
#define MODE_F6_F7_FPS_UAC1 USB_IN_FLAG // 4 STEREO_2K模式标志
|
||||
|
||||
/* All on tile[0] */
|
||||
port p_scl = PORT_I2C_SCL;
|
||||
@@ -268,6 +266,8 @@ extern unsigned g_host_os; // 1 -> Windows, 2 -> Others
|
||||
extern unsigned g_mute_on_off_t0;
|
||||
extern unsigned g_uac_vol;
|
||||
|
||||
extern void device_reboot(void);
|
||||
|
||||
void save_value(unsigned char * unsafe path, unsigned char value);
|
||||
unsigned char load_value(unsigned char * unsafe path);
|
||||
|
||||
@@ -354,6 +354,67 @@ void button_task(chanend c_hidSendData, chanend cc_mic_level, chanend c_uac_vol)
|
||||
// LED控制上下文
|
||||
led_control_t led_ctx;
|
||||
|
||||
|
||||
// Windows模式:从 "game_mode" 加载(模式值 0-3)
|
||||
// UAC1模式:从 "uac1_mode" 加载(等效模式值 0-2)
|
||||
unsigned /* char */ saved_mode;
|
||||
unsigned char saved_uac1_mode = 0;
|
||||
unsigned char path[] = "game_mode";
|
||||
|
||||
unsigned host_os;
|
||||
GET_SHARED_GLOBAL(host_os, g_host_os);
|
||||
saved_mode = load_value(path);
|
||||
debug_printf("Loaded game_mode from flash: %d\n", saved_mode);
|
||||
|
||||
|
||||
#if defined(UAC1_MODE)
|
||||
delay_milliseconds(300);
|
||||
if (saved_mode == 255) {
|
||||
saved_mode = 0;
|
||||
save_value(path, saved_mode);
|
||||
debug_printf("Saved game_mode to flash: %d\n", saved_mode);
|
||||
}
|
||||
#else
|
||||
if (saved_mode == 255) {
|
||||
// 如果文件不存在,根据编译模式设置默认值
|
||||
#if defined(MODE_F1_MUSIC_UAC2)
|
||||
saved_mode = 0;
|
||||
#elif defined(MODE_F3_F4_FPS_UAC2)
|
||||
saved_mode = 2;
|
||||
#endif
|
||||
save_value(path, saved_mode);
|
||||
debug_printf("Saved game_mode to flash: %d\n", saved_mode);
|
||||
}
|
||||
#endif
|
||||
|
||||
printf("host_os: %d\n", host_os);
|
||||
|
||||
#if UAC1_MODE == 1
|
||||
if (host_os == OS_WIN) {
|
||||
printf("Detected Windows OS (OS_WIN) saved_mode: %d\n", saved_mode);
|
||||
unsigned flag = (saved_mode == 0) ? MODE_F1_MUSIC_UAC2 : MODE_F3_F4_FPS_UAC2;
|
||||
SetRoleSwitchFlag(flag);
|
||||
device_reboot();
|
||||
while (1);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (saved_mode != 0) {
|
||||
SetRoleSwitchFlag(MODE_F6_F7_FPS_UAC1);
|
||||
device_reboot();
|
||||
while (1);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
g_windows_detect_done = 1;
|
||||
|
||||
|
||||
SET_SHARED_GLOBAL(g_game_mode, saved_mode);
|
||||
debug_printf("Set new g_game_mode to %d\n", saved_mode);
|
||||
|
||||
|
||||
|
||||
// 初始化硬件
|
||||
htr3236_init(&htr3236_dev, HTR3236_ADDR_GND);
|
||||
htr3236_hw_enable(&htr3236_dev);
|
||||
@@ -423,121 +484,10 @@ void button_task(chanend c_hidSendData, chanend cc_mic_level, chanend c_uac_vol)
|
||||
delay_milliseconds(200);
|
||||
codec_init();
|
||||
|
||||
unsigned ex3d_key_verified;
|
||||
delay_milliseconds(300);
|
||||
debug_printf("button task start\n");
|
||||
|
||||
|
||||
// Windows模式:从 "game_mode" 加载(模式值 0-3)
|
||||
// UAC1模式:从 "uac1_mode" 加载(等效模式值 0-2)
|
||||
unsigned /* char */ saved_mode;
|
||||
unsigned char saved_uac1_mode = 0;
|
||||
unsigned char path[] = "game_mode";
|
||||
|
||||
unsigned host_os;
|
||||
GET_SHARED_GLOBAL(host_os, g_host_os);
|
||||
saved_mode = load_value(path);
|
||||
debug_printf("Loaded game_mode from flash: %d\n", saved_mode);
|
||||
|
||||
#if defined(UAC1_MODE)
|
||||
if (saved_mode == 255) {
|
||||
saved_mode = 0;
|
||||
save_value(path, saved_mode);
|
||||
debug_printf("Saved game_mode to flash: %d\n", saved_mode);
|
||||
}
|
||||
#else
|
||||
if (saved_mode == 255) {
|
||||
// 如果文件不存在,根据编译模式设置默认值
|
||||
#if defined(STEREO_2K)
|
||||
saved_mode = 0;
|
||||
#elif defined(SPATIAL_GAME)
|
||||
saved_mode = 2;
|
||||
#elif defined(SPATIAL_MOVIE)
|
||||
saved_mode = 3;
|
||||
#endif
|
||||
save_value(path, saved_mode);
|
||||
debug_printf("Saved game_mode to flash: %d\n", saved_mode);
|
||||
}
|
||||
#endif
|
||||
//printf("host_os: %d\n", host_os);
|
||||
#if 0
|
||||
if ((host_os == OS_OTHERS) || (host_os == 0)) {
|
||||
|
||||
#if !UAC1_MODE
|
||||
printf("Detected non-Windows OS (OS_OTHERS), switching to UAC1 mode\n");
|
||||
SetRoleSwitchFlag(MODE_UAC1);
|
||||
debug_printf("Set role switch flag: 0x%04X (UAC1), device will restart\n", MODE_UAC1);
|
||||
// 设备会重启,退出函数
|
||||
device_reboot();
|
||||
while(1);
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
#if UAC1_MODE == 1
|
||||
if (host_os == OS_WIN) {
|
||||
printf("Detected Windows OS (OS_WIN) saved_mode: %d\n", saved_mode);
|
||||
|
||||
#if IR_SWITCHING_MODE
|
||||
if (saved_mode == 0) {
|
||||
SetRoleSwitchFlag(MODE_STEREO_2K);
|
||||
} else {
|
||||
SetRoleSwitchFlag(MODE_SPATIAL_GAME);
|
||||
}
|
||||
#else
|
||||
{
|
||||
switch (saved_mode) {
|
||||
case 0:
|
||||
SetRoleSwitchFlag(MODE_STEREO_2K);
|
||||
break;
|
||||
case 1:
|
||||
SetRoleSwitchFlag(MODE_STEREO_2K);
|
||||
break;
|
||||
case 2:
|
||||
SetRoleSwitchFlag(MODE_SPATIAL_GAME);
|
||||
break;
|
||||
case 3:
|
||||
SetRoleSwitchFlag(MODE_SPATIAL_MOVIE);
|
||||
break;
|
||||
default:
|
||||
SetRoleSwitchFlag(MODE_STEREO_2K);
|
||||
break;
|
||||
}
|
||||
debug_printf("Switch to saved mode: %d, device will restart.\n", saved_mode);
|
||||
delay_milliseconds(200);
|
||||
// device_reboot();
|
||||
// while (1);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#if defined(STEREO_2K)
|
||||
if ((saved_mode != 255) && (saved_mode != 0) && (saved_mode != 1)) {
|
||||
saved_mode = 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(SPATIAL_GAME)
|
||||
if ((saved_mode != 255) && (saved_mode != 2)) {
|
||||
saved_mode = 2;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(SPATIAL_MOVIE)
|
||||
if ((saved_mode != 255) && (saved_mode != 3)) {
|
||||
saved_mode = 3;
|
||||
}
|
||||
#endif
|
||||
|
||||
g_windows_detect_done = 1;
|
||||
|
||||
|
||||
SET_SHARED_GLOBAL(g_game_mode, saved_mode);
|
||||
debug_printf("Set new g_game_mode to %d\n", saved_mode);
|
||||
|
||||
//chan_out_byte(cc_mic_level, 0xFC); // 音频模式传输命令
|
||||
//chan_out_byte(cc_mic_level, 0xFC); // 音频模式传输命令
|
||||
//chan_out_byte(cc_mic_level, saved_mode); // 音频模式值(0=无音效,1=STEREO_2K,2=SPATIAL_GAME,3=SPATIAL_MOVIE)
|
||||
cc_mic_level <: 0xFC;
|
||||
cc_mic_level <: saved_mode;
|
||||
|
||||
Reference in New Issue
Block a user