update os detection

This commit is contained in:
Steven Dan
2026-01-18 11:17:04 +08:00
parent 8416e609e4
commit d5e586871f
5 changed files with 169 additions and 138 deletions

View File

@@ -76,8 +76,9 @@ set(APP_COMPILER_FLAGS_ex3d_UAC1 ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2
-DINPUT_VOLUME_CONTROL=0
-DUAC1_MODE=1
-DOUTPUT_VOLUME_CONTROL=0
-DXUA_DFU_EN=0
-DSTEREO_2K
-DHID_CONTROLS=1)
-DHID_CONTROLS=0)
set(APP_COMPILER_FLAGS_ex3d_stereo_2k ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2

View File

@@ -1 +1 @@
xflash bin/factory/fact.xe --loader loader.o --upgrade 4 bin\ex3d_UAC1\app_usb_aud_phaten_gs_ex3d_UAC1.xe --upgrade 2 bin/ex3d_stereo_2k/app_usb_aud_phaten_gs_ex3d_stereo_2k.xe --upgrade 1 bin\ex3d_71_game\app_usb_aud_phaten_gs_ex3d_71_game.xe --upgrade 3 bin\ex3d_stereo_8k\app_usb_aud_phaten_gs_ex3d_stereo_8k.xe -o %1
xflash bin/factory/fact.xe --loader loader.o --upgrade 2 bin\ex3d_UAC1\app_usb_aud_phaten_gs_ex3d_UAC1.xe --upgrade 4 bin/ex3d_stereo_2k/app_usb_aud_phaten_gs_ex3d_stereo_2k.xe --upgrade 1 bin\ex3d_71_game\app_usb_aud_phaten_gs_ex3d_71_game.xe --upgrade 3 bin\ex3d_stereo_8k\app_usb_aud_phaten_gs_ex3d_stereo_8k.xe -o %1

View File

@@ -1,2 +1,2 @@
xflash --factory-version 15.3 --target-file src/core/PHATEN_GS.xn --upgrade 4 bin\ex3d_UAC1\app_usb_aud_phaten_gs_ex3d_UAC1.xe --upgrade 2 bin/ex3d_stereo_2k/app_usb_aud_phaten_gs_ex3d_stereo_2k.xe --upgrade 1 bin\ex3d_71_game\app_usb_aud_phaten_gs_ex3d_71_game.xe --upgrade 3 bin\ex3d_stereo_8k\app_usb_aud_phaten_gs_ex3d_stereo_8k.xe -o %1
xflash --factory-version 15.3 --target-file src/core/PHATEN_GS.xn --upgrade 2 bin\ex3d_UAC1\app_usb_aud_phaten_gs_ex3d_UAC1.xe --upgrade 4 bin/ex3d_stereo_2k/app_usb_aud_phaten_gs_ex3d_stereo_2k.xe --upgrade 1 bin\ex3d_71_game\app_usb_aud_phaten_gs_ex3d_71_game.xe --upgrade 3 bin\ex3d_stereo_8k\app_usb_aud_phaten_gs_ex3d_stereo_8k.xe -o %1

View File

@@ -75,7 +75,7 @@ unsigned g_game_mode = 0;
// On UserBufferManagement Tile (1)
static unsigned frame_index = 0;
//static unsigned dnr_frame_idx = 0;
static int32_t ubm_egress[UBM_TO_EX3D_CHANS][DSP_BLOCK_LENGTH]; //leaving ubm
static int32_t ubm_egress[UBM_TO_EX3D_CHANS][DSP_BLOCK_LENGTH]; //leaving ubm
static int32_t ubm_ingress[EX3D_TO_UBM_CHANS][DSP_BLOCK_LENGTH]; //entering ubm
#if AIZIP_DNR == 1
static int32_t ubm_micIn[DSP_CH_NUM][DNR_DSP_FRAME_SIZE]; //leaving ubm
@@ -89,7 +89,7 @@ void SetEqDataChan (chanend_t c) {
uc_eq_data = c;
}
void key_receiver(chanend_t c)
{
{
debug_printf("===> key_receiver\n");
// tile0
// load the license key
@@ -189,7 +189,7 @@ void UserBufferManagement(unsigned sampsFromUsbToAudio[], unsigned sampsFromAudi
for(int ch=0;ch<DSP_MIXER_OUTPUT_CHANNEL_COUNT;ch++) {
sampsFromUsbToAudio[ch] = ubm_ingress[ch][frame_index];
//sampsFromAudioToUsb[ch] = sampsFromUsbToAudio[ch]; //loopback
}
}
frame_index++;
@@ -198,7 +198,7 @@ void UserBufferManagement(unsigned sampsFromUsbToAudio[], unsigned sampsFromAudi
frame_index = 0;
chan_out_buf_word(uc_ex3d_to_ubm, (const uint32_t *)ubm_egress, UBM_TO_EX3D_CHANS * DSP_BLOCK_LENGTH);
// And get a stereo frames worth of data back from the mixer process
chan_in_buf_word(uc_ex3d_to_ubm, (uint32_t *)ubm_ingress, EX3D_TO_UBM_CHANS * DSP_BLOCK_LENGTH);
chan_in_buf_word(uc_ex3d_to_ubm, (uint32_t *)ubm_ingress, EX3D_TO_UBM_CHANS * DSP_BLOCK_LENGTH);
#if AIZIP_DNR == 1
chan_out_buf_word(uc_dsp_to_dnr_t1, (const uint32_t *)(&ubm_micIn[0]), DSP_BLOCK_LENGTH);
chan_out_buf_word(uc_dsp_to_dnr_t1, (const uint32_t *)(&ubm_micIn[1]), DSP_BLOCK_LENGTH);
@@ -206,12 +206,18 @@ void UserBufferManagement(unsigned sampsFromUsbToAudio[], unsigned sampsFromAudi
chan_in_buf_word(uc_dsp_to_dnr_t1, (uint32_t *)(&ubm_micOut[1]), DSP_BLOCK_LENGTH);
#endif
};
buffer_exchange(uc_eq_data, sampsFromUsbToAudio);
sampsFromAudioToUsb[0] =sampsFromUsbToAudio[0];
sampsFromAudioToUsb[1] = sampsFromUsbToAudio[1];
}
#ifndef HID_MAX_DATA_BYTES
#define HID_MAX_DATA_BYTES ( 64 )
#endif
unsigned hidSendData[HID_MAX_DATA_BYTES / 4];
#if (HID_CONTROLS == 1)
#include "user_hid.h"
static unsigned char lastHidData;
@@ -252,7 +258,6 @@ typedef enum {
#define CMD_CLR_FWD_TO_2ND_DEV(item) ((item) & ~0x0800)
#define CMD_MASK (~(CMD_SET(0)|CMD_GET(0)|CMD_PARAM(0)|CMD_FWD(0)|CMD_FWD_TO_2ND_DEV(0)))
#define CMD_ITEM(cmd) ((cmd) & CMD_MASK)
unsigned hidSendData[HID_MAX_DATA_BYTES / 4];
void UserHIDInit(void) {
return;
@@ -269,7 +274,7 @@ size_t UserHIDGetData( const unsigned id, unsigned char hidData[HID_MAX_DATA_BYT
Length = HID_MAX_DATA_BYTES;
}
return Length;
return Length;
}
void hid_receive_task_in_c(unsigned char * RcvData, unsigned * SendData)
{
@@ -277,7 +282,7 @@ void hid_receive_task_in_c(unsigned char * RcvData, unsigned * SendData)
unsigned *pRcvBuf = (unsigned *)(RcvData + 4);
unsigned *pSendBuf = SendData;
unsigned angle;
command_code = pRcvBuf[0];
cmdItem = CMD_ITEM(command_code);
@@ -287,7 +292,7 @@ void hid_receive_task_in_c(unsigned char * RcvData, unsigned * SendData)
debug_printf("CMD_OPEN\r\n");
break;
case CMD_ONOFF:
case CMD_ONOFF:
if (CMD_SET(CMD_ONOFF) == command_code) {
// set DrAX on/off
//audio_ex3d_onoff(pRcvBuf[1]);
@@ -342,7 +347,7 @@ void hid_receive_task_in_c(unsigned char * RcvData, unsigned * SendData)
debug_printf("Set CMD_ANGLE : %u\r\n", pRcvBuf[1]);
} else {
debug_printf("Get CMD_ANGLE : %u\r\n", pRcvBuf[1]);
uint32_t ChNum = pRcvBuf[1];
if (ChNum < NUM_USB_CHAN_OUT) {
angle = EX3D_VAngle[ChNum] << 16;
@@ -381,7 +386,7 @@ void hid_receive_task_in_c(unsigned char * RcvData, unsigned * SendData)
debug_printf("Set CMD_MUTE : %u\r\n", pRcvBuf[1]);
} else {
debug_printf("Get CMD_MUTE : %u\r\n", pRcvBuf[1]);
uint32_t ChNum = pRcvBuf[1];
if (ChNum < NUM_USB_CHAN_OUT) {
pSendBuf[idx] = EX3D_Mute[ChNum];
@@ -402,12 +407,12 @@ void hid_receive_task_in_c(unsigned char * RcvData, unsigned * SendData)
}
break;
case CMD_SOUND_FIELD_NAME:
case CMD_SOUND_FIELD_NAME:
if (CMD_GET(CMD_SOUND_FIELD_NAME) == command_code) {
int32_t sfIdx = pRcvBuf[1];
debug_printf("Get CMD_SOUND_FIELD_NAME : ");
if (sfIdx < EX3D_SF_NUM) {
#if defined(SPATIAL_VIDEO)
#if defined(SPATIAL_VIDEO)
const char * sfIdxName = "SPATIAL VIDEO"; //sfDispName[sfIdx];
#elif defined(SPATIAL_MUSIC)
const char * sfIdxName = "SPATIAL MUSIC"; //sfDispName[sfIdx];
@@ -415,7 +420,7 @@ void hid_receive_task_in_c(unsigned char * RcvData, unsigned * SendData)
const char * sfIdxName = "SPATIAL GAME"; //sfDispName[sfIdx];
#elif defined(SPATIAL_MOVIE)
const char * sfIdxName = "SPATIAL MOVIE"; //sfDispName[sfIdx];
#else
#else
const char * sfIdxName = "EXTREME";
#endif
int32_t NameLen = strlen(sfIdxName);
@@ -472,7 +477,7 @@ void hid_receive_task_in_c(unsigned char * RcvData, unsigned * SendData)
} else { // Get
debug_printf("Get CMD_ON_GAIN : %d\r\n", Ex3dOnGain);
memcpy(&pSendBuf[idx], &Ex3dOnGain, 4);
}
}
break;
case CMD_OFF_GAIN:
@@ -489,7 +494,7 @@ void hid_receive_task_in_c(unsigned char * RcvData, unsigned * SendData)
} else { // Get
debug_printf("Get CMD_OFF_GAIN : %d\r\n", Ex3dOffGain);
memcpy(&pSendBuf[idx], &Ex3dOffGain, 4);
}
}
break;
case CMD_LFE:
@@ -506,7 +511,7 @@ void hid_receive_task_in_c(unsigned char * RcvData, unsigned * SendData)
} else { // Get
debug_printf("Get CMD_LFE : %d\r\n", Ex3dLfeGain);
memcpy(&pSendBuf[idx], &Ex3dLfeGain, 4);
}
}
break;
case CMD_LMT_THRESHOLD:
@@ -529,7 +534,7 @@ void hid_receive_task_in_c(unsigned char * RcvData, unsigned * SendData)
} else { // Get
debug_printf("Get CMD_LMT_THRESHOLD : %d\r\n", Ex3dLimiterThreshold);
memcpy(&pSendBuf[idx], &Ex3dLimiterThreshold, 4);
}
}
break;
case CMD_LMT_ATTACKK_TIME:
@@ -546,7 +551,7 @@ void hid_receive_task_in_c(unsigned char * RcvData, unsigned * SendData)
} else { // Get
debug_printf("Get CMD_LMT_ATTACKK_TIME : %d\r\n", Ex3dLimiterAttackTime);
memcpy(&pSendBuf[idx], &Ex3dLimiterAttackTime, 4);
}
}
break;
case CMD_LMT_RELEASE_TIME:
@@ -563,7 +568,7 @@ void hid_receive_task_in_c(unsigned char * RcvData, unsigned * SendData)
} else { // Get
debug_printf("Get CMD_LMT_RELEASE_TIME : %d\r\n", Ex3dLimiterReleaseTime);
memcpy(&pSendBuf[idx], &Ex3dLimiterReleaseTime, 4);
}
}
break;
// dhlee++
@@ -582,8 +587,8 @@ void hid_receive_task_in_c(unsigned char * RcvData, unsigned * SendData)
} else { // Get
debug_printf("Get CMD_EXPAND_GAIN : %d\r\n", Ex3dExpandGain);
memcpy(&pSendBuf[idx], &Ex3dExpandGain, 4);
}
break;
}
break;
case CMD_REDUCE_GAIN:
if (CMD_SET(CMD_REDUCE_GAIN) == command_code) {
@@ -599,8 +604,8 @@ void hid_receive_task_in_c(unsigned char * RcvData, unsigned * SendData)
} else { // Get
debug_printf("Get CMD_REDUCE_GAIN : %d\r\n", Ex3dReduceGain);
memcpy(&pSendBuf[idx], &Ex3dReduceGain, 4);
}
break;
}
break;
default:
@@ -714,10 +719,10 @@ void update_button(unsigned char b)
#define BLUE_LED_PIN 0 // 3D LED (蓝色LED) - bit 0 of leds2_val, 0b11111110
// 改动原因定义模式切换标志值用于在SPATIAL_GAME、STEREO_8K、STEREO_2K、UAC1之间循环切换
#define MODE_STEREO_2K USB_IN_FLAG // 2 STEREO_2K模式标志
#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_UAC1 UAC1_IN_FLAG // 4 UAC1模式标志
#define MODE_UAC1 USB_IN_FLAG // 2 UAC1模式标志
//Tile 1
void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c_hidSendData, chanend_t c_uac_vol)
@@ -755,7 +760,7 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c
unsigned char RcvData[64] = {0};
unsigned SendData[HID_MAX_DATA_BYTES / 4];
SendData[0] = 1;
SendData[0] = 1;
for (unsigned char i=1; i<(HID_MAX_DATA_BYTES / 4); i++) SendData[i] = 0;
// 改动原因从button_task接收模式值通过cc_mic_level channel传输
@@ -780,9 +785,10 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c
port_out(p_leds, leds1_val);
port_out(p_leds2, leds2_val);
debug_printf("LED init: default OFF state, waiting for mode from button_task\n");
// delay_milliseconds(200);
uint32_t last_status = port_in(p_keys);
hwtimer_set_trigger_time(timer, hwtimer_get_time(timer) + KEY_POLLING_INTERVAL);
while (1) {
while (1) {
SELECT_RES(
CASE_THEN(cc_mic_level, event_mic_vol)
, CASE_THEN(c_hidRcvData, event_hid)
@@ -802,7 +808,7 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c
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);
// 改动原因根据接收到的模式值初始化LED和算法状态
if (current_mode_local == 0) {
// 无音效模式:灯灭,算法关闭
@@ -857,7 +863,7 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c
ret = i2c_codec_mic_vol_down();
debug_printf("KEY_MIC_VOL_DN\n");
break;
case MUTED_MIC:
SET_SHARED_GLOBAL(g_mute_on_off_t1, MUTE_ON);
debug_printf("MUTED_MIC\n");
@@ -884,10 +890,12 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c
RcvData[i] = chan_in_byte(c_hidRcvData);
}
if(RcvData[0] == 0x01) { // REPORT ID 1
#if (HID_CONTROLS == 1)
hid_receive_task_in_c(RcvData, SendData);
for(int i=0; i<(HID_MAX_DATA_BYTES / 4) ;i++) {
chan_out_word(c_hidSendData, SendData[i]);
}
#endif
}
}
continue;
@@ -917,7 +925,7 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c
hwtimer_set_trigger_time(timer, hwtimer_get_time(timer) + KEY_POLLING_INTERVAL);
//uint32_t key_in = port_in_when_pinsneq(p_keys, PORT_UNBUFFERED, last_status);
uint32_t key_in = port_in(p_keys);
// debug_printf("event_polling: key_in=0x%08X, last_status=0x%08X, is_stable=%d, press_hold_cnt=%d\n",
// debug_printf("event_polling: key_in=0x%08X, last_status=0x%08X, is_stable=%d, press_hold_cnt=%d\n",
// key_in, last_status, is_stable, press_hold_cnt);
if (key_in != last_status) {
if ((key_in == 0) && (is_stable)) {
@@ -929,7 +937,7 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c
if (press_hold_cnt > 0) {
// 改动原因短按切换模式0=无音效1=STEREO_2K2=SPATIAL_GAME3=STEREO_8K
// 循环切换0→1→2→3→0
#if 0
#if UAC1_MODE
unsigned old_mode = current_mode_local;
current_mode_local = (current_mode_local + 1) % 4; // 循环切换 0→1→2→3→0
debug_printf("Short press: switching mode from %d to %d\n", old_mode, current_mode_local);
@@ -972,14 +980,15 @@ 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 3 (STEREO_8K): algorithm ON, BLUE LED blinking\n");
}
// 更新LED输出
port_out(p_leds2, leds2_val);
port_out(p_leds, leds1_val);
#endif
unsigned endData[1] = {0xffffffff};
debug_printf("endData[0]: %d\n", endData[0]);
debug_printf("endData[0]: %d %d\n", endData[0], current_mode_local);
chan_out_word(c_hidSendData, endData[0]);
chan_out_word(c_hidSendData, current_mode_local);
}
}
} else {
@@ -991,12 +1000,12 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c
// saved_leds2_val = leds2_val;
// saved_leds1_val = leds1_val;
// debug_printf("Long press detected\n");
}
}
}
last_status = key_in;
// 改动原因STEREO_8K模式下蓝灯闪烁每500ms切换一次状态
if (current_mode_local == 3) {
blink_counter++;
@@ -1012,10 +1021,10 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c
}
port_out(p_leds2, leds2_val);
}
}
}
else {
blink_counter = 0;
}
}
#if 0
if (current_mode_local == 0) {
leds2_val |= (1<<BLUE_LED_PIN); // Blue LED off
@@ -1062,12 +1071,11 @@ void button_task(chanend_t c_hidSendData, chanend_t cc_mic_level, chanend_t c_ua
static unsigned isMute = 0;
uint8_t tmp = 0;
#if (HID_CONTROLS == 1)
unsigned hidData0;
#endif
unsigned ex3d_key_verified;
delay_milliseconds(300);
debug_printf("button task start\n");
debug_printf("button task start\n");
// 改动原因区分Windows模式和UAC1模式分别从不同的flash文件加载
// Windows模式从 "game_mode" 加载(模式值 0-3
@@ -1075,12 +1083,12 @@ void button_task(chanend_t c_hidSendData, chanend_t cc_mic_level, chanend_t c_ua
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;
@@ -1101,19 +1109,24 @@ void button_task(chanend_t c_hidSendData, chanend_t cc_mic_level, chanend_t c_ua
debug_printf("Saved game_mode to flash: %d\n", saved_mode);
}
#endif
if (host_os == OS_OTHERS) {
printf("host_os: %d\n", host_os);
#if 0
if ((host_os == OS_OTHERS) || (host_os == 0)) {
// 改动原因检测到非Windows系统切换到UAC1模式
debug_printf("Detected non-Windows OS (OS_OTHERS), switching to UAC1 mode\n");
#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
}
else {
debug_printf("Detected Windows OS (OS_WIN)\n");
#if UAC1_MODE == 1
#endif
#if UAC1_MODE == 1
if (host_os == OS_WIN) {
printf("Detected Windows OS (OS_WIN) saved_mode: %d\n", saved_mode);
{
@@ -1122,23 +1135,25 @@ void button_task(chanend_t c_hidSendData, chanend_t cc_mic_level, chanend_t c_ua
SetRoleSwitchFlag(MODE_STEREO_2K);
break;
case 1:
SetRoleSwitchFlag(MODE_SPATIAL_GAME);
SetRoleSwitchFlag(MODE_STEREO_2K);
break;
case 2:
SetRoleSwitchFlag(MODE_STEREO_8K);
SetRoleSwitchFlag(MODE_SPATIAL_GAME);
break;
case 3:
SetRoleSwitchFlag(MODE_STEREO_2K);
SetRoleSwitchFlag(MODE_STEREO_8K);
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);
device_reboot();
while (1);
}
}
#endif
#if defined(STEREO_2K)
@@ -1159,18 +1174,16 @@ void button_task(chanend_t c_hidSendData, chanend_t cc_mic_level, chanend_t c_ua
}
#endif
}
g_windows_detect_done = 1;
// 改动原因更新全局变量g_game_mode为保存的模式值
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, saved_mode); // 音频模式值0=无音效1=STEREO_2K2=SPATIAL_GAME3=STEREO_8K
debug_printf("Sent audio_mode %d to hid_button_task via cc_mic_level channel\n", saved_mode);
port_enable(p_ctrl_keys);
port_ctrl_keys = port_in(p_ctrl_keys);
if ((port_ctrl_keys & KEY_MUTE) == 0) {
@@ -1186,16 +1199,16 @@ void button_task(chanend_t c_hidSendData, chanend_t cc_mic_level, chanend_t c_ua
}
last_ctrl_keys = ((port_ctrl_keys) & KEY_BITS);
last_ctrl_keys ^= KEY_MUTE;
last_ctrl_keys ^= KEY_MUTE;
hwtimer_set_trigger_time(timer, hwtimer_get_time(timer) + KEY_POLLING_INTERVAL);
while (1) {
SELECT_RES(
CASE_THEN(c_hidSendData, event_hid)
, CASE_THEN(timer, event_polling)
)
)
{
event_hid:
event_hid:
{
unsigned hidData0 = chan_in_word(c_hidSendData);
unsigned *reportData = hidSendData;
@@ -1205,22 +1218,20 @@ void button_task(chanend_t c_hidSendData, chanend_t cc_mic_level, chanend_t c_ua
// 改动原因收到0xffffffff后循环切换模式并保存到flash然后设置切换标志
// 注意UAC1模式下不会收到此命令hid_button_task不发送
// 读取当前g_game_mode值
unsigned current_mode;
GET_SHARED_GLOBAL(current_mode, g_game_mode);
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
unsigned new_mode;
unsigned mode_flag;
debug_printf("current_mode: %d\n", current_mode);
#if UAC1_MODE != 1
if (current_mode == 0) {
// 当前是STEREO_2K切换到STEREO_2K
new_mode = 1;
mode_flag = MODE_STEREO_2K;
debug_printf("Switching from STEREO_2K (0) to STEREO_2K (1)\n");
} else if (current_mode == 1) {
// 当前是STEREO_2K切换到SPATIAL_GAME
// 当前是STEREO_2K切换到SPATIAL_GAME
new_mode = 2;
mode_flag = MODE_SPATIAL_GAME;
debug_printf("Switching from STEREO_2K (1) to SPATIAL_GAME (2)\n");
@@ -1240,31 +1251,48 @@ void button_task(chanend_t c_hidSendData, chanend_t cc_mic_level, chanend_t c_ua
unsigned char path[] = "game_mode";
save_value(path, (unsigned char)new_mode);
debug_printf("Saved game_mode %d to flash\n", new_mode);
debug_printf("Set role switch flag: 0x%04X\n", mode_flag);
// 设置角色切换标志,触发模式切换
SetRoleSwitchFlag(mode_flag);
delay_milliseconds(20);
device_reboot();
while (1);
// 改动原因判断是否需要切换固件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);
SetRoleSwitchFlag(mode_flag);
delay_milliseconds(20);
device_reboot();
while (1);
} else {
// 改动原因不需要切换固件只更新模式和算法状态如mode 0<->1切换不reboot
debug_printf("Same firmware mode (0x%04X), updating mode and algorithm state without reboot\n", mode_flag);
SET_SHARED_GLOBAL(g_game_mode, new_mode);
// 改动原因通过channel发送新的audio_mode给hid_button_task更新LED和算法状态
chan_out_byte(cc_mic_level, 0xFC); // 音频模式传输命令
chan_out_byte(cc_mic_level, new_mode); // 音频模式值
debug_printf("Sent audio_mode %d to hid_button_task via cc_mic_level channel\n", new_mode);
}
#endif
break;
}
#if (HID_CONTROLS == 1)
for (int i=1; i<(HID_MAX_DATA_BYTES/4); i++) {
reportData[i] = chan_in_word(c_hidSendData);
}
hidSetChangePending(1);
#endif
continue;
}
event_polling:
{
hwtimer_set_trigger_time(timer, hwtimer_get_time(timer) + KEY_POLLING_INTERVAL);
// 改动原因将按键处理逻辑从dnr_dsp_buffer_task合并到button_task统一管理所有按键事件
// 改动原因按键检测间隔从100ms改为10ms提高响应速度每次轮询都检测按键状态
hidData0 = 0;
curr_ctrl_keys = (port_in(p_ctrl_keys)) & KEY_BITS;
// 改动原因:使用防抖机制,连续检测到相同状态变化才响应,避免按键抖动
if (curr_ctrl_keys != last_ctrl_keys) {
debounce_cnt++; // 状态变化计数器递增
@@ -1287,7 +1315,7 @@ void button_task(chanend_t c_hidSendData, chanend_t cc_mic_level, chanend_t c_ua
}
if (tmp) {
chan_out_byte(cc_mic_level, tmp); // 发送到hid_button_task处理
}
}
break;
case KEY_MUTE:
// 改动原因处理静音按键更新静音状态并通知hid_button_task和dnr_dsp_buffer_task
@@ -1305,6 +1333,7 @@ void button_task(chanend_t c_hidSendData, chanend_t cc_mic_level, chanend_t c_ua
debug_printf("MUTE: muted\n");
}
break;
#if (HID_CONTROLS == 1)
case KEY_PLAY_VOL_DN:
// 改动原因处理播放音量减按键发送HID控制命令
if ((curr_ctrl_keys & KEY_PLAY_VOL_DN) == 0) {
@@ -1318,6 +1347,7 @@ void button_task(chanend_t c_hidSendData, chanend_t cc_mic_level, chanend_t c_ua
update_button(HID_CONTROL_VOLUP); // 更新HID报告
}
break;
#endif
default:
break;
}
@@ -1326,15 +1356,15 @@ void button_task(chanend_t c_hidSendData, chanend_t cc_mic_level, chanend_t c_ua
} else {
debounce_cnt = 0; // 状态未变化,重置防抖计数器
}
GET_SHARED_GLOBAL(uac_vol, g_uac_vol);
if (uac_vol != last_uac_vol) {
unsigned conv_vol = (0xffffffff - uac_vol + 1) >> 8;
//debug_printf("vol: - %d\n", conv_vol);
//debug_printf("vol: - %d\n", conv_vol);
chan_out_word(c_uac_vol, conv_vol);
last_uac_vol = uac_vol;
}
#if EQ_EN
// 改动原因EQ模式切换处理每100ms检查一次从AudioHwRemote2整合到button_task
{
@@ -1356,12 +1386,12 @@ void button_task(chanend_t c_hidSendData, chanend_t cc_mic_level, chanend_t c_ua
SET_SHARED_GLOBAL(g_force_request_eq_mode_change, 0);
}
}
// 改动原因EQ参数存储处理每500ms保存一次从AudioHwRemote2整合到button_task
eq_sync_counter++;
if (eq_sync_counter >= 5) { // 5 * 100ms = 500ms
eq_sync_counter = 0;
// 使用单参数存储系统保存脏参数独立保存EQ参数
if (eq_save_dirty_params() == 0) {
//debug_printf("Single EQ parameters synced to Flash successfully\n");
@@ -1384,9 +1414,9 @@ void button_task(chanend_t c_hidSendData, chanend_t cc_mic_level, chanend_t c_ua
}
}
#endif
continue;
}
}
}
}
}
@@ -1427,9 +1457,9 @@ void ex3d_task(){
#error you need to define SPATIAL_DRAMA or STEREO_8K....
#endif
int dsp_worker(chanend_t c_dsp_to_ex3d,
int dsp_worker(chanend_t c_dsp_to_ex3d,
td_block_fir_filter_t * filters[DSP_WORKER_FILTER_PER_DATA_CH*DSP_WORKER_DATA_CH_COUNT]){
int32_t sample_buffer[DSP_WORKER_DATA_CH_COUNT][TD_DATA_BUFFER_ELEMENTS];
td_block_fir_data_t fir_data[DSP_WORKER_DATA_CH_COUNT];
@@ -1438,7 +1468,7 @@ int dsp_worker(chanend_t c_dsp_to_ex3d,
int32_t input[DSP_WORKER_DATA_CH_COUNT][DSP_BLOCK_LENGTH];
int32_t output[DSP_WORKER_FILTER_PER_DATA_CH*DSP_WORKER_DATA_CH_COUNT][DSP_BLOCK_LENGTH];
memset(sample_buffer, 0, sizeof(sample_buffer));
while(1){
for(int ch=0;ch<DSP_WORKER_DATA_CH_COUNT;ch++){
@@ -1467,25 +1497,25 @@ int dsp_worker_tile(chanend_t c_dsp_to_ex3d, int worker_id){
#if defined(STEREO_2K)
if(worker_id == 0){
td_block_fir_filter_t * filters[DSP_WORKER_DATA_CH_COUNT*DSP_WORKER_FILTER_PER_DATA_CH] =
td_block_fir_filter_t * filters[DSP_WORKER_DATA_CH_COUNT*DSP_WORKER_FILTER_PER_DATA_CH] =
{
&td_block_fir_filter_SPATIAL_STEREO_2K_v090h090_left, 0
&td_block_fir_filter_SPATIAL_STEREO_2K_v090h090_left, 0
};
dsp_worker(c_dsp_to_ex3d, filters);
} else if(worker_id == 1){
td_block_fir_filter_t * filters[DSP_WORKER_DATA_CH_COUNT*DSP_WORKER_FILTER_PER_DATA_CH] =
td_block_fir_filter_t * filters[DSP_WORKER_DATA_CH_COUNT*DSP_WORKER_FILTER_PER_DATA_CH] =
{
0, &td_block_fir_filter_SPATIAL_STEREO_2K_v090h090_right
};
dsp_worker(c_dsp_to_ex3d, filters);
} else if(worker_id == 2){
td_block_fir_filter_t * filters[DSP_WORKER_DATA_CH_COUNT*DSP_WORKER_FILTER_PER_DATA_CH] =
td_block_fir_filter_t * filters[DSP_WORKER_DATA_CH_COUNT*DSP_WORKER_FILTER_PER_DATA_CH] =
{
&td_block_fir_filter_SPATIAL_STEREO_2K_v090h270_left, 0
};
dsp_worker(c_dsp_to_ex3d, filters);
} else if(worker_id == 3){
td_block_fir_filter_t * filters[DSP_WORKER_DATA_CH_COUNT*DSP_WORKER_FILTER_PER_DATA_CH] =
td_block_fir_filter_t * filters[DSP_WORKER_DATA_CH_COUNT*DSP_WORKER_FILTER_PER_DATA_CH] =
{
0, &td_block_fir_filter_SPATIAL_STEREO_2K_v090h270_right
};
@@ -1496,25 +1526,25 @@ int dsp_worker_tile(chanend_t c_dsp_to_ex3d, int worker_id){
#elif defined(STEREO_8K)
if(worker_id == 0){
td_block_fir_filter_t * filters[DSP_WORKER_DATA_CH_COUNT*DSP_WORKER_FILTER_PER_DATA_CH] =
td_block_fir_filter_t * filters[DSP_WORKER_DATA_CH_COUNT*DSP_WORKER_FILTER_PER_DATA_CH] =
{
&td_block_fir_filter_SPATIAL_STEREO_8K_v090h090_left, 0
&td_block_fir_filter_SPATIAL_STEREO_8K_v090h090_left, 0
};
dsp_worker(c_dsp_to_ex3d, filters);
} else if(worker_id == 1){
td_block_fir_filter_t * filters[DSP_WORKER_DATA_CH_COUNT*DSP_WORKER_FILTER_PER_DATA_CH] =
td_block_fir_filter_t * filters[DSP_WORKER_DATA_CH_COUNT*DSP_WORKER_FILTER_PER_DATA_CH] =
{
0, &td_block_fir_filter_SPATIAL_STEREO_8K_v090h090_right
};
dsp_worker(c_dsp_to_ex3d, filters);
} else if(worker_id == 2){
td_block_fir_filter_t * filters[DSP_WORKER_DATA_CH_COUNT*DSP_WORKER_FILTER_PER_DATA_CH] =
td_block_fir_filter_t * filters[DSP_WORKER_DATA_CH_COUNT*DSP_WORKER_FILTER_PER_DATA_CH] =
{
&td_block_fir_filter_SPATIAL_STEREO_8K_v090h270_left, 0
};
dsp_worker(c_dsp_to_ex3d, filters);
} else if(worker_id == 3){
td_block_fir_filter_t * filters[DSP_WORKER_DATA_CH_COUNT*DSP_WORKER_FILTER_PER_DATA_CH] =
td_block_fir_filter_t * filters[DSP_WORKER_DATA_CH_COUNT*DSP_WORKER_FILTER_PER_DATA_CH] =
{
0, &td_block_fir_filter_SPATIAL_STEREO_8K_v090h270_right
};
@@ -1524,32 +1554,32 @@ int dsp_worker_tile(chanend_t c_dsp_to_ex3d, int worker_id){
}
#elif defined(SPATIAL_DRAMA)
#elif defined(SPATIAL_DRAMA)
if(worker_id == 0){
td_block_fir_filter_t * filters[DSP_WORKER_DATA_CH_COUNT*DSP_WORKER_FILTER_PER_DATA_CH] =
td_block_fir_filter_t * filters[DSP_WORKER_DATA_CH_COUNT*DSP_WORKER_FILTER_PER_DATA_CH] =
{
&td_block_fir_filter_SPATIAL_71_DRAMA_v090h225_left, &td_block_fir_filter_SPATIAL_71_DRAMA_v090h225_right,
&td_block_fir_filter_SPATIAL_71_DRAMA_v090h315_left, &td_block_fir_filter_SPATIAL_71_DRAMA_v090h315_right
&td_block_fir_filter_SPATIAL_71_DRAMA_v090h225_left, &td_block_fir_filter_SPATIAL_71_DRAMA_v090h225_right,
&td_block_fir_filter_SPATIAL_71_DRAMA_v090h315_left, &td_block_fir_filter_SPATIAL_71_DRAMA_v090h315_right
};
dsp_worker(c_dsp_to_ex3d, filters);
} else if(worker_id == 1){
td_block_fir_filter_t * filters[DSP_WORKER_DATA_CH_COUNT*DSP_WORKER_FILTER_PER_DATA_CH] =
td_block_fir_filter_t * filters[DSP_WORKER_DATA_CH_COUNT*DSP_WORKER_FILTER_PER_DATA_CH] =
{
&td_block_fir_filter_SPATIAL_71_DRAMA_v090h045_left, &td_block_fir_filter_SPATIAL_71_DRAMA_v090h045_right,
&td_block_fir_filter_SPATIAL_71_DRAMA_v090h135_left, &td_block_fir_filter_SPATIAL_71_DRAMA_v090h135_right
};
dsp_worker(c_dsp_to_ex3d, filters);
} else if(worker_id == 2){
td_block_fir_filter_t * filters[DSP_WORKER_DATA_CH_COUNT*DSP_WORKER_FILTER_PER_DATA_CH] =
td_block_fir_filter_t * filters[DSP_WORKER_DATA_CH_COUNT*DSP_WORKER_FILTER_PER_DATA_CH] =
{
&td_block_fir_filter_SPATIAL_71_DRAMA_v090h000_left, &td_block_fir_filter_SPATIAL_71_DRAMA_v090h000_right,
&td_block_fir_filter_SPATIAL_71_DRAMA_lfe_left, &td_block_fir_filter_SPATIAL_71_DRAMA_lfe_right
&td_block_fir_filter_SPATIAL_71_DRAMA_lfe_left, &td_block_fir_filter_SPATIAL_71_DRAMA_lfe_right
};
dsp_worker(c_dsp_to_ex3d, filters);
} else if(worker_id == 3){
td_block_fir_filter_t * filters[DSP_WORKER_DATA_CH_COUNT*DSP_WORKER_FILTER_PER_DATA_CH] =
td_block_fir_filter_t * filters[DSP_WORKER_DATA_CH_COUNT*DSP_WORKER_FILTER_PER_DATA_CH] =
{
&td_block_fir_filter_SPATIAL_71_DRAMA_v090h270_left, &td_block_fir_filter_SPATIAL_71_DRAMA_v090h270_right,
&td_block_fir_filter_SPATIAL_71_DRAMA_v090h270_left, &td_block_fir_filter_SPATIAL_71_DRAMA_v090h270_right,
&td_block_fir_filter_SPATIAL_71_DRAMA_v090h090_left, &td_block_fir_filter_SPATIAL_71_DRAMA_v090h090_right
};
dsp_worker(c_dsp_to_ex3d, filters);
@@ -1557,32 +1587,32 @@ int dsp_worker_tile(chanend_t c_dsp_to_ex3d, int worker_id){
exit(1);
}
#elif defined(SPATIAL_GAME)
#elif defined(SPATIAL_GAME)
if(worker_id == 0){
td_block_fir_filter_t * filters[DSP_WORKER_DATA_CH_COUNT*DSP_WORKER_FILTER_PER_DATA_CH] =
td_block_fir_filter_t * filters[DSP_WORKER_DATA_CH_COUNT*DSP_WORKER_FILTER_PER_DATA_CH] =
{
&td_block_fir_filter_SPATIAL_71_GAME_v090h225_left, &td_block_fir_filter_SPATIAL_71_GAME_v090h225_right,
&td_block_fir_filter_SPATIAL_71_GAME_v090h315_left, &td_block_fir_filter_SPATIAL_71_GAME_v090h315_right
&td_block_fir_filter_SPATIAL_71_GAME_v090h225_left, &td_block_fir_filter_SPATIAL_71_GAME_v090h225_right,
&td_block_fir_filter_SPATIAL_71_GAME_v090h315_left, &td_block_fir_filter_SPATIAL_71_GAME_v090h315_right
};
dsp_worker(c_dsp_to_ex3d, filters);
} else if(worker_id == 1){
td_block_fir_filter_t * filters[DSP_WORKER_DATA_CH_COUNT*DSP_WORKER_FILTER_PER_DATA_CH] =
td_block_fir_filter_t * filters[DSP_WORKER_DATA_CH_COUNT*DSP_WORKER_FILTER_PER_DATA_CH] =
{
&td_block_fir_filter_SPATIAL_71_GAME_v090h045_left, &td_block_fir_filter_SPATIAL_71_GAME_v090h045_right,
&td_block_fir_filter_SPATIAL_71_GAME_v090h135_left, &td_block_fir_filter_SPATIAL_71_GAME_v090h135_right
};
dsp_worker(c_dsp_to_ex3d, filters);
} else if(worker_id == 2){
td_block_fir_filter_t * filters[DSP_WORKER_DATA_CH_COUNT*DSP_WORKER_FILTER_PER_DATA_CH] =
td_block_fir_filter_t * filters[DSP_WORKER_DATA_CH_COUNT*DSP_WORKER_FILTER_PER_DATA_CH] =
{
&td_block_fir_filter_SPATIAL_71_GAME_v090h000_left, &td_block_fir_filter_SPATIAL_71_GAME_v090h000_right,
&td_block_fir_filter_SPATIAL_71_GAME_lfe_left, &td_block_fir_filter_SPATIAL_71_GAME_lfe_right
&td_block_fir_filter_SPATIAL_71_GAME_lfe_left, &td_block_fir_filter_SPATIAL_71_GAME_lfe_right
};
dsp_worker(c_dsp_to_ex3d, filters);
} else if(worker_id == 3){
td_block_fir_filter_t * filters[DSP_WORKER_DATA_CH_COUNT*DSP_WORKER_FILTER_PER_DATA_CH] =
td_block_fir_filter_t * filters[DSP_WORKER_DATA_CH_COUNT*DSP_WORKER_FILTER_PER_DATA_CH] =
{
&td_block_fir_filter_SPATIAL_71_GAME_v090h270_left, &td_block_fir_filter_SPATIAL_71_GAME_v090h270_right,
&td_block_fir_filter_SPATIAL_71_GAME_v090h270_left, &td_block_fir_filter_SPATIAL_71_GAME_v090h270_right,
&td_block_fir_filter_SPATIAL_71_GAME_v090h090_left, &td_block_fir_filter_SPATIAL_71_GAME_v090h090_right
};
dsp_worker(c_dsp_to_ex3d, filters);
@@ -1590,32 +1620,32 @@ int dsp_worker_tile(chanend_t c_dsp_to_ex3d, int worker_id){
exit(1);
}
#elif defined(SPATIAL_MOVIE)
#elif defined(SPATIAL_MOVIE)
if(worker_id == 0){
td_block_fir_filter_t * filters[DSP_WORKER_DATA_CH_COUNT*DSP_WORKER_FILTER_PER_DATA_CH] =
td_block_fir_filter_t * filters[DSP_WORKER_DATA_CH_COUNT*DSP_WORKER_FILTER_PER_DATA_CH] =
{
&td_block_fir_filter_SPATIAL_71_MOVIE_v090h225_left, &td_block_fir_filter_SPATIAL_71_MOVIE_v090h225_right,
&td_block_fir_filter_SPATIAL_71_MOVIE_v090h315_left, &td_block_fir_filter_SPATIAL_71_MOVIE_v090h315_right
&td_block_fir_filter_SPATIAL_71_MOVIE_v090h225_left, &td_block_fir_filter_SPATIAL_71_MOVIE_v090h225_right,
&td_block_fir_filter_SPATIAL_71_MOVIE_v090h315_left, &td_block_fir_filter_SPATIAL_71_MOVIE_v090h315_right
};
dsp_worker(c_dsp_to_ex3d, filters);
} else if(worker_id == 1){
td_block_fir_filter_t * filters[DSP_WORKER_DATA_CH_COUNT*DSP_WORKER_FILTER_PER_DATA_CH] =
td_block_fir_filter_t * filters[DSP_WORKER_DATA_CH_COUNT*DSP_WORKER_FILTER_PER_DATA_CH] =
{
&td_block_fir_filter_SPATIAL_71_MOVIE_v090h045_left, &td_block_fir_filter_SPATIAL_71_MOVIE_v090h045_right,
&td_block_fir_filter_SPATIAL_71_MOVIE_v090h135_left, &td_block_fir_filter_SPATIAL_71_MOVIE_v090h135_right
};
dsp_worker(c_dsp_to_ex3d, filters);
} else if(worker_id == 2){
td_block_fir_filter_t * filters[DSP_WORKER_DATA_CH_COUNT*DSP_WORKER_FILTER_PER_DATA_CH] =
td_block_fir_filter_t * filters[DSP_WORKER_DATA_CH_COUNT*DSP_WORKER_FILTER_PER_DATA_CH] =
{
&td_block_fir_filter_SPATIAL_71_MOVIE_v090h000_left, &td_block_fir_filter_SPATIAL_71_MOVIE_v090h000_right,
&td_block_fir_filter_SPATIAL_71_MOVIE_lfe_left, &td_block_fir_filter_SPATIAL_71_MOVIE_lfe_right
&td_block_fir_filter_SPATIAL_71_MOVIE_lfe_left, &td_block_fir_filter_SPATIAL_71_MOVIE_lfe_right
};
dsp_worker(c_dsp_to_ex3d, filters);
} else if(worker_id == 3){
td_block_fir_filter_t * filters[DSP_WORKER_DATA_CH_COUNT*DSP_WORKER_FILTER_PER_DATA_CH] =
td_block_fir_filter_t * filters[DSP_WORKER_DATA_CH_COUNT*DSP_WORKER_FILTER_PER_DATA_CH] =
{
&td_block_fir_filter_SPATIAL_71_MOVIE_v090h270_left, &td_block_fir_filter_SPATIAL_71_MOVIE_v090h270_right,
&td_block_fir_filter_SPATIAL_71_MOVIE_v090h270_left, &td_block_fir_filter_SPATIAL_71_MOVIE_v090h270_right,
&td_block_fir_filter_SPATIAL_71_MOVIE_v090h090_left, &td_block_fir_filter_SPATIAL_71_MOVIE_v090h090_right
};
dsp_worker(c_dsp_to_ex3d, filters);
@@ -1623,32 +1653,32 @@ int dsp_worker_tile(chanend_t c_dsp_to_ex3d, int worker_id){
exit(1);
}
#elif defined(SPATIAL_MUSIC)
#elif defined(SPATIAL_MUSIC)
if(worker_id == 0){
td_block_fir_filter_t * filters[DSP_WORKER_DATA_CH_COUNT*DSP_WORKER_FILTER_PER_DATA_CH] =
td_block_fir_filter_t * filters[DSP_WORKER_DATA_CH_COUNT*DSP_WORKER_FILTER_PER_DATA_CH] =
{
&td_block_fir_filter_SPATIAL_71_MUSIC_v090h225_left, &td_block_fir_filter_SPATIAL_71_MUSIC_v090h225_right,
&td_block_fir_filter_SPATIAL_71_MUSIC_v090h315_left, &td_block_fir_filter_SPATIAL_71_MUSIC_v090h315_right
&td_block_fir_filter_SPATIAL_71_MUSIC_v090h225_left, &td_block_fir_filter_SPATIAL_71_MUSIC_v090h225_right,
&td_block_fir_filter_SPATIAL_71_MUSIC_v090h315_left, &td_block_fir_filter_SPATIAL_71_MUSIC_v090h315_right
};
dsp_worker(c_dsp_to_ex3d, filters);
} else if(worker_id == 1){
td_block_fir_filter_t * filters[DSP_WORKER_DATA_CH_COUNT*DSP_WORKER_FILTER_PER_DATA_CH] =
td_block_fir_filter_t * filters[DSP_WORKER_DATA_CH_COUNT*DSP_WORKER_FILTER_PER_DATA_CH] =
{
&td_block_fir_filter_SPATIAL_71_MUSIC_v090h045_left, &td_block_fir_filter_SPATIAL_71_MUSIC_v090h045_right,
&td_block_fir_filter_SPATIAL_71_MUSIC_v090h135_left, &td_block_fir_filter_SPATIAL_71_MUSIC_v090h135_right
};
dsp_worker(c_dsp_to_ex3d, filters);
} else if(worker_id == 2){
td_block_fir_filter_t * filters[DSP_WORKER_DATA_CH_COUNT*DSP_WORKER_FILTER_PER_DATA_CH] =
td_block_fir_filter_t * filters[DSP_WORKER_DATA_CH_COUNT*DSP_WORKER_FILTER_PER_DATA_CH] =
{
&td_block_fir_filter_SPATIAL_71_MUSIC_v090h000_left, &td_block_fir_filter_SPATIAL_71_MUSIC_v090h000_right,
&td_block_fir_filter_SPATIAL_71_MUSIC_lfe_left, &td_block_fir_filter_SPATIAL_71_MUSIC_lfe_right
&td_block_fir_filter_SPATIAL_71_MUSIC_lfe_left, &td_block_fir_filter_SPATIAL_71_MUSIC_lfe_right
};
dsp_worker(c_dsp_to_ex3d, filters);
} else if(worker_id == 3){
td_block_fir_filter_t * filters[DSP_WORKER_DATA_CH_COUNT*DSP_WORKER_FILTER_PER_DATA_CH] =
td_block_fir_filter_t * filters[DSP_WORKER_DATA_CH_COUNT*DSP_WORKER_FILTER_PER_DATA_CH] =
{
&td_block_fir_filter_SPATIAL_71_MUSIC_v090h270_left, &td_block_fir_filter_SPATIAL_71_MUSIC_v090h270_right,
&td_block_fir_filter_SPATIAL_71_MUSIC_v090h270_left, &td_block_fir_filter_SPATIAL_71_MUSIC_v090h270_right,
&td_block_fir_filter_SPATIAL_71_MUSIC_v090h090_left, &td_block_fir_filter_SPATIAL_71_MUSIC_v090h090_right
};
dsp_worker(c_dsp_to_ex3d, filters);

View File

@@ -102,6 +102,7 @@ extern void key_receiver(chanend c_key);
#define USER_MAIN_CORES on tile[1]: {\
par\
{\
hid_button_task(cc_mic_level, c_hidRcvData, c_hidSendData, c_uac_vol);\
ex3d_task();\
par(int i=0;i<DSP_WORKER_COUNT;i++) dsp_worker_tile(c_dsp_to_ex3d[i], i);\
unsafe\
@@ -111,7 +112,6 @@ extern void key_receiver(chanend c_key);
for(int i=0;i<DSP_WORKER_COUNT;i++)\
uc_dsp_to_ex3d[i] = (chanend) c_dsp_to_ex3d[i];\
}\
hid_button_task(cc_mic_level, c_hidRcvData, c_hidSendData, c_uac_vol);\
}\
}\
on tile[0]: {\