add footsteps report and update mic led logic
This commit is contained in:
@@ -396,6 +396,7 @@ void button_task(chanend c_hidSendData, chanend cc_mic_level, chanend c_uac_vol,
|
||||
// 出厂默认:AI降噪开启
|
||||
unsigned flag_aidenoise_onoff = 1;
|
||||
unsigned dnr_strength_saved = 100; // AI降噪重新开启时恢复的强度(0x85可更新)
|
||||
unsigned last_footstep_expand = 0xFF; // 上次已上报的脚步增强增益值,0xFF表示初始化未完成
|
||||
|
||||
// Buttons state
|
||||
unsigned push_button_music_mode_state_old = 1; // Active low
|
||||
@@ -600,7 +601,7 @@ void button_task(chanend c_hidSendData, chanend cc_mic_level, chanend c_uac_vol,
|
||||
// 从 Flash 恢复 mic/dac 音量
|
||||
{
|
||||
unsigned char saved_mic = load_value(mic_vol_path);
|
||||
if(saved_mic >= NAU88L21_PGA_GAIN_REG_MIN_USED_VALUE && saved_mic <= NAU88L21_PGA_GAIN_REG_MAX_VALUE)
|
||||
if(saved_mic <= NAU88L21_PGA_GAIN_REG_MAX_VALUE)
|
||||
codec_adc_pga_gain_reg_value = saved_mic;
|
||||
else
|
||||
save_value(mic_vol_path, (unsigned char)codec_adc_pga_gain_reg_value); // 出厂默认22(21dB)
|
||||
@@ -1580,8 +1581,11 @@ void button_task(chanend c_hidSendData, chanend cc_mic_level, chanend c_uac_vol,
|
||||
if((codec_adc_pga_gain_reg_value < NAU88L21_PGA_GAIN_REG_MAX_VALUE) && (flag_mic_mute == 0)) {
|
||||
uint8_t old_led_count = mic_gain_to_led[codec_adc_pga_gain_reg_value];
|
||||
|
||||
// 增加音量
|
||||
++codec_adc_pga_gain_reg_value;
|
||||
// 从mute(0)跳到首个LED档位(3),跳过无LED的1-2档
|
||||
if (codec_adc_pga_gain_reg_value == 0)
|
||||
codec_adc_pga_gain_reg_value = 3;
|
||||
else
|
||||
++codec_adc_pga_gain_reg_value;
|
||||
if (!mic_det_muted)
|
||||
mic_volume(codec_adc_pga_gain_reg_value);
|
||||
g_mic_volume_level = (codec_adc_pga_gain_reg_value <= 37) ? codec_adc_pga_gain_reg_value : 37;
|
||||
@@ -1597,13 +1601,20 @@ void button_task(chanend c_hidSendData, chanend cc_mic_level, chanend c_uac_vol,
|
||||
}
|
||||
}
|
||||
} else { // 逆时针
|
||||
if((codec_adc_pga_gain_reg_value > NAU88L21_PGA_GAIN_REG_MIN_USED_VALUE) && (flag_mic_mute == 0)) {
|
||||
if((codec_adc_pga_gain_reg_value > 0) && (flag_mic_mute == 0)) {
|
||||
uint8_t old_led_count = mic_gain_to_led[codec_adc_pga_gain_reg_value];
|
||||
|
||||
// 减小音量
|
||||
--codec_adc_pga_gain_reg_value;
|
||||
if (!mic_det_muted)
|
||||
mic_volume(codec_adc_pga_gain_reg_value);
|
||||
// 减小音量:在首个LED档位(<=3)直接跳到mute(0),跳过无LED的1-2档
|
||||
if (codec_adc_pga_gain_reg_value <= 3)
|
||||
codec_adc_pga_gain_reg_value = 0;
|
||||
else
|
||||
--codec_adc_pga_gain_reg_value;
|
||||
if (!mic_det_muted) {
|
||||
if (codec_adc_pga_gain_reg_value == 0)
|
||||
mic_volume(0);
|
||||
else
|
||||
mic_volume(codec_adc_pga_gain_reg_value);
|
||||
}
|
||||
g_mic_volume_level = (codec_adc_pga_gain_reg_value <= 37) ? codec_adc_pga_gain_reg_value : 37;
|
||||
debug_printf("volume down %d\n", codec_adc_pga_gain_reg_value);
|
||||
save_value(mic_vol_path, codec_adc_pga_gain_reg_value);
|
||||
@@ -1868,9 +1879,9 @@ void button_task(chanend c_hidSendData, chanend cc_mic_level, chanend c_uac_vol,
|
||||
if (new_mic_level <= 37) { // 0=mute, 1-37=0dB~36dB
|
||||
uint8_t new_led_count;
|
||||
if (new_mic_level == 0) {
|
||||
// mute: 静音硬件,codec_adc_pga_gain_reg_value回到最小值
|
||||
// mute: 静音硬件,codec_adc_pga_gain_reg_value设为0(与编码器静音一致)
|
||||
mic_volume(0);
|
||||
codec_adc_pga_gain_reg_value = NAU88L21_PGA_GAIN_REG_MIN_USED_VALUE;
|
||||
codec_adc_pga_gain_reg_value = 0;
|
||||
new_led_count = 0;
|
||||
} else {
|
||||
codec_adc_pga_gain_reg_value = new_mic_level;
|
||||
@@ -2023,6 +2034,37 @@ void button_task(chanend c_hidSendData, chanend cc_mic_level, chanend c_uac_vol,
|
||||
}
|
||||
g_last_game_mode = current_game_mode;
|
||||
}
|
||||
|
||||
#if USE_EX3D == 1
|
||||
// HID脚步增强状态变化主动上报(按键切换或HID 0xB0命令导致的变化,含首次开机上报)
|
||||
{
|
||||
unsigned current_footstep_expand;
|
||||
if (flag_footsteps_enhancement == 0) current_footstep_expand = 0;
|
||||
else if (flag_footsteps_enhancement == 1) current_footstep_expand = 6;
|
||||
else current_footstep_expand = 12;
|
||||
#if HID_DFU_EN
|
||||
if (!g_in_fw_upgrade)
|
||||
#endif
|
||||
if (last_footstep_expand != current_footstep_expand) {
|
||||
unsafe {
|
||||
unsigned char * unsafe ptr = (unsigned char * unsafe)hidSendData;
|
||||
ptr[0] = 1;
|
||||
ptr[1] = 0x77;
|
||||
ptr[2] = 0xB1;
|
||||
// EX3D GET CMD_EXPAND_GAIN = 0x193 (little-endian)
|
||||
ptr[3] = 0x93; ptr[4] = 0x01; ptr[5] = 0x00; ptr[6] = 0x00;
|
||||
// 返回值: expand_gain (uint32, little-endian)
|
||||
ptr[7] = (unsigned char)current_footstep_expand;
|
||||
ptr[8] = 0x00; ptr[9] = 0x00; ptr[10] = 0x00;
|
||||
for (int i = 11; i < HID_MAX_DATA_BYTES; i++) ptr[i] = 0x00;
|
||||
}
|
||||
hidSetChangePending(0x1);
|
||||
debug_printf("Footstep expand_gain changed: %d -> %d, HID 0xB1 report sent\n",
|
||||
last_footstep_expand, current_footstep_expand);
|
||||
}
|
||||
last_footstep_expand = current_footstep_expand;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if EQ_EN
|
||||
|
||||
Reference in New Issue
Block a user