@@ -146,7 +146,7 @@ void UserBufferManagement(unsigned sampsFromUsbToAudio[], unsigned sampsFromAudi
static unsigned count = 0 ;
if ( count < 4800000 ) {
count + + ;
return ;
return ;
}
# endif
GET_SHARED_GLOBAL ( is_3d , g_3d_on_off_t1 ) ;
@@ -727,7 +727,7 @@ void update_button(unsigned char b)
// 改动原因: 定义模式切换标志值, 用于在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_STEREO_8K OPT_IN_FLAG // 3 STEREO_8K模式标志
# define MODE_SPATIAL_MOVIE OPT_IN_FLAG // 3 STEREO_8K模式标志
# define MODE_UAC1 USB_IN_FLAG // 2 UAC1模式标志
//Tile 1
@@ -754,10 +754,10 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c
static unsigned game_mode_t1 = 0 ; // tile1上的模式值, 用于判断是否在无音效模式或UAC1模式
static unsigned is_no_effect_mode = 0 ; // 是否为无音效模式标志( 模式3)
static unsigned is_uac1_mode = 0 ; // 是否为UAC1模式标志( 模式4)
static unsigned actual_mode_for_led = 0 ; // UAC1模式下的实际模式值( 0=STEREO_2K, 1=SPATIAL_GAME, 2=STEREO_8K ) , 用于LED闪烁
// 改动原因: 添加当前模式变量, 用于短按切换模式( 0=无音效, 1=STEREO_2K, 2=SPATIAL_GAME, 3=STEREO_8K )
static unsigned actual_mode_for_led = 0 ; // UAC1模式下的实际模式值( 0=STEREO_2K, 1=SPATIAL_GAME, 2=SPATIAL_MOVIE ) , 用于LED闪烁
// 改动原因: 添加当前模式变量, 用于短按切换模式( 0=无音效, 1=STEREO_2K, 2=SPATIAL_GAME, 3=SPATIAL_MOVIE )
static unsigned current_mode_local = 0 ; // 当前模式值( 0-3)
// 改动原因: 添加LED闪烁相关变量, 用于STEREO_8K 模式的蓝灯闪烁
// 改动原因: 添加LED闪烁相关变量, 用于SPATIAL_MOVIE 模式的蓝灯闪烁
static unsigned blink_counter = 0 ; // LED闪烁计数器( 每100ms递增)
int ret = 0 ;
hwtimer_t timer = hwtimer_alloc ( ) ;
@@ -813,7 +813,8 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c
if ( current_mode_local > 3 ) {
current_mode_local = 0 ; // 如果值无效, 重置为STEREO_2K
}
debug_printf ( " hid_button_task received audio_mode: %d (0=NO_EFFECT, 1=STEREO_2K, 2=SPATIAL_GAME, 3=STEREO_8K) \n " , current_mode_local ) ;
debug_printf ( " hid_button_task received audio_mode: %d (0=NO_EFFECT, 1=STEREO_2K, 2=SPATIAL_GAME, 3=SPATIAL_MOVIE) \n " , current_mode_local ) ;
// 改动原因: 根据接收到的模式值初始化LED和算法状态
if ( current_mode_local = = 0 ) {
@@ -844,14 +845,14 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c
leds2_val | = ( 1 < < GREEN_LED_PIN ) ; // Green LED off
debug_printf ( " Mode 2 (SPATIAL_GAME): algorithm ON, BLUE LED \n " ) ;
} else if ( current_mode_local = = 3 ) {
// STEREO_8K 模式:蓝灯闪烁,算法开启
// SPATIAL_MOVIE 模式:蓝灯闪烁,算法开启
audio_ex3d_onoff ( 1 ) ;
is_3d_on = A3D_ON ;
SET_SHARED_GLOBAL ( g_3d_on_off_t1 , is_3d_on ) ;
leds2_val & = ( ~ ( 1 < < BLUE_LED_PIN ) ) ; // Blue LED on (初始状态)
leds1_val | = 1 ; // Red LED off
leds2_val | = ( 1 < < GREEN_LED_PIN ) ; // Green LED off
debug_printf ( " Mode 3 (STEREO_8K ): algorithm ON, BLUE LED blinking \n " ) ;
debug_printf ( " Mode 3 (SPATIAL_MOVIE ): algorithm ON, BLUE LED blinking \n " ) ;
}
port_out ( p_leds , leds1_val ) ;
port_out ( p_leds2 , leds2_val ) ;
@@ -941,7 +942,7 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c
} else {
is_stable = 1 ;
if ( press_hold_cnt > 0 ) {
// 改动原因: 短按切换模式( 0=无音效, 1=STEREO_2K, 2=SPATIAL_GAME, 3=STEREO_8K )
// 改动原因: 短按切换模式( 0=无音效, 1=STEREO_2K, 2=SPATIAL_GAME, 3=SPATIAL_MOVIE )
// 循环切换: 0→1→2→3→0
# if UAC1_MODE
unsigned old_mode = current_mode_local ;
@@ -976,7 +977,7 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c
leds2_val | = ( 1 < < GREEN_LED_PIN ) ; // Green LED off
debug_printf ( " Mode 2 (SPATIAL_GAME): algorithm ON, BLUE LED \n " ) ;
} else if ( current_mode_local = = 3 ) {
// STEREO_8K 模式:蓝灯闪烁,算法开启
// SPATIAL_MOVIE 模式:蓝灯闪烁,算法开启
audio_ex3d_onoff ( 1 ) ;
is_3d_on = A3D_ON ;
SET_SHARED_GLOBAL ( g_3d_on_off_t1 , is_3d_on ) ;
@@ -984,7 +985,7 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c
leds2_val & = ( ~ ( 1 < < BLUE_LED_PIN ) ) ; // Blue LED on
leds1_val | = 1 ; // Red LED off
leds2_val | = ( 1 < < GREEN_LED_PIN ) ; // Green LED off
debug_printf ( " Mode 3 (STEREO_8K ): algorithm ON, BLUE LED blinking \n " ) ;
debug_printf ( " Mode 3 (SPATIAL_MOVIE ): algorithm ON, BLUE LED blinking \n " ) ;
}
// 更新LED输出
@@ -1012,7 +1013,7 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c
}
last_status = key_in ;
// 改动原因: STEREO_8K 模式下, 蓝灯闪烁( 每500ms切换一次状态)
// 改动原因: SPATIAL_MOVIE 模式下, 蓝灯闪烁( 每500ms切换一次状态)
if ( current_mode_local = = 3 ) {
blink_counter + + ;
if ( blink_counter > = 5 ) { // 5 * 100ms = 500ms
@@ -1108,7 +1109,7 @@ void button_task(chanend_t c_hidSendData, chanend_t cc_mic_level, chanend_t c_ua
saved_mode = 0 ;
# elif defined(SPATIAL_GAME)
saved_mode = 2 ;
# elif defined(STEREO_8K )
# elif defined(SPATIAL_MOVIE )
saved_mode = 3 ;
# endif
save_value ( path , saved_mode ) ;
@@ -1144,10 +1145,10 @@ void button_task(chanend_t c_hidSendData, chanend_t cc_mic_level, chanend_t c_ua
SetRoleSwitchFlag ( MODE_STEREO_2K ) ;
break ;
case 2 :
SetRoleSwitchFlag ( MODE_SPATIAL_GAM E ) ;
SetRoleSwitchFlag ( MODE_SPATIAL_MOVI E ) ;
break ;
case 3 :
SetRoleSwitchFlag ( MODE_STEREO_8K ) ;
SetRoleSwitchFlag ( MODE_SPATIAL_MOVIE ) ;
break ;
default :
SetRoleSwitchFlag ( MODE_STEREO_2K ) ;
@@ -1174,7 +1175,7 @@ void button_task(chanend_t c_hidSendData, chanend_t cc_mic_level, chanend_t c_ua
}
# endif
# if defined(STEREO_8K )
# if defined(SPATIAL_MOVIE )
if ( ( saved_mode ! = 255 ) & & ( saved_mode ! = 3 ) ) {
saved_mode = 3 ;
}
@@ -1187,7 +1188,7 @@ void button_task(chanend_t c_hidSendData, chanend_t cc_mic_level, chanend_t c_ua
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 , saved_mode ) ; // 音频模式值( 0=无音效, 1=STEREO_2K, 2=SPATIAL_GAME, 3=STEREO_8K )
chan_out_byte ( cc_mic_level , saved_mode ) ; // 音频模式值( 0=无音效, 1=STEREO_2K, 2=SPATIAL_GAME, 3=SPATIAL_MOVIE )
debug_printf ( " Sent audio_mode %d to hid_button_task via cc_mic_level channel \n " , saved_mode ) ;
port_enable ( p_ctrl_keys ) ;
@@ -1227,7 +1228,7 @@ void button_task(chanend_t c_hidSendData, chanend_t cc_mic_level, chanend_t c_ua
unsigned current_mode = chan_in_word ( c_hidSendData ) ;
// 改动原因: Windows模式下只循环切换0→1→2→3→0( 不包括UAC1模式4)
// 循环切换模式: 0(STEREO_2K) -> 1(SPATIAL_GAME) -> 2(STEREO_8K ) -> 3(无音效) -> 0
// 循环切换模式: 0(STEREO_2K) -> 1(SPATIAL_GAME) -> 2(SPATIAL_MOVIE ) -> 3(无音效) -> 0
unsigned new_mode ;
unsigned mode_flag ;
debug_printf ( " current_mode: %d \n " , current_mode ) ;
@@ -1242,15 +1243,15 @@ void button_task(chanend_t c_hidSendData, chanend_t cc_mic_level, chanend_t c_ua
mode_flag = MODE_SPATIAL_GAME ;
debug_printf ( " Switching from STEREO_2K (1) to SPATIAL_GAME (2) \n " ) ;
} else if ( current_mode = = 2 ) {
// 当前是SPATIAL_GAME, 切换到STEREO_8K
// 当前是SPATIAL_GAME, 切换到SPATIAL_MOVIE
new_mode = 3 ;
mode_flag = MODE_STEREO_8K ; // STEREO_8K模式使用STEREO_8K 固件
debug_printf ( " Switching from SPATIAL_GAME (2) to STEREO_8K (3) \n " ) ;
mode_flag = MODE_SPATIAL_MOVIE ; // SPATIAL_MOVIE模式使用SPATIAL_MOVIE 固件
debug_printf ( " Switching from SPATIAL_GAME (2) to SPATIAL_MOVIE (3) \n " ) ;
} // 更新g_game_mode
else if ( current_mode = = 3 ) {
new_mode = 0 ;
mode_flag = MODE_STEREO_2K ;
debug_printf ( " Switching from STEREO_8K (3) to STEREO_2K (0) \n " ) ;
debug_printf ( " Switching from SPATIAL_MOVIE (3) to STEREO_2K (0) \n " ) ;
}
// 改动原因: 保存新的模式值到flash的 "game_mode" 文件( Windows模式专用)
@@ -1262,7 +1263,7 @@ void button_task(chanend_t c_hidSendData, chanend_t cc_mic_level, chanend_t c_ua
// 改动原因: 判断是否需要切换固件, mode 0和mode 1都使用STEREO_2K固件, 不需要reboot
// 只有在需要切换固件时才reboot, 同一固件内的模式切换( 如0<->1) 只更新模式和算法状态
# if !UAC1_MODE
if ( new_mode ! = 1 ) {
// 改动原因: 需要切换固件, 执行reboot
debug_printf ( " Set role switch flag: 0x%04X, switching firmware, rebooting... \n " , mode_flag ) ;