add macro for all modes

This commit is contained in:
Steven Dan
2026-03-24 11:10:02 +08:00
parent 36db777fe9
commit c789a27ae5
8 changed files with 206 additions and 315 deletions

View File

@@ -54,88 +54,83 @@ set(SW_USB_AUDIO_FLAGS ${EXTRA_BUILD_FLAGS} -Os
LINK_DIRECTORIES(${CMAKE_CURRENT_LIST_DIR}/../../lib_dnr/lib_dnr)
set(APP_COMPILER_FLAGS_ex3d_UAC1 ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2
-DI2S_CHANS_ADC=0
-DAUDIO_CLASS=1
-DMIN_FREQ=48000
-DMAX_FREQ=48000
-DUSE_EX3D
-DMIXER=0
-DAIZIP_DNR=0 #-ldnr_50ms
-llib_ex3d_stereo_2k
-DNUM_USB_CHAN_OUT=2
-DNUM_USB_CHAN_OUT_FS=2
-DNUM_USB_CHAN_IN=0
-DSTREAM_FORMAT_OUTPUT_1_RESOLUTION_BITS=16
-DSTREAM_FORMAT_OUTPUT_2_RESOLUTION_BITS=16
-DSTREAM_FORMAT_OUTPUT_3_RESOLUTION_BITS=16
-DSTREAM_FORMAT_INPUT_1_RESOLUTION_BITS=16
-DSTREAM_FORMAT_INPUT_2_RESOLUTION_BITS=16
-DSTREAM_FORMAT_INPUT_3_RESOLUTION_BITS=16
-DNUM_EX3D_CHAN_OUT=2
-DINPUT_VOLUME_CONTROL=0
-DUAC1_MODE=1
-DOUTPUT_VOLUME_CONTROL=0
-DXUA_DFU_EN=0
-DSTEREO_2K
-DHID_CONTROLS=0)
set(APP_COMPILER_FLAGS_f1_music_uac2 ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2
-DI2S_CHANS_ADC=2
-DMIN_FREQ=48000
-DMAX_FREQ=192000
-DF1_MUSIC_UAC2=1
#-DUSE_EX3D
-DMIXER=0
#-ldnr_50ms
#-llib_ex3d_all
-DEQ_EN=1
#-DEX3D_SF_NUM=3
-DNUM_USB_CHAN_OUT=2
-DNUM_USB_CHAN_IN=2
#-DNUM_EX3D_CHAN_OUT=2
-DMIN_VOLUME=0xE000
-DINPUT_VOLUME_CONTROL=1
-DOUTPUT_VOLUME_CONTROL=1
#-DDEBUG_MEMORY_LOG_ENABLED=1
-DXUA_DFU_EN=1
#-DIR_SWITCHING_MODE
-DHID_CONTROLS=1)
#set(APP_COMPILER_FLAGS_ex3d_stereo_2k ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2
# -DI2S_CHANS_ADC=2
# #-DAUDIO_CLASS=1
# -DMIN_FREQ=48000
# -DMAX_FREQ=48000
# -DUSE_EX3D
# -DMIXER=0
# -DAIZIP_DNR=0 #-ldnr_50ms
# -llib_ex3d_stereo_2k
# -DNUM_USB_CHAN_OUT=2
# -DNUM_USB_CHAN_IN=2
# -DEQ_EN=1
# -DSTREAM_FORMAT_OUTPUT_1_RESOLUTION_BITS=16
# -DSTREAM_FORMAT_OUTPUT_2_RESOLUTION_BITS=16
# -DSTREAM_FORMAT_OUTPUT_3_RESOLUTION_BITS=16
# -DSTREAM_FORMAT_INPUT_1_RESOLUTION_BITS=16
# -DSTREAM_FORMAT_INPUT_2_RESOLUTION_BITS=16
# -DSTREAM_FORMAT_INPUT_3_RESOLUTION_BITS=16
# -DNUM_EX3D_CHAN_OUT=2
# -DINPUT_VOLUME_CONTROL=1
# -DOUTPUT_VOLUME_CONTROL=1
# -DXUA_DFU_EN=1
# -DSTEREO_2K
# -DHID_CONTROLS=1)
#
#set(APP_COMPILER_FLAGS_ex3d_stereo_8k ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2
# -DI2S_CHANS_ADC=0
# -DMIN_FREQ=48000
# -DMAX_FREQ=48000
# -DUSE_EX3D
# -DMIXER=0
# -DAIZIP_DNR=0 #-ldnr_50ms
# -llib_ex3d_stereo_8k
# -DNUM_USB_CHAN_OUT=2
# -DNUM_USB_CHAN_IN=2
# -DSTREAM_FORMAT_OUTPUT_1_RESOLUTION_BITS=16
# -DSTREAM_FORMAT_OUTPUT_2_RESOLUTION_BITS=16
# -DSTREAM_FORMAT_OUTPUT_3_RESOLUTION_BITS=16
# -DSTREAM_FORMAT_INPUT_1_RESOLUTION_BITS=16
# -DSTREAM_FORMAT_INPUT_2_RESOLUTION_BITS=16
# -DSTREAM_FORMAT_INPUT_3_RESOLUTION_BITS=16
# -DNUM_EX3D_CHAN_OUT=2
# -DXUA_DFU_EN=1
# -DINPUT_VOLUME_CONTROL=1
# -DOUTPUT_VOLUME_CONTROL=1
# -DSTEREO_8K
# -DHID_CONTROLS=1)
## IR switching mode
set(APP_COMPILER_FLAGS_ex3d_71_all ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2
set(APP_COMPILER_FLAGS_f3_f4_fps_uac2 ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2
-DI2S_CHANS_ADC=2
-DMIN_FREQ=48000
-DMAX_FREQ=48000
-DUSE_EX3D
-DUSE_EX3D=1
-DF3_F4_FPS_UAC2=1
-DMIXER=0
-ldnr_50ms
-llib_ex3d_all
-DEQ_EN=1
-DDNR_ENABLE=1
-DEX3D_SF_NUM=3
-DNUM_USB_CHAN_OUT=8
-DNUM_USB_CHAN_IN=2
-DNUM_EX3D_CHAN_OUT=2
-DMIN_VOLUME=0xE000
-DINPUT_VOLUME_CONTROL=1
-DOUTPUT_VOLUME_CONTROL=1
#-DDEBUG_MEMORY_LOG_ENABLED=1
-DXUA_DFU_EN=1
-DIR_SWITCHING_MODE
-DHID_CONTROLS=1)
set(APP_COMPILER_FLAGS_f5_music_uac1 ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2
-DI2S_CHANS_ADC=2
-DMIN_FREQ=48000
-DMAX_FREQ=48000
-DUAC1_MODE=1
-DF5_MUSIC_UAC1=1
#-DUSE_EX3D
-DMIXER=0
-ldnr_11ms
-DDNR_ENABLE=1
#-llib_ex3d_all
-DEQ_EN=1
#-DEX3D_SF_NUM=3
-DNUM_USB_CHAN_OUT=2
-DNUM_USB_CHAN_IN=2
#-DNUM_EX3D_CHAN_OUT=2
-DMIN_VOLUME=0xE000
-DINPUT_VOLUME_CONTROL=1
-DOUTPUT_VOLUME_CONTROL=1
#-DDEBUG_MEMORY_LOG_ENABLED=1
-DXUA_DFU_EN=1
#-DIR_SWITCHING_MODE
-DHID_CONTROLS=1)
set(APP_COMPILER_FLAGS_f6_f7_fps_uac1 ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2
-DI2S_CHANS_ADC=2
-DAUDIO_CLASS=1
-DMIN_FREQ=48000
-DMAX_FREQ=48000
-DUSE_EX3D=1
-DF6_F7_FPS_UAC1=1
-DMIXER=0
-ldnr_50ms
-llib_ex3d_all
@@ -151,72 +146,6 @@ set(APP_COMPILER_FLAGS_ex3d_71_all ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2
-DXUA_DFU_EN=1
-DIR_SWITCHING_MODE
-DHID_CONTROLS=1)
set(APP_COMPILER_FLAGS_ex3d_71_game ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2
-DI2S_CHANS_ADC=2
-DMIN_FREQ=48000
-DMAX_FREQ=48000
-DUSE_EX3D
-DMIXER=0
-DAIZIP_DNR=0 #-ldnr_50ms
-llib_ex3d_game
-DEQ_EN=1
-DNUM_USB_CHAN_OUT=8
-DNUM_USB_CHAN_IN=2
-DNUM_EX3D_CHAN_OUT=2
-DMIN_VOLUME=0xE000
-DINPUT_VOLUME_CONTROL=1
-DOUTPUT_VOLUME_CONTROL=1
#-DDEBUG_MEMORY_LOG_ENABLED=1
-DXUA_DFU_EN=1
-DSPATIAL_GAME
-DHID_CONTROLS=1)
set(APP_COMPILER_FLAGS_ex3d_71_music ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2
-DI2S_CHANS_ADC=2
-DMIN_FREQ=48000
-DMAX_FREQ=48000
-DUSE_EX3D
-DMIXER=0
-DAIZIP_DNR=0 #-ldnr_50ms
-llib_ex3d_music
-DNUM_USB_CHAN_OUT=8
-DNUM_USB_CHAN_IN=2
-DNUM_EX3D_CHAN_OUT=2
-DMIN_VOLUME=0xE000
-DSPATIAL_MUSIC
-DHID_CONTROLS=1)
set(APP_COMPILER_FLAGS_ex3d_71_movie ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2
-DI2S_CHANS_ADC=2
-DMIN_FREQ=48000
-DMAX_FREQ=48000
-DUSE_EX3D
-DMIXER=0
-DAIZIP_DNR=0 #-ldnr_50ms
-DEQ_EN=1
-llib_ex3d_movie
-DNUM_USB_CHAN_OUT=8
-DNUM_USB_CHAN_IN=2
-DNUM_EX3D_CHAN_OUT=2
-DMIN_VOLUME=0xE000
-DXUA_DFU_EN=1
-DSPATIAL_MOVIE
-DHID_CONTROLS=1)
set(APP_COMPILER_FLAGS_ex3d_71_drama ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2
-DI2S_CHANS_ADC=2
-DMIN_FREQ=48000
-DMAX_FREQ=48000
-DUSE_EX3D
-DMIXER=0
-DAIZIP_DNR=0 #-ldnr_50ms
-llib_ex3d_drama
-DNUM_USB_CHAN_OUT=8
-DNUM_USB_CHAN_IN=2
-DNUM_EX3D_CHAN_OUT=2
-DMIN_VOLUME=0xE000
-DSPATIAL_DRAMA
-DHID_CONTROLS=1)
set(APP_INCLUDES src src/core src/extensions ../../lib_dnr/lib_dnr)
set(XMOS_SANDBOX_DIR ${CMAKE_CURRENT_LIST_DIR}/../..)

View File

@@ -14,6 +14,7 @@
#include "xc_ptr.h"
#include "user_uart.h"
#include "debug_print.h"
#include "roleswitchflag.h"
#if defined (CODEC_AIC3204)
#include "eq_flash_storage.h"
@@ -102,10 +103,21 @@ unsigned g_request_gain_mode = -1; // -1表示无请求0=低阻1=高阻
// 改动原因支持8种滤波器模式0-7与g_filter_map[8]数组定义一致
unsigned g_request_filter_mode = -1; // -1表示无请求0-7=滤波器模式
unsigned g_request_game_mode = -1;
#if EQ_EN
extern unsigned g_request_eq_mode, g_new_eq_mode;
#endif
// tile 1, 3d_on_off
#define LED_ON 0
#define LED_OFF 1
#define S3D_ON LED_ON
#define S3D_OFF LED_OFF
unsigned g_led_color = LED_OFF;
unsigned g_led_blink_count = 0;
unsigned g_led_blink_is_white = 0;
#define LED_OFF 0x7F // 修改清除最高位只保留低7位
#define LED_RED 0b01011111 // 修改清除最高位只保留低7位
#define LED_GREEN 0b01101111 // 修改清除最高位只保留低7am
@@ -114,9 +126,13 @@ extern unsigned g_request_eq_mode, g_new_eq_mode;
#define LED_CYAN (LED_GREEN & LED_BLUE)
#define LED_PURPLE (LED_RED & LED_BLUE)
#define LED_WHITE (LED_RED & LED_GREEN & LED_BLUE)
unsigned g_led_color = LED_OFF;
unsigned g_led_blink_count = 0;
unsigned g_led_blink_is_white = 0;
enum { OS_WIN = 1, OS_OTHERS = 2 };
// 改动原因定义模式切换标志值用于在SPATIAL_GAME、STEREO_8K、STEREO_2K、UAC1之间循环切换
#define MODE_STEREO_2K UAC1_IN_FLAG // 4 STEREO_2K模式标志
#define MODE_SPATIAL_GAME COAX_IN_FLAG //1 SPATIAL_GAME模式标志
#define MODE_SPATIAL_MOVIE OPT_IN_FLAG // 3 STEREO_8K模式标志
#define MODE_UAC1 USB_IN_FLAG // 2 UAC1模式标志
/* All on tile[0] */
@@ -489,8 +505,8 @@ void button_task(chanend c_hidSendData, chanend cc_mic_level, chanend c_uac_vol)
}
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
}
@@ -578,7 +594,7 @@ void button_task(chanend c_hidSendData, chanend cc_mic_level, chanend c_uac_vol)
#if IR_SWITCHING_MODE
mode_flag = IR_GAME;
#else
mode_flag = MODE_STEREO_2K;
// mode_flag = MODE_STEREO_2K;
#endif
debug_printf("Switching from STEREO_2K (0) to STEREO_2K (1)\n");
} else if (current_mode == 1) {
@@ -587,7 +603,7 @@ void button_task(chanend c_hidSendData, chanend cc_mic_level, chanend c_uac_vol)
#if IR_SWITCHING_MODE
mode_flag = IR_7_1_GAME;
#else
mode_flag = MODE_SPATIAL_GAME;
// mode_flag = MODE_SPATIAL_GAME;
#endif
debug_printf("Switching from STEREO_2K (1) to SPATIAL_GAME (2)\n");
} else if (current_mode == 2) {
@@ -596,7 +612,7 @@ void button_task(chanend c_hidSendData, chanend cc_mic_level, chanend c_uac_vol)
#if IR_SWITCHING_MODE
mode_flag = IR_7_1_MOVIE;
#else
mode_flag = MODE_SPATIAL_MOVIE; // SPATIAL_MOVIE模式使用SPATIAL_MOVIE固件
// mode_flag = MODE_SPATIAL_MOVIE; // SPATIAL_MOVIE模式使用SPATIAL_MOVIE固件
#endif
debug_printf("Switching from SPATIAL_GAME (2) to SPATIAL_MOVIE (3)\n");
} // 更新g_game_mode
@@ -605,7 +621,7 @@ void button_task(chanend c_hidSendData, chanend cc_mic_level, chanend c_uac_vol)
#if IR_SWITCHING_MODE
mode_flag = IR_OFF;
#else
mode_flag = MODE_STEREO_2K;
// mode_flag = MODE_STEREO_2K;
#endif
debug_printf("Switching from SPATIAL_MOVIE (3) to STEREO_2K (0)\n");
}
@@ -634,8 +650,8 @@ void button_task(chanend c_hidSendData, chanend cc_mic_level, chanend c_uac_vol)
debug_printf("Set role switch flag: 0x%04X, switching firmware, rebooting...\n", mode_flag);
SetRoleSwitchFlag(mode_flag);
delay_milliseconds(20);
device_reboot();
while (1);
// device_reboot();
// while (1);
} else {
debug_printf("Same firmware mode (0x%04X), updating mode and algorithm state without reboot\n", mode_flag);
@@ -1233,10 +1249,12 @@ void AudioHwInit()
sw_pll_fixed_clock(MCLK_48);
p_ctl_mute <: 1; // pull high AMP ctl_mute pin to unmute
// Wait for power supply to come up.
delay_milliseconds(200);
p_ctl_mute <: 1;
}
/* Configures the external audio hardware for the required sample frequency */
@@ -1246,5 +1264,6 @@ void AudioHwConfig(unsigned samFreq, unsigned mClk, unsigned dsdMode, unsigned s
{
sw_pll_fixed_clock(mClk);
}
p_ctl_mute <: 1;
}

