mute led act as blinking
This commit is contained in:
@@ -274,6 +274,7 @@ in port p_button_ai71_onoff = PORT_BUTTON_AI71_ONOFF; // 1M
|
|||||||
#define TIMER_PERIOD (100000)
|
#define TIMER_PERIOD (100000)
|
||||||
#define FACTORY_RESET_HOLD_TICKS 3000 // 3000 × 1ms = 3秒
|
#define FACTORY_RESET_HOLD_TICKS 3000 // 3000 × 1ms = 3秒
|
||||||
#define FACTORY_RESET_BLINK_TICKS 400 // 每相400ms
|
#define FACTORY_RESET_BLINK_TICKS 400 // 每相400ms
|
||||||
|
#define MUTE_BLINK_HALF_PERIOD 500 // mute LED blink half period 250ms
|
||||||
#define BTN_COMBO_DELAY_TICKS 40 // 单键去抖/组合检测窗口(50ms)
|
#define BTN_COMBO_DELAY_TICKS 40 // 单键去抖/组合检测窗口(50ms)
|
||||||
|
|
||||||
unsigned g_windows_detect_done = 0;
|
unsigned g_windows_detect_done = 0;
|
||||||
@@ -403,6 +404,8 @@ void button_task(chanend c_hidSendData, chanend cc_mic_level, chanend c_uac_vol,
|
|||||||
unsigned factory_reset_hold_count = 0; // 两键同时按住计数(×1ms)
|
unsigned factory_reset_hold_count = 0; // 两键同时按住计数(×1ms)
|
||||||
unsigned factory_reset_blink_state = 0; // 0=空闲,1-6=闪烁相位
|
unsigned factory_reset_blink_state = 0; // 0=空闲,1-6=闪烁相位
|
||||||
unsigned factory_reset_blink_tick = 0; // 当前相位内计数
|
unsigned factory_reset_blink_tick = 0; // 当前相位内计数
|
||||||
|
unsigned mic_mute_blink_tick = 0;
|
||||||
|
unsigned hp_mute_blink_tick = 0;
|
||||||
// 组合键去抖:单键动作延迟 BTN_COMBO_DELAY_TICKS 后触发,期间若另一键也按下则切换为组合模式
|
// 组合键去抖:单键动作延迟 BTN_COMBO_DELAY_TICKS 后触发,期间若另一键也按下则切换为组合模式
|
||||||
unsigned btn_music_hold_ticks = 0; // music键连续按住计数
|
unsigned btn_music_hold_ticks = 0; // music键连续按住计数
|
||||||
unsigned btn_game_hold_ticks = 0; // game键连续按住计数
|
unsigned btn_game_hold_ticks = 0; // game键连续按住计数
|
||||||
@@ -607,7 +610,7 @@ void button_task(chanend c_hidSendData, chanend cc_mic_level, chanend c_uac_vol,
|
|||||||
// 若mic_mute已从flash恢复为1,则此处先以正常gain调用,再用mute覆盖
|
// 若mic_mute已从flash恢复为1,则此处先以正常gain调用,再用mute覆盖
|
||||||
mic_volume(codec_adc_pga_gain_reg_value);
|
mic_volume(codec_adc_pga_gain_reg_value);
|
||||||
{
|
{
|
||||||
int mic_led_count = flag_mic_mute ? 0 : mic_gain_to_led[codec_adc_pga_gain_reg_value];
|
int mic_led_count = flag_mic_mute ? 15 : mic_gain_to_led[codec_adc_pga_gain_reg_value];
|
||||||
for(int i = 0; i < 15; i++)
|
for(int i = 0; i < 15; i++)
|
||||||
{
|
{
|
||||||
if (i < mic_led_count)
|
if (i < mic_led_count)
|
||||||
@@ -620,6 +623,7 @@ void button_task(chanend c_hidSendData, chanend cc_mic_level, chanend c_uac_vol,
|
|||||||
if(flag_mic_mute) {
|
if(flag_mic_mute) {
|
||||||
mic_volume(0);
|
mic_volume(0);
|
||||||
g_mic_volume_level = 0;
|
g_mic_volume_level = 0;
|
||||||
|
mic_mute_blink_tick = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((g_monitor_switch == 1) && !flag_mic_mute && codec_adc_pga_gain_reg_value >= 2) {
|
if ((g_monitor_switch == 1) && !flag_mic_mute && codec_adc_pga_gain_reg_value >= 2) {
|
||||||
@@ -634,7 +638,7 @@ void button_task(chanend c_hidSendData, chanend cc_mic_level, chanend c_uac_vol,
|
|||||||
else
|
else
|
||||||
dac_volume(dac_level - DAC_LEVEL_MAX);
|
dac_volume(dac_level - DAC_LEVEL_MAX);
|
||||||
{
|
{
|
||||||
int dac_led_count = flag_hp_mute ? 0 : dac_gain_to_led[dac_level];
|
int dac_led_count = flag_hp_mute ? 15 : dac_gain_to_led[dac_level];
|
||||||
for(int i = 0; i < 15; i++)
|
for(int i = 0; i < 15; i++)
|
||||||
{
|
{
|
||||||
if (i < dac_led_count)
|
if (i < dac_led_count)
|
||||||
@@ -647,6 +651,7 @@ void button_task(chanend c_hidSendData, chanend cc_mic_level, chanend c_uac_vol,
|
|||||||
if(flag_hp_mute) {
|
if(flag_hp_mute) {
|
||||||
unsafe { NAU88C22_REGWRITE(0x0034, 0x0000, (client interface i2c_master_if)i_i2c_client); }
|
unsafe { NAU88C22_REGWRITE(0x0034, 0x0000, (client interface i2c_master_if)i_i2c_client); }
|
||||||
g_volume_level = 0;
|
g_volume_level = 0;
|
||||||
|
hp_mute_blink_tick = 1;
|
||||||
}
|
}
|
||||||
// Initialize mode button LEDs: at most one may be lit at a time
|
// Initialize mode button LEDs: at most one may be lit at a time
|
||||||
led_off(&led_ctx, LED_MUSIC);
|
led_off(&led_ctx, LED_MUSIC);
|
||||||
@@ -1377,17 +1382,17 @@ void button_task(chanend c_hidSendData, chanend cc_mic_level, chanend c_uac_vol,
|
|||||||
{
|
{
|
||||||
mic_volume(0);
|
mic_volume(0);
|
||||||
g_mic_volume_level = 0;
|
g_mic_volume_level = 0;
|
||||||
current_mic_led_pos = mic_gain_to_led[codec_adc_pga_gain_reg_value] - 1;
|
for(int i = 0; i < 15; i++)
|
||||||
for(int i = 0; i <= current_mic_led_pos; i++)
|
led_on(&led_ctx, led_l_physical_map[i]);
|
||||||
{
|
mic_mute_blink_tick = 1;
|
||||||
if ((i < 15) && (i >= 0))
|
|
||||||
led_off(&led_ctx, led_l_physical_map[i]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
mic_volume(codec_adc_pga_gain_reg_value);
|
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;
|
g_mic_volume_level = (codec_adc_pga_gain_reg_value <= 37) ? codec_adc_pga_gain_reg_value : 37;
|
||||||
|
mic_mute_blink_tick = 0;
|
||||||
|
for(int i = 0; i < 15; i++)
|
||||||
|
led_off(&led_ctx, led_l_physical_map[i]);
|
||||||
current_mic_led_pos = mic_gain_to_led[codec_adc_pga_gain_reg_value] - 1;
|
current_mic_led_pos = mic_gain_to_led[codec_adc_pga_gain_reg_value] - 1;
|
||||||
for(int i = 0; i <= current_mic_led_pos; i++)
|
for(int i = 0; i <= current_mic_led_pos; i++)
|
||||||
{
|
{
|
||||||
@@ -1615,12 +1620,9 @@ void button_task(chanend c_hidSendData, chanend cc_mic_level, chanend c_uac_vol,
|
|||||||
{
|
{
|
||||||
unsafe { NAU88C22_REGWRITE(0x0034, 0x0000, (client interface i2c_master_if)i_i2c_client); }
|
unsafe { NAU88C22_REGWRITE(0x0034, 0x0000, (client interface i2c_master_if)i_i2c_client); }
|
||||||
g_volume_level = 0;
|
g_volume_level = 0;
|
||||||
current_mic_led_pos = dac_gain_to_led[dac_level] - 1;
|
for(int i = 0; i < 15; i++)
|
||||||
for(int i = 0; i <= current_mic_led_pos; i++)
|
led_on(&led_ctx, led_d_physical_map[i]);
|
||||||
{
|
hp_mute_blink_tick = 1;
|
||||||
if ((i < 15) && (i >= 0))
|
|
||||||
led_off(&led_ctx, led_d_physical_map[i]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -1629,6 +1631,9 @@ void button_task(chanend c_hidSendData, chanend cc_mic_level, chanend c_uac_vol,
|
|||||||
else
|
else
|
||||||
dac_volume(dac_level - DAC_LEVEL_MAX);
|
dac_volume(dac_level - DAC_LEVEL_MAX);
|
||||||
g_volume_level = dac_level;
|
g_volume_level = dac_level;
|
||||||
|
hp_mute_blink_tick = 0;
|
||||||
|
for(int i = 0; i < 15; i++)
|
||||||
|
led_off(&led_ctx, led_d_physical_map[i]);
|
||||||
current_mic_led_pos = dac_gain_to_led[dac_level] - 1;
|
current_mic_led_pos = dac_gain_to_led[dac_level] - 1;
|
||||||
for(int i = 0; i <= current_mic_led_pos; i++)
|
for(int i = 0; i <= current_mic_led_pos; i++)
|
||||||
{
|
{
|
||||||
@@ -1637,6 +1642,27 @@ void button_task(chanend c_hidSendData, chanend cc_mic_level, chanend c_uac_vol,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// mute blink: 250ms on / 250ms off
|
||||||
|
if(mic_mute_blink_tick > 0)
|
||||||
|
{
|
||||||
|
mic_mute_blink_tick++;
|
||||||
|
if(mic_mute_blink_tick >= MUTE_BLINK_HALF_PERIOD * 2)
|
||||||
|
mic_mute_blink_tick = 1;
|
||||||
|
if(mic_mute_blink_tick == 1)
|
||||||
|
for(int i = 0; i < 15; i++) led_on(&led_ctx, led_l_physical_map[i]);
|
||||||
|
else if(mic_mute_blink_tick == MUTE_BLINK_HALF_PERIOD + 1)
|
||||||
|
for(int i = 0; i < 15; i++) led_off(&led_ctx, led_l_physical_map[i]);
|
||||||
|
}
|
||||||
|
if(hp_mute_blink_tick > 0)
|
||||||
|
{
|
||||||
|
hp_mute_blink_tick++;
|
||||||
|
if(hp_mute_blink_tick >= MUTE_BLINK_HALF_PERIOD * 2)
|
||||||
|
hp_mute_blink_tick = 1;
|
||||||
|
if(hp_mute_blink_tick == 1)
|
||||||
|
for(int i = 0; i < 15; i++) led_on(&led_ctx, led_d_physical_map[i]);
|
||||||
|
else if(hp_mute_blink_tick == MUTE_BLINK_HALF_PERIOD + 1)
|
||||||
|
for(int i = 0; i < 15; i++) led_off(&led_ctx, led_d_physical_map[i]);
|
||||||
|
}
|
||||||
led_update_all(&led_ctx);
|
led_update_all(&led_ctx);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -1951,4 +1977,4 @@ void mute_handler()
|
|||||||
p_ctl_mute <: 0;
|
p_ctl_mute <: 0;
|
||||||
delay_milliseconds(1000);
|
delay_milliseconds(1000);
|
||||||
p_ctl_mute <: 1;
|
p_ctl_mute <: 1;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user