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 -DINPUT_VOLUME_CONTROL=0
-DUAC1_MODE=1 -DUAC1_MODE=1
-DOUTPUT_VOLUME_CONTROL=0 -DOUTPUT_VOLUME_CONTROL=0
-DXUA_DFU_EN=0
-DSTEREO_2K -DSTEREO_2K
-DHID_CONTROLS=1) -DHID_CONTROLS=0)
set(APP_COMPILER_FLAGS_ex3d_stereo_2k ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2 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) // On UserBufferManagement Tile (1)
static unsigned frame_index = 0; static unsigned frame_index = 0;
//static unsigned dnr_frame_idx = 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 static int32_t ubm_ingress[EX3D_TO_UBM_CHANS][DSP_BLOCK_LENGTH]; //entering ubm
#if AIZIP_DNR == 1 #if AIZIP_DNR == 1
static int32_t ubm_micIn[DSP_CH_NUM][DNR_DSP_FRAME_SIZE]; //leaving ubm 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; uc_eq_data = c;
} }
void key_receiver(chanend_t c) void key_receiver(chanend_t c)
{ {
debug_printf("===> key_receiver\n"); debug_printf("===> key_receiver\n");
// tile0 // tile0
// load the license key // 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++) { for(int ch=0;ch<DSP_MIXER_OUTPUT_CHANNEL_COUNT;ch++) {
sampsFromUsbToAudio[ch] = ubm_ingress[ch][frame_index]; sampsFromUsbToAudio[ch] = ubm_ingress[ch][frame_index];
//sampsFromAudioToUsb[ch] = sampsFromUsbToAudio[ch]; //loopback //sampsFromAudioToUsb[ch] = sampsFromUsbToAudio[ch]; //loopback
} }
frame_index++; frame_index++;
@@ -198,7 +198,7 @@ void UserBufferManagement(unsigned sampsFromUsbToAudio[], unsigned sampsFromAudi
frame_index = 0; frame_index = 0;
chan_out_buf_word(uc_ex3d_to_ubm, (const uint32_t *)ubm_egress, UBM_TO_EX3D_CHANS * DSP_BLOCK_LENGTH); 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 // 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 #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[0]), DSP_BLOCK_LENGTH);
chan_out_buf_word(uc_dsp_to_dnr_t1, (const uint32_t *)(&ubm_micIn[1]), 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); chan_in_buf_word(uc_dsp_to_dnr_t1, (uint32_t *)(&ubm_micOut[1]), DSP_BLOCK_LENGTH);
#endif #endif
}; };
buffer_exchange(uc_eq_data, sampsFromUsbToAudio); buffer_exchange(uc_eq_data, sampsFromUsbToAudio);
sampsFromAudioToUsb[0] =sampsFromUsbToAudio[0]; sampsFromAudioToUsb[0] =sampsFromUsbToAudio[0];
sampsFromAudioToUsb[1] = sampsFromUsbToAudio[1]; 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) #if (HID_CONTROLS == 1)
#include "user_hid.h" #include "user_hid.h"
static unsigned char lastHidData; static unsigned char lastHidData;
@@ -252,7 +258,6 @@ typedef enum {
#define CMD_CLR_FWD_TO_2ND_DEV(item) ((item) & ~0x0800) #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_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) #define CMD_ITEM(cmd) ((cmd) & CMD_MASK)
unsigned hidSendData[HID_MAX_DATA_BYTES / 4];
void UserHIDInit(void) { void UserHIDInit(void) {
return; return;
@@ -269,7 +274,7 @@ size_t UserHIDGetData( const unsigned id, unsigned char hidData[HID_MAX_DATA_BYT
Length = HID_MAX_DATA_BYTES; Length = HID_MAX_DATA_BYTES;
} }
return Length; return Length;
} }
void hid_receive_task_in_c(unsigned char * RcvData, unsigned * SendData) 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 *pRcvBuf = (unsigned *)(RcvData + 4);
unsigned *pSendBuf = SendData; unsigned *pSendBuf = SendData;
unsigned angle; unsigned angle;
command_code = pRcvBuf[0]; command_code = pRcvBuf[0];
cmdItem = CMD_ITEM(command_code); 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"); debug_printf("CMD_OPEN\r\n");
break; break;
case CMD_ONOFF: case CMD_ONOFF:
if (CMD_SET(CMD_ONOFF) == command_code) { if (CMD_SET(CMD_ONOFF) == command_code) {
// set DrAX on/off // set DrAX on/off
//audio_ex3d_onoff(pRcvBuf[1]); //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]); debug_printf("Set CMD_ANGLE : %u\r\n", pRcvBuf[1]);
} else { } else {
debug_printf("Get CMD_ANGLE : %u\r\n", pRcvBuf[1]); debug_printf("Get CMD_ANGLE : %u\r\n", pRcvBuf[1]);
uint32_t ChNum = pRcvBuf[1]; uint32_t ChNum = pRcvBuf[1];
if (ChNum < NUM_USB_CHAN_OUT) { if (ChNum < NUM_USB_CHAN_OUT) {
angle = EX3D_VAngle[ChNum] << 16; 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]); debug_printf("Set CMD_MUTE : %u\r\n", pRcvBuf[1]);
} else { } else {
debug_printf("Get CMD_MUTE : %u\r\n", pRcvBuf[1]); debug_printf("Get CMD_MUTE : %u\r\n", pRcvBuf[1]);
uint32_t ChNum = pRcvBuf[1]; uint32_t ChNum = pRcvBuf[1];
if (ChNum < NUM_USB_CHAN_OUT) { if (ChNum < NUM_USB_CHAN_OUT) {
pSendBuf[idx] = EX3D_Mute[ChNum]; pSendBuf[idx] = EX3D_Mute[ChNum];
@@ -402,12 +407,12 @@ void hid_receive_task_in_c(unsigned char * RcvData, unsigned * SendData)
} }
break; break;
case CMD_SOUND_FIELD_NAME: case CMD_SOUND_FIELD_NAME:
if (CMD_GET(CMD_SOUND_FIELD_NAME) == command_code) { if (CMD_GET(CMD_SOUND_FIELD_NAME) == command_code) {
int32_t sfIdx = pRcvBuf[1]; int32_t sfIdx = pRcvBuf[1];
debug_printf("Get CMD_SOUND_FIELD_NAME : "); debug_printf("Get CMD_SOUND_FIELD_NAME : ");
if (sfIdx < EX3D_SF_NUM) { if (sfIdx < EX3D_SF_NUM) {
#if defined(SPATIAL_VIDEO) #if defined(SPATIAL_VIDEO)
const char * sfIdxName = "SPATIAL VIDEO"; //sfDispName[sfIdx]; const char * sfIdxName = "SPATIAL VIDEO"; //sfDispName[sfIdx];
#elif defined(SPATIAL_MUSIC) #elif defined(SPATIAL_MUSIC)
const char * sfIdxName = "SPATIAL MUSIC"; //sfDispName[sfIdx]; 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]; const char * sfIdxName = "SPATIAL GAME"; //sfDispName[sfIdx];
#elif defined(SPATIAL_MOVIE) #elif defined(SPATIAL_MOVIE)
const char * sfIdxName = "SPATIAL MOVIE"; //sfDispName[sfIdx]; const char * sfIdxName = "SPATIAL MOVIE"; //sfDispName[sfIdx];
#else #else
const char * sfIdxName = "EXTREME"; const char * sfIdxName = "EXTREME";
#endif #endif
int32_t NameLen = strlen(sfIdxName); int32_t NameLen = strlen(sfIdxName);
@@ -472,7 +477,7 @@ void hid_receive_task_in_c(unsigned char * RcvData, unsigned * SendData)
} else { // Get } else { // Get
debug_printf("Get CMD_ON_GAIN : %d\r\n", Ex3dOnGain); debug_printf("Get CMD_ON_GAIN : %d\r\n", Ex3dOnGain);
memcpy(&pSendBuf[idx], &Ex3dOnGain, 4); memcpy(&pSendBuf[idx], &Ex3dOnGain, 4);
} }
break; break;
case CMD_OFF_GAIN: case CMD_OFF_GAIN:
@@ -489,7 +494,7 @@ void hid_receive_task_in_c(unsigned char * RcvData, unsigned * SendData)
} else { // Get } else { // Get
debug_printf("Get CMD_OFF_GAIN : %d\r\n", Ex3dOffGain); debug_printf("Get CMD_OFF_GAIN : %d\r\n", Ex3dOffGain);
memcpy(&pSendBuf[idx], &Ex3dOffGain, 4); memcpy(&pSendBuf[idx], &Ex3dOffGain, 4);
} }
break; break;
case CMD_LFE: case CMD_LFE:
@@ -506,7 +511,7 @@ void hid_receive_task_in_c(unsigned char * RcvData, unsigned * SendData)
} else { // Get } else { // Get
debug_printf("Get CMD_LFE : %d\r\n", Ex3dLfeGain); debug_printf("Get CMD_LFE : %d\r\n", Ex3dLfeGain);
memcpy(&pSendBuf[idx], &Ex3dLfeGain, 4); memcpy(&pSendBuf[idx], &Ex3dLfeGain, 4);
} }
break; break;
case CMD_LMT_THRESHOLD: case CMD_LMT_THRESHOLD:
@@ -529,7 +534,7 @@ void hid_receive_task_in_c(unsigned char * RcvData, unsigned * SendData)
} else { // Get } else { // Get
debug_printf("Get CMD_LMT_THRESHOLD : %d\r\n", Ex3dLimiterThreshold); debug_printf("Get CMD_LMT_THRESHOLD : %d\r\n", Ex3dLimiterThreshold);
memcpy(&pSendBuf[idx], &Ex3dLimiterThreshold, 4); memcpy(&pSendBuf[idx], &Ex3dLimiterThreshold, 4);
} }
break; break;
case CMD_LMT_ATTACKK_TIME: case CMD_LMT_ATTACKK_TIME:
@@ -546,7 +551,7 @@ void hid_receive_task_in_c(unsigned char * RcvData, unsigned * SendData)
} else { // Get } else { // Get
debug_printf("Get CMD_LMT_ATTACKK_TIME : %d\r\n", Ex3dLimiterAttackTime); debug_printf("Get CMD_LMT_ATTACKK_TIME : %d\r\n", Ex3dLimiterAttackTime);
memcpy(&pSendBuf[idx], &Ex3dLimiterAttackTime, 4); memcpy(&pSendBuf[idx], &Ex3dLimiterAttackTime, 4);
} }
break; break;
case CMD_LMT_RELEASE_TIME: case CMD_LMT_RELEASE_TIME:
@@ -563,7 +568,7 @@ void hid_receive_task_in_c(unsigned char * RcvData, unsigned * SendData)
} else { // Get } else { // Get
debug_printf("Get CMD_LMT_RELEASE_TIME : %d\r\n", Ex3dLimiterReleaseTime); debug_printf("Get CMD_LMT_RELEASE_TIME : %d\r\n", Ex3dLimiterReleaseTime);
memcpy(&pSendBuf[idx], &Ex3dLimiterReleaseTime, 4); memcpy(&pSendBuf[idx], &Ex3dLimiterReleaseTime, 4);
} }
break; break;
// dhlee++ // dhlee++
@@ -582,8 +587,8 @@ void hid_receive_task_in_c(unsigned char * RcvData, unsigned * SendData)
} else { // Get } else { // Get
debug_printf("Get CMD_EXPAND_GAIN : %d\r\n", Ex3dExpandGain); debug_printf("Get CMD_EXPAND_GAIN : %d\r\n", Ex3dExpandGain);
memcpy(&pSendBuf[idx], &Ex3dExpandGain, 4); memcpy(&pSendBuf[idx], &Ex3dExpandGain, 4);
} }
break; break;
case CMD_REDUCE_GAIN: case CMD_REDUCE_GAIN:
if (CMD_SET(CMD_REDUCE_GAIN) == command_code) { 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 } else { // Get
debug_printf("Get CMD_REDUCE_GAIN : %d\r\n", Ex3dReduceGain); debug_printf("Get CMD_REDUCE_GAIN : %d\r\n", Ex3dReduceGain);
memcpy(&pSendBuf[idx], &Ex3dReduceGain, 4); memcpy(&pSendBuf[idx], &Ex3dReduceGain, 4);
} }
break; break;
default: 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 #define BLUE_LED_PIN 0 // 3D LED (蓝色LED) - bit 0 of leds2_val, 0b11111110
// 改动原因定义模式切换标志值用于在SPATIAL_GAME、STEREO_8K、STEREO_2K、UAC1之间循环切换 // 改动原因定义模式切换标志值用于在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_SPATIAL_GAME COAX_IN_FLAG //1 SPATIAL_GAME模式标志
#define MODE_STEREO_8K OPT_IN_FLAG // 3 STEREO_8K模式标志 #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 //Tile 1
void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c_hidSendData, chanend_t c_uac_vol) 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 char RcvData[64] = {0};
unsigned SendData[HID_MAX_DATA_BYTES / 4]; 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; for (unsigned char i=1; i<(HID_MAX_DATA_BYTES / 4); i++) SendData[i] = 0;
// 改动原因从button_task接收模式值通过cc_mic_level channel传输 // 改动原因从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_leds, leds1_val);
port_out(p_leds2, leds2_val); port_out(p_leds2, leds2_val);
debug_printf("LED init: default OFF state, waiting for mode from button_task\n"); 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); uint32_t last_status = port_in(p_keys);
hwtimer_set_trigger_time(timer, hwtimer_get_time(timer) + KEY_POLLING_INTERVAL); hwtimer_set_trigger_time(timer, hwtimer_get_time(timer) + KEY_POLLING_INTERVAL);
while (1) { while (1) {
SELECT_RES( SELECT_RES(
CASE_THEN(cc_mic_level, event_mic_vol) CASE_THEN(cc_mic_level, event_mic_vol)
, CASE_THEN(c_hidRcvData, event_hid) , 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 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=STEREO_8K)\n", current_mode_local);
// 改动原因根据接收到的模式值初始化LED和算法状态 // 改动原因根据接收到的模式值初始化LED和算法状态
if (current_mode_local == 0) { 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(); ret = i2c_codec_mic_vol_down();
debug_printf("KEY_MIC_VOL_DN\n"); debug_printf("KEY_MIC_VOL_DN\n");
break; break;
case MUTED_MIC: case MUTED_MIC:
SET_SHARED_GLOBAL(g_mute_on_off_t1, MUTE_ON); SET_SHARED_GLOBAL(g_mute_on_off_t1, MUTE_ON);
debug_printf("MUTED_MIC\n"); 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); RcvData[i] = chan_in_byte(c_hidRcvData);
} }
if(RcvData[0] == 0x01) { // REPORT ID 1 if(RcvData[0] == 0x01) { // REPORT ID 1
#if (HID_CONTROLS == 1)
hid_receive_task_in_c(RcvData, SendData); hid_receive_task_in_c(RcvData, SendData);
for(int i=0; i<(HID_MAX_DATA_BYTES / 4) ;i++) { for(int i=0; i<(HID_MAX_DATA_BYTES / 4) ;i++) {
chan_out_word(c_hidSendData, SendData[i]); chan_out_word(c_hidSendData, SendData[i]);
} }
#endif
} }
} }
continue; 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); 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_when_pinsneq(p_keys, PORT_UNBUFFERED, last_status);
uint32_t key_in = port_in(p_keys); 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); // key_in, last_status, is_stable, press_hold_cnt);
if (key_in != last_status) { if (key_in != last_status) {
if ((key_in == 0) && (is_stable)) { 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) { if (press_hold_cnt > 0) {
// 改动原因短按切换模式0=无音效1=STEREO_2K2=SPATIAL_GAME3=STEREO_8K // 改动原因短按切换模式0=无音效1=STEREO_2K2=SPATIAL_GAME3=STEREO_8K
// 循环切换0→1→2→3→0 // 循环切换0→1→2→3→0
#if 0 #if UAC1_MODE
unsigned old_mode = current_mode_local; unsigned old_mode = current_mode_local;
current_mode_local = (current_mode_local + 1) % 4; // 循环切换 0→1→2→3→0 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); 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 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 (STEREO_8K): algorithm ON, BLUE LED blinking\n");
} }
// 更新LED输出 // 更新LED输出
port_out(p_leds2, leds2_val); port_out(p_leds2, leds2_val);
port_out(p_leds, leds1_val); port_out(p_leds, leds1_val);
#endif #endif
unsigned endData[1] = {0xffffffff}; 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, endData[0]);
chan_out_word(c_hidSendData, current_mode_local);
} }
} }
} else { } 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_leds2_val = leds2_val;
// saved_leds1_val = leds1_val; // saved_leds1_val = leds1_val;
// debug_printf("Long press detected\n"); // debug_printf("Long press detected\n");
} }
} }
} }
last_status = key_in; last_status = key_in;
// 改动原因STEREO_8K模式下蓝灯闪烁每500ms切换一次状态 // 改动原因STEREO_8K模式下蓝灯闪烁每500ms切换一次状态
if (current_mode_local == 3) { if (current_mode_local == 3) {
blink_counter++; 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); port_out(p_leds2, leds2_val);
} }
} }
else { else {
blink_counter = 0; blink_counter = 0;
} }
#if 0 #if 0
if (current_mode_local == 0) { if (current_mode_local == 0) {
leds2_val |= (1<<BLUE_LED_PIN); // Blue LED off 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; static unsigned isMute = 0;
uint8_t tmp = 0; uint8_t tmp = 0;
#if (HID_CONTROLS == 1)
unsigned hidData0; unsigned hidData0;
#endif
unsigned ex3d_key_verified; unsigned ex3d_key_verified;
delay_milliseconds(300); delay_milliseconds(300);
debug_printf("button task start\n"); debug_printf("button task start\n");
// 改动原因区分Windows模式和UAC1模式分别从不同的flash文件加载 // 改动原因区分Windows模式和UAC1模式分别从不同的flash文件加载
// Windows模式从 "game_mode" 加载(模式值 0-3 // 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_mode;
unsigned char saved_uac1_mode = 0; unsigned char saved_uac1_mode = 0;
unsigned char path[] = "game_mode"; unsigned char path[] = "game_mode";
unsigned host_os; unsigned host_os;
GET_SHARED_GLOBAL(host_os, g_host_os); GET_SHARED_GLOBAL(host_os, g_host_os);
saved_mode = load_value(path); saved_mode = load_value(path);
debug_printf("Loaded game_mode from flash: %d\n", saved_mode); debug_printf("Loaded game_mode from flash: %d\n", saved_mode);
#if defined(UAC1_MODE) #if defined(UAC1_MODE)
if (saved_mode == 255) { if (saved_mode == 255) {
saved_mode = 0; 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); debug_printf("Saved game_mode to flash: %d\n", saved_mode);
} }
#endif #endif
printf("host_os: %d\n", host_os);
if (host_os == OS_OTHERS) { #if 0
if ((host_os == OS_OTHERS) || (host_os == 0)) {
// 改动原因检测到非Windows系统切换到UAC1模式 // 改动原因检测到非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); SetRoleSwitchFlag(MODE_UAC1);
debug_printf("Set role switch flag: 0x%04X (UAC1), device will restart\n", MODE_UAC1); debug_printf("Set role switch flag: 0x%04X (UAC1), device will restart\n", MODE_UAC1);
// 设备会重启,退出函数 // 设备会重启,退出函数
device_reboot(); device_reboot();
while(1); while(1);
#endif
} }
else { #endif
debug_printf("Detected Windows OS (OS_WIN)\n");
#if UAC1_MODE == 1 #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); SetRoleSwitchFlag(MODE_STEREO_2K);
break; break;
case 1: case 1:
SetRoleSwitchFlag(MODE_SPATIAL_GAME); SetRoleSwitchFlag(MODE_STEREO_2K);
break; break;
case 2: case 2:
SetRoleSwitchFlag(MODE_STEREO_8K); SetRoleSwitchFlag(MODE_SPATIAL_GAME);
break; break;
case 3: case 3:
SetRoleSwitchFlag(MODE_STEREO_2K); SetRoleSwitchFlag(MODE_STEREO_8K);
break; break;
default: default:
SetRoleSwitchFlag(MODE_STEREO_2K); SetRoleSwitchFlag(MODE_STEREO_2K);
break; break;
} }
debug_printf("Switch to saved mode: %d, device will restart.\n", saved_mode); debug_printf("Switch to saved mode: %d, device will restart.\n", saved_mode);
delay_milliseconds(200); delay_milliseconds(200);
//device_reboot(); device_reboot();
//while (1); while (1);
} }
}
#endif #endif
#if defined(STEREO_2K) #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 #endif
}
g_windows_detect_done = 1; g_windows_detect_done = 1;
// 改动原因更新全局变量g_game_mode为保存的模式值 // 改动原因更新全局变量g_game_mode为保存的模式值
SET_SHARED_GLOBAL(g_game_mode, saved_mode); SET_SHARED_GLOBAL(g_game_mode, saved_mode);
debug_printf("Set new g_game_mode to %d\n", 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_2K2=SPATIAL_GAME3=STEREO_8K 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); debug_printf("Sent audio_mode %d to hid_button_task via cc_mic_level channel\n", saved_mode);
port_enable(p_ctrl_keys); port_enable(p_ctrl_keys);
port_ctrl_keys = port_in(p_ctrl_keys); port_ctrl_keys = port_in(p_ctrl_keys);
if ((port_ctrl_keys & KEY_MUTE) == 0) { 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 = ((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); hwtimer_set_trigger_time(timer, hwtimer_get_time(timer) + KEY_POLLING_INTERVAL);
while (1) { while (1) {
SELECT_RES( SELECT_RES(
CASE_THEN(c_hidSendData, event_hid) CASE_THEN(c_hidSendData, event_hid)
, CASE_THEN(timer, event_polling) , CASE_THEN(timer, event_polling)
) )
{ {
event_hid: event_hid:
{ {
unsigned hidData0 = chan_in_word(c_hidSendData); unsigned hidData0 = chan_in_word(c_hidSendData);
unsigned *reportData = 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然后设置切换标志 // 改动原因收到0xffffffff后循环切换模式并保存到flash然后设置切换标志
// 注意UAC1模式下不会收到此命令hid_button_task不发送 // 注意UAC1模式下不会收到此命令hid_button_task不发送
// 读取当前g_game_mode值 // 读取当前g_game_mode值
unsigned current_mode; unsigned current_mode = chan_in_word(c_hidSendData);
GET_SHARED_GLOBAL(current_mode, g_game_mode);
// 改动原因Windows模式下只循环切换0→1→2→3→0不包括UAC1模式4 // 改动原因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(STEREO_8K) -> 3(无音效) -> 0
unsigned new_mode; unsigned new_mode;
unsigned mode_flag; unsigned mode_flag;
debug_printf("current_mode: %d\n", current_mode); debug_printf("current_mode: %d\n", current_mode);
#if UAC1_MODE != 1
if (current_mode == 0) { if (current_mode == 0) {
// 当前是STEREO_2K切换到STEREO_2K // 当前是STEREO_2K切换到STEREO_2K
new_mode = 1; new_mode = 1;
mode_flag = MODE_STEREO_2K; mode_flag = MODE_STEREO_2K;
debug_printf("Switching from STEREO_2K (0) to STEREO_2K (1)\n"); debug_printf("Switching from STEREO_2K (0) to STEREO_2K (1)\n");
} else if (current_mode == 1) { } else if (current_mode == 1) {
// 当前是STEREO_2K切换到SPATIAL_GAME // 当前是STEREO_2K切换到SPATIAL_GAME
new_mode = 2; new_mode = 2;
mode_flag = MODE_SPATIAL_GAME; mode_flag = MODE_SPATIAL_GAME;
debug_printf("Switching from STEREO_2K (1) to SPATIAL_GAME (2)\n"); 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"; unsigned char path[] = "game_mode";
save_value(path, (unsigned char)new_mode); save_value(path, (unsigned char)new_mode);
debug_printf("Saved game_mode %d to flash\n", 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); 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 #endif
break; break;
} }
#if (HID_CONTROLS == 1)
for (int i=1; i<(HID_MAX_DATA_BYTES/4); i++) { for (int i=1; i<(HID_MAX_DATA_BYTES/4); i++) {
reportData[i] = chan_in_word(c_hidSendData); reportData[i] = chan_in_word(c_hidSendData);
} }
hidSetChangePending(1); hidSetChangePending(1);
#endif
continue; continue;
} }
event_polling: event_polling:
{ {
hwtimer_set_trigger_time(timer, hwtimer_get_time(timer) + KEY_POLLING_INTERVAL); hwtimer_set_trigger_time(timer, hwtimer_get_time(timer) + KEY_POLLING_INTERVAL);
// 改动原因将按键处理逻辑从dnr_dsp_buffer_task合并到button_task统一管理所有按键事件 // 改动原因将按键处理逻辑从dnr_dsp_buffer_task合并到button_task统一管理所有按键事件
// 改动原因按键检测间隔从100ms改为10ms提高响应速度每次轮询都检测按键状态 // 改动原因按键检测间隔从100ms改为10ms提高响应速度每次轮询都检测按键状态
hidData0 = 0; hidData0 = 0;
curr_ctrl_keys = (port_in(p_ctrl_keys)) & KEY_BITS; curr_ctrl_keys = (port_in(p_ctrl_keys)) & KEY_BITS;
// 改动原因:使用防抖机制,连续检测到相同状态变化才响应,避免按键抖动 // 改动原因:使用防抖机制,连续检测到相同状态变化才响应,避免按键抖动
if (curr_ctrl_keys != last_ctrl_keys) { if (curr_ctrl_keys != last_ctrl_keys) {
debounce_cnt++; // 状态变化计数器递增 debounce_cnt++; // 状态变化计数器递增
@@ -1287,7 +1315,7 @@ void button_task(chanend_t c_hidSendData, chanend_t cc_mic_level, chanend_t c_ua
} }
if (tmp) { if (tmp) {
chan_out_byte(cc_mic_level, tmp); // 发送到hid_button_task处理 chan_out_byte(cc_mic_level, tmp); // 发送到hid_button_task处理
} }
break; break;
case KEY_MUTE: case KEY_MUTE:
// 改动原因处理静音按键更新静音状态并通知hid_button_task和dnr_dsp_buffer_task // 改动原因处理静音按键更新静音状态并通知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"); debug_printf("MUTE: muted\n");
} }
break; break;
#if (HID_CONTROLS == 1)
case KEY_PLAY_VOL_DN: case KEY_PLAY_VOL_DN:
// 改动原因处理播放音量减按键发送HID控制命令 // 改动原因处理播放音量减按键发送HID控制命令
if ((curr_ctrl_keys & KEY_PLAY_VOL_DN) == 0) { 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报告 update_button(HID_CONTROL_VOLUP); // 更新HID报告
} }
break; break;
#endif
default: default:
break; break;
} }
@@ -1326,15 +1356,15 @@ void button_task(chanend_t c_hidSendData, chanend_t cc_mic_level, chanend_t c_ua
} else { } else {
debounce_cnt = 0; // 状态未变化,重置防抖计数器 debounce_cnt = 0; // 状态未变化,重置防抖计数器
} }
GET_SHARED_GLOBAL(uac_vol, g_uac_vol); GET_SHARED_GLOBAL(uac_vol, g_uac_vol);
if (uac_vol != last_uac_vol) { if (uac_vol != last_uac_vol) {
unsigned conv_vol = (0xffffffff - uac_vol + 1) >> 8; 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); chan_out_word(c_uac_vol, conv_vol);
last_uac_vol = uac_vol; last_uac_vol = uac_vol;
} }
#if EQ_EN #if EQ_EN
// 改动原因EQ模式切换处理每100ms检查一次从AudioHwRemote2整合到button_task // 改动原因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); SET_SHARED_GLOBAL(g_force_request_eq_mode_change, 0);
} }
} }
// 改动原因EQ参数存储处理每500ms保存一次从AudioHwRemote2整合到button_task // 改动原因EQ参数存储处理每500ms保存一次从AudioHwRemote2整合到button_task
eq_sync_counter++; eq_sync_counter++;
if (eq_sync_counter >= 5) { // 5 * 100ms = 500ms if (eq_sync_counter >= 5) { // 5 * 100ms = 500ms
eq_sync_counter = 0; eq_sync_counter = 0;
// 使用单参数存储系统保存脏参数独立保存EQ参数 // 使用单参数存储系统保存脏参数独立保存EQ参数
if (eq_save_dirty_params() == 0) { if (eq_save_dirty_params() == 0) {
//debug_printf("Single EQ parameters synced to Flash successfully\n"); //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 #endif
continue; continue;
} }
} }
} }
} }
@@ -1427,9 +1457,9 @@ void ex3d_task(){
#error you need to define SPATIAL_DRAMA or STEREO_8K.... #error you need to define SPATIAL_DRAMA or STEREO_8K....
#endif #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]){ 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]; 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]; 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 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]; int32_t output[DSP_WORKER_FILTER_PER_DATA_CH*DSP_WORKER_DATA_CH_COUNT][DSP_BLOCK_LENGTH];
memset(sample_buffer, 0, sizeof(sample_buffer)); memset(sample_buffer, 0, sizeof(sample_buffer));
while(1){ while(1){
for(int ch=0;ch<DSP_WORKER_DATA_CH_COUNT;ch++){ 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 defined(STEREO_2K)
if(worker_id == 0){ 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); dsp_worker(c_dsp_to_ex3d, filters);
} else if(worker_id == 1){ } 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 0, &td_block_fir_filter_SPATIAL_STEREO_2K_v090h090_right
}; };
dsp_worker(c_dsp_to_ex3d, filters); dsp_worker(c_dsp_to_ex3d, filters);
} else if(worker_id == 2){ } 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 &td_block_fir_filter_SPATIAL_STEREO_2K_v090h270_left, 0
}; };
dsp_worker(c_dsp_to_ex3d, filters); dsp_worker(c_dsp_to_ex3d, filters);
} else if(worker_id == 3){ } 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 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) #elif defined(STEREO_8K)
if(worker_id == 0){ 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); dsp_worker(c_dsp_to_ex3d, filters);
} else if(worker_id == 1){ } 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 0, &td_block_fir_filter_SPATIAL_STEREO_8K_v090h090_right
}; };
dsp_worker(c_dsp_to_ex3d, filters); dsp_worker(c_dsp_to_ex3d, filters);
} else if(worker_id == 2){ } 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 &td_block_fir_filter_SPATIAL_STEREO_8K_v090h270_left, 0
}; };
dsp_worker(c_dsp_to_ex3d, filters); dsp_worker(c_dsp_to_ex3d, filters);
} else if(worker_id == 3){ } 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 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){ 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_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_v090h315_left, &td_block_fir_filter_SPATIAL_71_DRAMA_v090h315_right
}; };
dsp_worker(c_dsp_to_ex3d, filters); dsp_worker(c_dsp_to_ex3d, filters);
} else if(worker_id == 1){ } 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_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 &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); dsp_worker(c_dsp_to_ex3d, filters);
} else if(worker_id == 2){ } 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_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); dsp_worker(c_dsp_to_ex3d, filters);
} else if(worker_id == 3){ } 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 &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); 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); exit(1);
} }
#elif defined(SPATIAL_GAME) #elif defined(SPATIAL_GAME)
if(worker_id == 0){ 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_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_v090h315_left, &td_block_fir_filter_SPATIAL_71_GAME_v090h315_right
}; };
dsp_worker(c_dsp_to_ex3d, filters); dsp_worker(c_dsp_to_ex3d, filters);
} else if(worker_id == 1){ } 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_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 &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); dsp_worker(c_dsp_to_ex3d, filters);
} else if(worker_id == 2){ } 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_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); dsp_worker(c_dsp_to_ex3d, filters);
} else if(worker_id == 3){ } 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 &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); 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); exit(1);
} }
#elif defined(SPATIAL_MOVIE) #elif defined(SPATIAL_MOVIE)
if(worker_id == 0){ 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_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_v090h315_left, &td_block_fir_filter_SPATIAL_71_MOVIE_v090h315_right
}; };
dsp_worker(c_dsp_to_ex3d, filters); dsp_worker(c_dsp_to_ex3d, filters);
} else if(worker_id == 1){ } 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_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 &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); dsp_worker(c_dsp_to_ex3d, filters);
} else if(worker_id == 2){ } 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_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); dsp_worker(c_dsp_to_ex3d, filters);
} else if(worker_id == 3){ } 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 &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); 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); exit(1);
} }
#elif defined(SPATIAL_MUSIC) #elif defined(SPATIAL_MUSIC)
if(worker_id == 0){ 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_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_v090h315_left, &td_block_fir_filter_SPATIAL_71_MUSIC_v090h315_right
}; };
dsp_worker(c_dsp_to_ex3d, filters); dsp_worker(c_dsp_to_ex3d, filters);
} else if(worker_id == 1){ } 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_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 &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); dsp_worker(c_dsp_to_ex3d, filters);
} else if(worker_id == 2){ } 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_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); dsp_worker(c_dsp_to_ex3d, filters);
} else if(worker_id == 3){ } 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 &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); 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]: {\ #define USER_MAIN_CORES on tile[1]: {\
par\ par\
{\ {\
hid_button_task(cc_mic_level, c_hidRcvData, c_hidSendData, c_uac_vol);\
ex3d_task();\ ex3d_task();\
par(int i=0;i<DSP_WORKER_COUNT;i++) dsp_worker_tile(c_dsp_to_ex3d[i], i);\ par(int i=0;i<DSP_WORKER_COUNT;i++) dsp_worker_tile(c_dsp_to_ex3d[i], i);\
unsafe\ unsafe\
@@ -111,7 +112,6 @@ extern void key_receiver(chanend c_key);
for(int i=0;i<DSP_WORKER_COUNT;i++)\ for(int i=0;i<DSP_WORKER_COUNT;i++)\
uc_dsp_to_ex3d[i] = (chanend) c_dsp_to_ex3d[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]: {\ on tile[0]: {\