View File

@@ -18,9 +18,11 @@
void dnr_exchange_buffer(int32_t *data);
void buffer_exchange(chanend_t c_data, unsigned sampsFromUsbToAudio[], unsigned sampsFromAudioToUsb[]) {
chan_out_buf_word (c_data, sampsFromUsbToAudio, 2);
chan_out_buf_word (c_data, sampsFromAudioToUsb, 2);
chan_in_buf_word (c_data , sampsFromUsbToAudio, 2);
#if DNR_ENABLE == 1
chan_out_buf_word (c_data, sampsFromAudioToUsb, 2);
chan_in_buf_word (c_data , sampsFromAudioToUsb, 2);
#endif
}
@@ -33,16 +35,20 @@ void dsp_main (chanend_t c_data) {
unsigned ch[1] = {2};
while (1) {
chan_in_buf_word (c_data , play_input, 2) ;
chan_in_buf_word (c_data , mic_input, 2) ;
chan_out_buf_word (c_data , play_output, I2S_CHANS_DAC);
#if DNR_ENABLE == 1
chan_in_buf_word (c_data , mic_input, 2) ;
chan_out_buf_word (c_data , mic_output, I2S_CHANS_ADC);
#endif
write_to_ring_buffer(0, play_input[0]);
write_to_ring_buffer(1, play_input[1]);
play_output[0] = read_from_ring_buffer(2);
play_output[1] = read_from_ring_buffer(3);
#if DNR_ENABLE == 1
dnr_exchange_buffer(mic_input);
mic_output[0] = mic_input[0];
mic_output[1] = mic_input[1];
#endif
// dnr_exchange_buffer((int32_t *)mic_input, (int32_t *)mic_output);
}
}

