mic mute enable
This commit is contained in:
@@ -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 ADC(mic_volume(0))、
|
||||
* g_mute_switch 供 HID 0xB2,save_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;
|
||||
|
||||
Reference in New Issue
Block a user