mic mute enable

This commit is contained in:
Steven Dan
2026-05-23 09:24:07 +08:00
parent 1db07f357d
commit ec1361a2ae

View File

@@ -556,6 +556,23 @@ static void tx1_rgb_volume_bar_refresh(htr3236_t *dev, client interface i2c_mast
void save_value(unsigned char * unsafe path, unsigned char value);
unsigned char load_value(unsigned char * unsafe path);
/* 改动原因MIC 静音与 golden/phaten 一致——g_mute_switch 驱动定时器里 effective_adc_vol=0
* 并立即写 NAU88 ADC 寄存器old_adc_vol 与定时器分支保持同步避免重复 I2C。 */
static void tx1_apply_mic_mute_hw(unsigned mic_muted, unsigned &old_adc_vol,
client interface i2c_master_if i2c)
{
SET_SHARED_GLOBAL(g_mute_switch, mic_muted);
if (mic_muted) {
mic_volume(0, i2c);
old_adc_vol = 0;
} else {
unsigned adc_vol;
GET_SHARED_GLOBAL(adc_vol, g_adc_vol);
mic_volume(adc_vol, i2c);
old_adc_vol = adc_vol;
}
}
/* 改动原因c_dfu 仅接收 FIRMWARE_UPGRADE_START在此线程执行 handle_firmware_upgrade_start。
* 移除未使用的 chanend c_erase原占位参数无任何 select/通信,会导致 main 侧被迫接 dummy 通道且与当前拓扑无关。 */
#if HID_DFU_EN
@@ -590,6 +607,27 @@ void AudioHwRemote2(streaming chanend c, client interface i2c_master_if i2c, cli
tx1_feature_mode_t feature_mode = FEATURE_MODE_NONE;
unsigned feature_volume = 12; // 改动原因:与 jok ui_app gunshot/footstep/mic 默认 12 一致
unsigned mic_muted = 0;
/* 改动原因:与 phaten golden 相同 LFS 键名,断电保存 MIC 静音255=首次无记录默认未静音 */
unsigned char mic_mute_path[] = "mic_mute";
{
unsigned char saved_mic_mute = load_value(mic_mute_path);
if (saved_mic_mute == 1) {
mic_muted = 1;
} else {
mic_muted = 0;
if (saved_mic_mute == 255) {
save_value(mic_mute_path, (unsigned char)0);
}
}
SET_SHARED_GLOBAL(g_mute_switch, mic_muted);
/* 改动原因:与 g_dac_vol 相同技巧,首轮定时器必写 ADC若已静音则 effective_adc_vol=0 */
{
unsigned init_adc_vol;
GET_SHARED_GLOBAL(init_adc_vol, g_adc_vol);
old_adc_vol = mic_muted ? (~init_adc_vol) : (~0u);
}
debug_printf("TX1: Loaded mic_mute from flash: mic_muted=%d\n", mic_muted);
}
unsigned dnr_enabled = 1;
unsigned high_perf_mode = 0;
@@ -1308,10 +1346,13 @@ void AudioHwRemote2(streaming chanend c, client interface i2c_master_if i2c, cli
mic_long_fired = 0;
} else {
if (!mic_long_fired && (now - mic_press_time) < 1000000000ull) {
// Short press: toggle mic mute
/* 改动原因:短按 MIC 切换静音——mute ADCmic_volume(0))、
* g_mute_switch 供 HID 0xB2save_value 断电记忆,开机 load_value 恢复 */
mic_muted = !mic_muted;
tx1_apply_mic_mute_hw(mic_muted, old_adc_vol, i2c);
save_value(mic_mute_path, (unsigned char)mic_muted);
gpio_leds_dirty = 1;
debug_printf("TX1: MIC short press - mic_muted=%d\n", mic_muted);
debug_printf("TX1: MIC short press - mic_muted=%d saved\n", mic_muted);
}
}
prev_mic = mic;