View File

@@ -14,6 +14,7 @@
#include "xc_ptr.h"
#include "debug_print.h"
#if DNR_ENABLE == 1
unsigned g_dsp_eof = 0;
void dnr_exchange_buffer(int32_t *data) {
static unsigned buff_index = 0;
@@ -50,3 +51,5 @@ void dnr_dsp_proc_task(void)
}
}
}
#endif

View File

@@ -20,6 +20,7 @@
//for AGC
//static agc_stage_ctx_t DWORD_ALIGNED agc_stage_state = {};
#if DNR_ENABLE == 1
static unsigned __attribute__((aligned (4))) dsp_dnr_frame_buf[BUF_SLOT_NUM][DSP_CH_NUM][DNR_DSP_FRAME_SIZE];
unsigned sample_in_buf_slot=0;
@@ -93,3 +94,5 @@ void start_dsp_processing(void)
AI_DNR_Processing((int32_t *)&dsp_dnr_frame_buf[processing_buf_slot][0][0]);
}
#endif

View File

@@ -36,7 +36,6 @@ extern unsigned g_force_request_eq_mode_change, g_force_eq_mode_change;
extern void device_reboot(void);
unsigned g_ex3d_key_verified = 0;
int32_t sys_vol = 0;
enum { OS_WIN = 1, OS_OTHERS = 2 };
unsigned g_mic_vol_cmd_pending = 0;
chanend_t uc_ex3d_to_ubm, uc_eq_data;
@@ -52,11 +51,6 @@ chanend_t uc_ex3d_to_ubm, uc_eq_data;
// tile 1, mic level
unsigned g_mic_level_t1;
// tile 1, 3d_on_off
#define LED_ON 0
#define LED_OFF 1
#define S3D_ON LED_ON
#define S3D_OFF LED_OFF
#if defined(IR_SWITCHING_MODE)
enum {IR_OFF=0, IR_GAME=1, IR_MUSIC=2, IR_MOVIE=3, IR_7_1_GAME=4, IR_7_1_MUSIC=5, IR_7_1_MOVIE=6};
@@ -120,12 +114,10 @@ void key_sender(chanend_t c)
void UserBufferManagementInit(unsigned sampFreq)
{
(void)sampFreq;
#if USE_EX3D == 1
memset(ubm_ingress, 0, sizeof(ubm_ingress));
memset(ubm_egress, 0, sizeof(ubm_egress));
#if AIZIP_DNR == 1
memset(ubm_micIn, 0, sizeof(ubm_micIn));
memset(ubm_micOut, 0, sizeof(ubm_micOut));
#endif
assert(uc_ex3d_to_ubm);
while( !m_hThread ){}
debug_printf("[UserBufferManagementInit] samfreq:%d\n\r", sampFreq);
@@ -135,6 +127,7 @@ void UserBufferManagementInit(unsigned sampFreq)
} else {
debug_printf("audio_ex3d_change_parameter() success\n\r");
}
#endif
}
float fLevel[NUM_USB_CHAN_OUT] = {0,};
enum {UBM_A3D_OFF=0, UBM_A3D_VON=1, UBM_A3D_ON=2};
@@ -146,6 +139,7 @@ void UserBufferManagement(unsigned sampsFromUsbToAudio[], unsigned sampsFromAudi
uint32_t is_dnr;
uint32_t is_mute;
#if USE_EX3D == 1
#if defined(SPATIAL_DRAMA) || defined(SPATIAL_GAME) || defined(SPATIAL_MOVIE) || defined(SPATIAL_MUSIC)
// 6ch version
unsigned tmp[8]={0,0,0,0,0,0,0,0}, downmix[8]={0,0,0,0,0,0,0,0};
@@ -222,26 +216,6 @@ void UserBufferManagement(unsigned sampsFromUsbToAudio[], unsigned sampsFromAudi
// Zero out C (2) and LFE (3) since they are mixed into L/R
ubm_egress[2][frame_index] = 0;
ubm_egress[3][frame_index] = 0;
#endif
#if (NUM_USB_CHAN_IN == 2)
#if AIZIP_DNR == 1
//exchange mic in and mic out data
ubm_micIn[0][frame_index] = sampsFromAudioToUsb[1];
ubm_micIn[1][frame_index] = sampsFromAudioToUsb[1];
if (is_dnr == DNR_ON) { // extract the DNR data when it is on
sampsFromAudioToUsb[0] = ubm_micOut[0][frame_index];
sampsFromAudioToUsb[1] = ubm_micOut[0][frame_index];
} else {
if (is_mute == MUTE_ON) {
sampsFromAudioToUsb[0] = 0;
sampsFromAudioToUsb[1] = 0;
} else {
// DNR off
sampsFromAudioToUsb[0] = sampsFromAudioToUsb[1];
}
}
#endif
#endif
for(int ch=0;ch<DSP_MIXER_OUTPUT_CHANNEL_COUNT;ch++) {
@@ -257,15 +231,11 @@ void UserBufferManagement(unsigned sampsFromUsbToAudio[], unsigned sampsFromAudi
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);
#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);
chan_in_buf_word(uc_dsp_to_dnr_t1, (uint32_t *)(&ubm_micOut[0]), DSP_BLOCK_LENGTH);
chan_in_buf_word(uc_dsp_to_dnr_t1, (uint32_t *)(&ubm_micOut[1]), DSP_BLOCK_LENGTH);
#endif
};
#endif
#if DNR_ENABLE == 1
buffer_exchange(uc_eq_data, sampsFromUsbToAudio, sampsFromAudioToUsb);
#endif
}
@@ -350,6 +320,7 @@ void hid_receive_task_in_c(unsigned char * RcvData, unsigned * SendData)
SendData[idx++] = command_code;
switch (cmdItem) {
#if USE_EX3D == 1
case CMD_OPEN:
debug_printf("CMD_OPEN\r\n");
break;
@@ -747,6 +718,7 @@ void hid_receive_task_in_c(unsigned char * RcvData, unsigned * SendData)
default:
break;
#endif
}
}
@@ -844,11 +816,6 @@ void update_button(unsigned char b)
#endif
// 改动原因定义模式切换标志值用于在SPATIAL_GAME、STEREO_8K、STEREO_2K、UAC1之间循环切换
#define MODE_STEREO_2K UAC1_IN_FLAG // 4 STEREO_2K模式标志
#define MODE_SPATIAL_GAME COAX_IN_FLAG //1 SPATIAL_GAME模式标志
#define MODE_SPATIAL_MOVIE OPT_IN_FLAG // 3 STEREO_8K模式标志
#define MODE_UAC1 USB_IN_FLAG // 2 UAC1模式标志
extern uint8_t mic_vol;
//Tile 1
@@ -893,13 +860,13 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c
tmp = chan_in_word(cc_mic_level);
debug_printf("event_mic_vol received: 0x%02X\n", tmp);
#if USE_EX3D == 1
if (tmp == 0xFC) {
// 音频模式命令:来自 audiohw.xc button_task 的模式切换
current_mode_local = chan_in_word(cc_mic_level);
if (current_mode_local > 3) current_mode_local = 0;
debug_printf("hid_button_task received audio_mode: %d\n", current_mode_local);
if (current_mode_local == 0) {
// 无音效模式:灯灭,算法关闭
audio_ex3d_onoff(0);
@@ -956,6 +923,7 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c
break;
}
}
#endif
}
continue;
@@ -980,6 +948,7 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c
event_uac_vol:
{
sys_vol = chan_in_word(c_uac_vol);
#if USE_EX3D == 1
sys_vol = sys_vol * (-1);
int32_t threshold = Ex3dLimiterThreshold + (sys_vol + Ex3dOnGain + Ex3dExpandGain);
@@ -988,6 +957,7 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c
debug_printf("Set CMD_LMT_THRESHOLD : %d\r\n", threshold);
}
debug_printf("sys_vol:%d\n", sys_vol);
#endif
}
continue;
@@ -995,6 +965,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);
#if USE_EX3D == 1
// 检查 host app 是否通过 HID 改变了音场状态
uint32_t host_app_sf;
GET_SHARED_GLOBAL(host_app_sf, g_3d_on_off_t1);
@@ -1019,6 +990,7 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c
}
SET_SHARED_GLOBAL(g_3d_on_off_t1, is_3d_on);
}
#endif
}
continue;
}
@@ -1063,6 +1035,7 @@ void ex3d_task(){
}
}
#ifdef USE_EX3D == 1
#if defined(SPATIAL_DRAMA)
#define TD_DATA_BUFFER_ELEMENTS SPATIAL_71_DRAMA_v090h225_left_DATA_BUFFER_ELEMENTS
#elif defined(SPATIAL_GAME)
@@ -1327,3 +1300,5 @@ int dsp_worker_tile(chanend_t c_dsp_to_ex3d, int worker_id){
#endif
return 0;
}
#endif

