adc monitor for F1
This commit is contained in:
@@ -662,11 +662,8 @@ void button_task(chanend c_hidSendData, chanend cc_mic_level, chanend c_uac_vol,
|
|||||||
mic_mute_blink_tick = 1;
|
mic_mute_blink_tick = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((g_monitor_switch == 1) && !flag_mic_mute && codec_adc_pga_gain_reg_value >= 2) {
|
// 硬件耳返通路已禁用,改为数字监听(在tile1 UserBufferManagement中实现)
|
||||||
unsafe { NAU88C22_REGWRITE(0x0030, 0xff00, (client interface i2c_master_if)i_i2c_client); }
|
// 初始化同步在上方已通过 cc_mic_level <: 0xFE 完成
|
||||||
} else {
|
|
||||||
unsafe { NAU88C22_REGWRITE(0x0030, 0x0000, (client interface i2c_master_if)i_i2c_client); }
|
|
||||||
}
|
|
||||||
|
|
||||||
// DAC 默认音量(mute 时写 0x0000)
|
// DAC 默认音量(mute 时写 0x0000)
|
||||||
if(dac_level == DAC_LEVEL_MIN)
|
if(dac_level == DAC_LEVEL_MIN)
|
||||||
@@ -735,6 +732,11 @@ void button_task(chanend c_hidSendData, chanend cc_mic_level, chanend c_uac_vol,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// 初始化数字监听开关同步到tile1
|
||||||
|
cc_mic_level <: 0xFE;
|
||||||
|
cc_mic_level <: (unsigned)g_monitor_switch;
|
||||||
|
debug_printf("Init monitor sync: sw=%d\n", g_monitor_switch);
|
||||||
|
|
||||||
// 出厂默认:AI降噪开启,初始化LED和算法
|
// 出厂默认:AI降噪开启,初始化LED和算法
|
||||||
#if DNR_ENABLE == 1
|
#if DNR_ENABLE == 1
|
||||||
if (flag_aidenoise_onoff) {
|
if (flag_aidenoise_onoff) {
|
||||||
@@ -1870,12 +1872,10 @@ void button_task(chanend c_hidSendData, chanend cc_mic_level, chanend c_uac_vol,
|
|||||||
if (g_request_monitor_switch_set) {
|
if (g_request_monitor_switch_set) {
|
||||||
g_request_monitor_switch_set = 0;
|
g_request_monitor_switch_set = 0;
|
||||||
unsigned new_mon = g_monitor_switch;
|
unsigned new_mon = g_monitor_switch;
|
||||||
// 根据当前mic状态和新的耳返开关值更新reg 0x30
|
// 同步数字监听开关到tile1
|
||||||
if (new_mon && !flag_mic_mute && codec_adc_pga_gain_reg_value >= 2) {
|
cc_mic_level <: 0xFE;
|
||||||
unsafe { NAU88C22_REGWRITE(0x0030, 0xff00, (client interface i2c_master_if)i_i2c_client); }
|
cc_mic_level <: (unsigned)new_mon;
|
||||||
} else {
|
debug_printf("HID monitor sync: sw=%d\n", new_mon);
|
||||||
unsafe { NAU88C22_REGWRITE(0x0030, 0x0000, (client interface i2c_master_if)i_i2c_client); }
|
|
||||||
}
|
|
||||||
save_value(monitor_sw_path, (unsigned char)new_mon);
|
save_value(monitor_sw_path, (unsigned char)new_mon);
|
||||||
debug_printf("HID SET_MONITOR_SWITCH: %d\n", new_mon);
|
debug_printf("HID SET_MONITOR_SWITCH: %d\n", new_mon);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -67,6 +67,9 @@ unsigned g_dnr_on_off_t1 = DNR_OFF; // Default DNR off
|
|||||||
#define MUTE_OFF 0
|
#define MUTE_OFF 0
|
||||||
unsigned g_mute_on_off_t1 = MUTE_ON;
|
unsigned g_mute_on_off_t1 = MUTE_ON;
|
||||||
|
|
||||||
|
// 数字监听 tile1 共享变量(由 tile0 通过 cc_mic_level 通道同步)
|
||||||
|
unsigned g_monitor_switch_t1 = 0; // 耳返开关 tile1 副本(0=关闭,1=开启)
|
||||||
|
|
||||||
unsigned g_mute_on_off_t0 = MUTE_OFF;
|
unsigned g_mute_on_off_t0 = MUTE_OFF;
|
||||||
|
|
||||||
unsigned g_game_mode = 0;
|
unsigned g_game_mode = 0;
|
||||||
@@ -144,11 +147,11 @@ enum {UBM_A3D_OFF=0, UBM_A3D_VON=1, UBM_A3D_ON=2};
|
|||||||
extern void buffer_exchange(chanend_t c_data, unsigned sampsFromUsbToAudio[], unsigned sampsFromAudioToUsb[], unsigned sample_freq);
|
extern void buffer_exchange(chanend_t c_data, unsigned sampsFromUsbToAudio[], unsigned sampsFromAudioToUsb[], unsigned sample_freq);
|
||||||
extern unsigned int is_eq_disabled(void);
|
extern unsigned int is_eq_disabled(void);
|
||||||
extern unsigned int g_eq_enable;
|
extern unsigned int g_eq_enable;
|
||||||
|
|
||||||
void UserBufferManagement(unsigned sampsFromUsbToAudio[], unsigned sampsFromAudioToUsb[])
|
void UserBufferManagement(unsigned sampsFromUsbToAudio[], unsigned sampsFromAudioToUsb[])
|
||||||
{
|
{
|
||||||
uint32_t is_3d;
|
uint32_t is_3d;
|
||||||
uint32_t is_dnr;
|
unsigned is_monitor;
|
||||||
uint32_t is_mute;
|
|
||||||
#if UAC1_MODE
|
#if UAC1_MODE
|
||||||
return;
|
return;
|
||||||
#endif
|
#endif
|
||||||
@@ -160,8 +163,6 @@ void UserBufferManagement(unsigned sampsFromUsbToAudio[], unsigned sampsFromAudi
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
GET_SHARED_GLOBAL(is_3d, g_3d_on_off_t1);
|
GET_SHARED_GLOBAL(is_3d, g_3d_on_off_t1);
|
||||||
GET_SHARED_GLOBAL(is_dnr, g_dnr_on_off_t1);
|
|
||||||
GET_SHARED_GLOBAL(is_mute, g_mute_on_off_t1);
|
|
||||||
#if (HID_CONTROLS > 0)
|
#if (HID_CONTROLS > 0)
|
||||||
AUDIO_T absVal, maxVal;
|
AUDIO_T absVal, maxVal;
|
||||||
#endif
|
#endif
|
||||||
@@ -252,6 +253,11 @@ void UserBufferManagement(unsigned sampsFromUsbToAudio[], unsigned sampsFromAudi
|
|||||||
#elif DNR_ENABLE == 1
|
#elif DNR_ENABLE == 1
|
||||||
buffer_exchange(uc_eq_data, sampsFromUsbToAudio, sampsFromAudioToUsb, ubm_sample_freq);
|
buffer_exchange(uc_eq_data, sampsFromUsbToAudio, sampsFromAudioToUsb, ubm_sample_freq);
|
||||||
#endif
|
#endif
|
||||||
|
GET_SHARED_GLOBAL(is_monitor, g_monitor_switch_t1);
|
||||||
|
if (is_monitor) {
|
||||||
|
sampsFromUsbToAudio[0] += (sampsFromAudioToUsb[0] >> 1);
|
||||||
|
sampsFromUsbToAudio[1] += (sampsFromAudioToUsb[1] >> 1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -877,13 +883,13 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c
|
|||||||
tmp = chan_in_word(cc_mic_level);
|
tmp = chan_in_word(cc_mic_level);
|
||||||
debug_printf("event_mic_vol received: 0x%02X\n", tmp);
|
debug_printf("event_mic_vol received: 0x%02X\n", tmp);
|
||||||
|
|
||||||
#if USE_EX3D == 1
|
|
||||||
if (tmp == 0xFC) {
|
if (tmp == 0xFC) {
|
||||||
// 音频模式命令:来自 audiohw.xc button_task 的模式切换
|
// 音频模式命令:来自 audiohw.xc button_task 的模式切换
|
||||||
|
// 必须先读取payload,无论是否启用EX3D
|
||||||
current_mode_local = chan_in_word(cc_mic_level);
|
current_mode_local = chan_in_word(cc_mic_level);
|
||||||
if (current_mode_local > 3) current_mode_local = 0;
|
if (current_mode_local > 3) current_mode_local = 0;
|
||||||
debug_printf("hid_button_task received audio_mode: %d\n", current_mode_local);
|
debug_printf("hid_button_task received audio_mode: %d\n", current_mode_local);
|
||||||
|
#if USE_EX3D == 1
|
||||||
if (current_mode_local == 0) {
|
if (current_mode_local == 0) {
|
||||||
// 无音效模式:关闭EX3D和EQ算法
|
// 无音效模式:关闭EX3D和EQ算法
|
||||||
audio_ex3d_set_onoff(0);
|
audio_ex3d_set_onoff(0);
|
||||||
@@ -945,16 +951,25 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
SET_SHARED_GLOBAL(g_3d_on_off_t1, is_3d_on);
|
SET_SHARED_GLOBAL(g_3d_on_off_t1, is_3d_on);
|
||||||
|
#endif
|
||||||
} else if (tmp == 0xFD) {
|
} else if (tmp == 0xFD) {
|
||||||
// 脚步增强按键发来的 expand gain 命令
|
// 脚步增强按键发来的 expand gain 命令
|
||||||
|
// 必须先读取payload,无论是否启用EX3D
|
||||||
int32_t gain = (int32_t)chan_in_word(cc_mic_level);
|
int32_t gain = (int32_t)chan_in_word(cc_mic_level);
|
||||||
|
#if USE_EX3D == 1
|
||||||
if ((0 <= gain) && (gain <= 20)) {
|
if ((0 <= gain) && (gain <= 20)) {
|
||||||
Ex3dExpandGain = gain;
|
Ex3dExpandGain = gain;
|
||||||
EX3DAudio_SetExpandGain(Ex3dExpandGain);
|
EX3DAudio_SetExpandGain(Ex3dExpandGain);
|
||||||
debug_printf("Button set CMD_EXPAND_GAIN: %d\n", gain);
|
debug_printf("Button set CMD_EXPAND_GAIN: %d\n", gain);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
} else if (tmp == 0xFE) {
|
||||||
|
// 数字监听开关同步命令:来自 tile0(所有模式都需要处理)
|
||||||
|
unsigned mon_sw = chan_in_word(cc_mic_level);
|
||||||
|
SET_SHARED_GLOBAL(g_monitor_switch_t1, mon_sw);
|
||||||
|
debug_printf("Monitor sync: sw=%d\n", mon_sw);
|
||||||
} else {
|
} else {
|
||||||
// Mic 静音状态命令
|
// Mic 静音状态命令(所有模式都需要处理)
|
||||||
switch (tmp) {
|
switch (tmp) {
|
||||||
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);
|
||||||
@@ -971,7 +986,6 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user