View File

@@ -419,6 +419,27 @@ void usb_audio_io(chanend ?c_aud_in,
#define USER_MAIN_CORES
#endif
//extern unsafe client interface i2c_master_if i_i2c_client;
//extern unsafe client interface i2c_master_if i_i2c_client_t0;
extern void dsp_core0(void);
extern void board_setup();
extern void dsp_main (chanend c_data);
extern void SetEqDataChan (chanend c);
extern int dsp_worker_tile(chanend c_dsp_to_ex3d, int worker_id);
//extern int dsp_worker_tile_1(chanend c_dsp_to_ex3d, int worker_id);
extern void ex3d_task();
extern void hid_button_task(chanend cc_mic_level, chanend c_hid, chanend c_hidSendData, chanend c_uac_vol);
extern void AudioHwRemote(chanend c_hidSendData, chanend cc_mic_level, chanend c_uac_vol);
extern void dnr_dsp_proc_task(void);
extern unsafe chanend uc_dsp_to_ex3d[DSP_WORKER_COUNT];
extern unsafe chanend uc_dsp_to_dnr_t1;
extern unsafe chanend uc_key_to_ubm_t0;
extern unsafe chanend uc_audiohw;
extern void key_sender(chanend c_key);
extern void key_receiver(chanend c_key);
/* Main for USB Audio Applications */
int main()
@@ -510,9 +531,59 @@ int main()
USER_MAIN_DECLARATIONS
chan c_dsp_to_ex3d[DSP_WORKER_COUNT];
chan cc_mic_level;
chan c_key; chan c_hidSendData;
chan c_hidRcvData;
chan c_eq_data;
chan c_uac_vol;
par
{
USER_MAIN_CORES
on tile[1] : {
par {
unsafe {
hid_button_task(cc_mic_level, c_hidRcvData, c_hidSendData, c_uac_vol);
}
#if USE_EX3D == 1
par(int i = 0; i < DSP_WORKER_COUNT; i++)
dsp_worker_tile(c_dsp_to_ex3d[i], i);
unsafe {
SetEqDataChan(c_eq_data);
key_sender(c_key);
for (int i = 0; i < DSP_WORKER_COUNT; i++)
uc_dsp_to_ex3d[i] = (chanend)c_dsp_to_ex3d[i];
ex3d_task();
}
#endif
}
}
on tile[0] : {
par {
{
#if USE_EX3D == 1
unsafe { key_receiver(c_key); }
#endif
AudioHwRemote(c_hidSendData, cc_mic_level, c_uac_vol);
}
}
}
#if EQ_EN == 1
on tile[0] : {
{
dsp_core0();
}
}
on tile[0] : { dsp_main(c_eq_data); }
#endif
#if DNR_ENABLE == 1
on tile[0] : { dnr_dsp_proc_task(); }
#endif
#if (((XUA_SYNCMODE == XUA_SYNCMODE_SYNC && !XUA_USE_SW_PLL) || XUA_SPDIF_RX_EN || XUA_ADAT_RX_EN))
on tile[PLL_REF_TILE]: PllRefPinTask(i_pll_ref, p_pll_ref);

View File

@@ -10,124 +10,9 @@
#include <platform.h>
#include "DSBuild.h"
//extern unsafe client interface i2c_master_if i_i2c_client;
//extern unsafe client interface i2c_master_if i_i2c_client_t0;
extern void interface_saver(client interface i2c_master_if i);
extern void dsp_core0(void);
extern void board_setup();
extern void dsp_main (chanend c_data);
extern void SetEqDataChan (chanend c);
/* I2C interface ports */
extern port p_scl;
extern port p_sda;
extern int dsp_worker_tile(chanend c_dsp_to_ex3d, int worker_id);
//extern int dsp_worker_tile_1(chanend c_dsp_to_ex3d, int worker_id);
extern void ex3d_task();
extern void hid_button_task(chanend cc_mic_level, chanend c_hid, chanend c_hidSendData, chanend c_uac_vol);
extern void AudioHwRemote(chanend c_hidSendData, chanend cc_mic_level, chanend c_uac_vol);
extern void dnr_dsp_proc_task(void);
//XUA_DFU_EN do i need it?
// tile[0]
// 3 DSP processors
// XUD_Main
// Core USB audio task, buffering, USB etc
// Endpoint 0 Core
// i2c_master
// DFUHandler???
//IAP??
//tile[1]:
// ex3d
// hid + buttons
// 4 DSP processors
// usb_audio_io
//
extern unsafe chanend uc_dsp_to_ex3d[DSP_WORKER_COUNT];
extern unsafe chanend uc_dsp_to_dnr_t1;
extern unsafe chanend uc_key_to_ubm_t0;
extern unsafe chanend uc_audiohw;
extern void key_sender(chanend c_key);
extern void key_receiver(chanend c_key);
#if AIZIP_DNR == 1
#define USER_MAIN_DECLARATIONS \
chan c_dsp_to_ex3d[DSP_WORKER_COUNT]; \
chan cc_dsp_in; chan cc_dsp_eof; chan cc_mic_level; chan c;
#define USER_MAIN_CORES on tile[1]: {\
par\
{\
ex3d_task();\
par(int i=0;i<DSP_WORKER_COUNT;i++) dsp_worker_tile(c_dsp_to_ex3d[i], i);\
unsafe\
{\
uc_audiohw = (chanend) c;\
for(int i=0;i<DSP_WORKER_COUNT;i++)\
uc_dsp_to_ex3d[i] = (chanend) c_dsp_to_ex3d[i];\
uc_dsp_to_dnr_t1 = (chanend) cc_dsp_in;\
}\
hid_button_task(cc_mic_level, c_hid, c_hidSendData);\
}\
}\
on tile[0]: {\
par\
{\
unsafe\
{\
board_setup();\
} \
AudioHwRemote(c);\
dnr_dsp_buffer_task(cc_dsp_in, cc_dsp_eof, cc_mic_level);\
dnr_dsp_proc_task(cc_dsp_eof);\
}\
}
#else
#define USER_MAIN_DECLARATIONS \
chan c_dsp_to_ex3d[DSP_WORKER_COUNT]; chan cc_mic_level; chan c_key; chan c_hidSendData; chan c_hidRcvData; chan c_eq_data; chan c_uac_vol;
#define USER_MAIN_CORES on tile[1]: {\
par\
{\
hid_button_task(cc_mic_level, c_hidRcvData, c_hidSendData, c_uac_vol);\
par(int i=0;i<DSP_WORKER_COUNT;i++) dsp_worker_tile(c_dsp_to_ex3d[i], i);\
unsafe\
{\
SetEqDataChan(c_eq_data); \
key_sender(c_key);\
for(int i=0;i<DSP_WORKER_COUNT;i++)\
uc_dsp_to_ex3d[i] = (chanend) c_dsp_to_ex3d[i];\
ex3d_task();\
}\
}\
}\
on tile[0]: {\
par\
{\
{ \
unsafe\
{\
key_receiver(c_key);\
}\
AudioHwRemote(c_hidSendData, cc_mic_level, c_uac_vol);\
} \
}\
}\
on tile[0]: {\
{ dsp_core0(); } \
}\
on tile[0]: {dsp_main(c_eq_data); } \
on tile[0]: {dnr_dsp_proc_task(); } \
#endif // AIZIP_DNR
#endif // __XC__