dnr button support
This commit is contained in:
@@ -112,8 +112,8 @@ timer tm;
|
||||
// 改动原因:C1的TIMER_PERIOD为20ms,按DS1同类短按/长按模型换算阈值;mode/mic 仍用 LONG 区分短按窗口;音量键已取消长按连调故不再使用 REPEAT 间隔宏。
|
||||
#define C1_KEY_SHORT_TICKS 1
|
||||
#define C1_KEY_LONG_TICKS 50
|
||||
// 改动原因:规格要求 mic 键长按 1.5s 触发 AI 通话降噪开关;20ms*75=1.5s,与 mode 键的 C1_KEY_LONG_TICKS(1s) 解耦,避免误触。
|
||||
#define C1_KEY_MIC_AI_NR_TICKS 75
|
||||
// 改动原因:规格要求 mic 键长按 1.5s 切换 g_dnr_enable(AI 通话降噪/DNR);20ms*75=1.5s,与 mode 键 LONG 解耦,避免误触。
|
||||
#define C1_KEY_MIC_DNR_LONG_TICKS 75
|
||||
// 改动原因:双击第二下需在首击释放后约 500ms 内按下,否则判为单击静音;20ms*25=500ms。
|
||||
#define C1_MIC_DOUBLE_DEFER_TICKS 25
|
||||
// 改动原因:新增C1模式持久化文件路径,使用LittleFS保存mode按键状态,保证断电重启后可恢复。
|
||||
@@ -514,13 +514,12 @@ void AudioHwRemote2(streaming chanend c, client interface i2c_master_if i2c, cli
|
||||
unsigned vol_down_press_ticks = 0;
|
||||
unsigned mic_mute_press_ticks = 0;
|
||||
unsigned vol_up_press_ticks = 0;
|
||||
// 改动原因:mic 键双击需延迟首轮短按的静音动作,用 stage1=等超时单击 / stage2=已收到第二下按下等释放;与长按 AI 互斥靠 mic_ai_long_fired。
|
||||
// 改动原因:mic 键双击需延迟首轮短按的静音动作,用 stage1=等超时单击 / stage2=已收到第二下按下等释放;与长按 DNR 互斥靠 mic_dnr_long_fired。
|
||||
unsigned mic_dbl_stage = 0;
|
||||
unsigned mic_defer_left = 0;
|
||||
unsigned mic_ai_long_fired = 0;
|
||||
// 改动原因:变声/美声仅按键+灯,tile0 保存状态供下发橙色 mode 区;AI 降噪无灯仅本地翻转供后续扩展。
|
||||
unsigned mic_dnr_long_fired = 0;
|
||||
// 改动原因:变声/美声仅按键+灯,tile0 保存状态供 set_mic_voice_fx 下发 mic 橙灯。
|
||||
unsigned c1_mic_voice_fx = 0;
|
||||
unsigned c1_mic_ai_nr = 0;
|
||||
// 改动原因:mic mute红灯通过interface下发到tile1,仅在状态变化时发送,减少无意义跨tile调用。
|
||||
unsigned last_mute_switch_for_led = 0xFFFFFFFF;
|
||||
unsigned host_os = 0;
|
||||
@@ -894,6 +893,16 @@ void AudioHwRemote2(streaming chanend c, client interface i2c_master_if i2c, cli
|
||||
mic_dbl_stage = 2;
|
||||
}
|
||||
mic_mute_press_ticks++;
|
||||
// 改动原因:按住满 1.5s 翻转 g_dnr_enable,extra_i2s 中 GET_SHARED_GLOBAL 决定是否走 DNR;松手时靠 mic_dnr_long_fired 屏蔽短按/双击。
|
||||
if (mic_mute_press_ticks == C1_KEY_MIC_DNR_LONG_TICKS)
|
||||
{
|
||||
unsigned dnr_enable;
|
||||
GET_SHARED_GLOBAL(dnr_enable, g_dnr_enable);
|
||||
dnr_enable = (dnr_enable != 0) ? 0 : 1;
|
||||
SET_SHARED_GLOBAL(g_dnr_enable, dnr_enable);
|
||||
mic_dnr_long_fired = 1;
|
||||
debug_printf("C1 mic DNR toggle (hold 1.5s): %d\n", dnr_enable);
|
||||
}
|
||||
// 改动原因:同一时刻只允许mic mute键生效,清除其它键状态,避免释放时误执行音量或mode短按。
|
||||
mode_press_ticks = 0;
|
||||
vol_down_press_ticks = 0;
|
||||
@@ -950,17 +959,17 @@ void AudioHwRemote2(streaming chanend c, client interface i2c_master_if i2c, cli
|
||||
}
|
||||
}
|
||||
|
||||
// 改动原因:mic:短按静音改为延迟单击(防双击);双击短按切变声灯(橙R+G);按住满1.5s仅切 AI 状态变量无灯;长按与短/双互斥。
|
||||
// 改动原因:mic:短按静音延迟单击(防双击);双击变声 mic 橙灯;长按1.5s 切 g_dnr_enable 无灯;长按与短/双互斥。
|
||||
{
|
||||
unsigned mic_snap = mic_mute_press_ticks;
|
||||
if (mic_snap > 0)
|
||||
{
|
||||
if ((mic_snap >= C1_KEY_MIC_AI_NR_TICKS) || mic_ai_long_fired)
|
||||
if ((mic_snap >= C1_KEY_MIC_DNR_LONG_TICKS) || mic_dnr_long_fired)
|
||||
{
|
||||
if (mic_dbl_stage == 2)
|
||||
mic_dbl_stage = 0;
|
||||
}
|
||||
else if ((mic_snap >= C1_KEY_SHORT_TICKS) && (mic_snap < C1_KEY_MIC_AI_NR_TICKS))
|
||||
else if ((mic_snap >= C1_KEY_SHORT_TICKS) && (mic_snap < C1_KEY_MIC_DNR_LONG_TICKS))
|
||||
{
|
||||
if (mic_dbl_stage == 2)
|
||||
{
|
||||
@@ -976,7 +985,7 @@ void AudioHwRemote2(streaming chanend c, client interface i2c_master_if i2c, cli
|
||||
mic_defer_left = C1_MIC_DOUBLE_DEFER_TICKS;
|
||||
}
|
||||
}
|
||||
mic_ai_long_fired = 0;
|
||||
mic_dnr_long_fired = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -112,8 +112,8 @@ timer tm;
|
||||
// 改动原因:C1的TIMER_PERIOD为20ms,按DS1同类短按/长按模型换算阈值;mode/mic 仍用 LONG 区分短按窗口;音量键已取消长按连调故不再使用 REPEAT 间隔宏。
|
||||
#define C1_KEY_SHORT_TICKS 1
|
||||
#define C1_KEY_LONG_TICKS 50
|
||||
// 改动原因:规格要求 mic 键长按 1.5s 触发 AI 通话降噪开关;20ms*75=1.5s,与 mode 键的 C1_KEY_LONG_TICKS(1s) 解耦,避免误触。
|
||||
#define C1_KEY_MIC_AI_NR_TICKS 75
|
||||
// 改动原因:规格要求 mic 键长按 1.5s 切换 g_dnr_enable(AI 通话降噪/DNR);20ms*75=1.5s,与 mode 键 LONG 解耦,避免误触。
|
||||
#define C1_KEY_MIC_DNR_LONG_TICKS 75
|
||||
// 改动原因:双击第二下需在首击释放后约 500ms 内按下,否则判为单击静音;20ms*25=500ms。
|
||||
#define C1_MIC_DOUBLE_DEFER_TICKS 25
|
||||
// 改动原因:新增C1模式持久化文件路径,使用LittleFS保存mode按键状态,保证断电重启后可恢复。
|
||||
@@ -514,13 +514,12 @@ void AudioHwRemote2(streaming chanend c, client interface i2c_master_if i2c, cli
|
||||
unsigned vol_down_press_ticks = 0;
|
||||
unsigned mic_mute_press_ticks = 0;
|
||||
unsigned vol_up_press_ticks = 0;
|
||||
// 改动原因:mic 键双击需延迟首轮短按的静音动作,用 stage1=等超时单击 / stage2=已收到第二下按下等释放;与长按 AI 互斥靠 mic_ai_long_fired。
|
||||
// 改动原因:mic 键双击需延迟首轮短按的静音动作,用 stage1=等超时单击 / stage2=已收到第二下按下等释放;与长按 DNR 互斥靠 mic_dnr_long_fired。
|
||||
unsigned mic_dbl_stage = 0;
|
||||
unsigned mic_defer_left = 0;
|
||||
unsigned mic_ai_long_fired = 0;
|
||||
// 改动原因:变声/美声仅按键+灯,tile0 保存状态供下发橙色 mode 区;AI 降噪无灯仅本地翻转供后续扩展。
|
||||
unsigned mic_dnr_long_fired = 0;
|
||||
// 改动原因:变声/美声仅按键+灯,tile0 保存状态供 set_mic_voice_fx 下发 mic 橙灯。
|
||||
unsigned c1_mic_voice_fx = 0;
|
||||
unsigned c1_mic_ai_nr = 0;
|
||||
// 改动原因:mic mute红灯通过interface下发到tile1,仅在状态变化时发送,减少无意义跨tile调用。
|
||||
unsigned last_mute_switch_for_led = 0xFFFFFFFF;
|
||||
unsigned host_os = 0;
|
||||
@@ -894,6 +893,16 @@ void AudioHwRemote2(streaming chanend c, client interface i2c_master_if i2c, cli
|
||||
mic_dbl_stage = 2;
|
||||
}
|
||||
mic_mute_press_ticks++;
|
||||
// 改动原因:按住满 1.5s 翻转 g_dnr_enable,extra_i2s 中 GET_SHARED_GLOBAL 决定是否走 DNR;松手时靠 mic_dnr_long_fired 屏蔽短按/双击。
|
||||
if (mic_mute_press_ticks == C1_KEY_MIC_DNR_LONG_TICKS)
|
||||
{
|
||||
unsigned dnr_enable;
|
||||
GET_SHARED_GLOBAL(dnr_enable, g_dnr_enable);
|
||||
dnr_enable = (dnr_enable != 0) ? 0 : 1;
|
||||
SET_SHARED_GLOBAL(g_dnr_enable, dnr_enable);
|
||||
mic_dnr_long_fired = 1;
|
||||
debug_printf("C1 mic DNR toggle (hold 1.5s): %d\n", dnr_enable);
|
||||
}
|
||||
// 改动原因:同一时刻只允许mic mute键生效,清除其它键状态,避免释放时误执行音量或mode短按。
|
||||
mode_press_ticks = 0;
|
||||
vol_down_press_ticks = 0;
|
||||
@@ -950,17 +959,17 @@ void AudioHwRemote2(streaming chanend c, client interface i2c_master_if i2c, cli
|
||||
}
|
||||
}
|
||||
|
||||
// 改动原因:mic:短按静音改为延迟单击(防双击);双击短按切变声灯(橙R+G);按住满1.5s仅切 AI 状态变量无灯;长按与短/双互斥。
|
||||
// 改动原因:mic:短按静音延迟单击(防双击);双击变声 mic 橙灯;长按1.5s 切 g_dnr_enable 无灯;长按与短/双互斥。
|
||||
{
|
||||
unsigned mic_snap = mic_mute_press_ticks;
|
||||
if (mic_snap > 0)
|
||||
{
|
||||
if ((mic_snap >= C1_KEY_MIC_AI_NR_TICKS) || mic_ai_long_fired)
|
||||
if ((mic_snap >= C1_KEY_MIC_DNR_LONG_TICKS) || mic_dnr_long_fired)
|
||||
{
|
||||
if (mic_dbl_stage == 2)
|
||||
mic_dbl_stage = 0;
|
||||
}
|
||||
else if ((mic_snap >= C1_KEY_SHORT_TICKS) && (mic_snap < C1_KEY_MIC_AI_NR_TICKS))
|
||||
else if ((mic_snap >= C1_KEY_SHORT_TICKS) && (mic_snap < C1_KEY_MIC_DNR_LONG_TICKS))
|
||||
{
|
||||
if (mic_dbl_stage == 2)
|
||||
{
|
||||
@@ -976,7 +985,7 @@ void AudioHwRemote2(streaming chanend c, client interface i2c_master_if i2c, cli
|
||||
mic_defer_left = C1_MIC_DOUBLE_DEFER_TICKS;
|
||||
}
|
||||
}
|
||||
mic_ai_long_fired = 0;
|
||||
mic_dnr_long_fired = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -128,8 +128,8 @@ timer tm;
|
||||
// 改动原因:C1的TIMER_PERIOD为20ms,按DS1同类短按/长按模型换算阈值;mode/mic 仍用 LONG 区分短按窗口;音量键已取消长按连调故不再使用 REPEAT 间隔宏。
|
||||
#define C1_KEY_SHORT_TICKS 1
|
||||
#define C1_KEY_LONG_TICKS 50
|
||||
// 改动原因:规格要求 mic 键长按 1.5s 触发 AI 通话降噪开关;20ms*75=1.5s,与 mode 键的 C1_KEY_LONG_TICKS(1s) 解耦,避免误触。
|
||||
#define C1_KEY_MIC_AI_NR_TICKS 75
|
||||
// 改动原因:规格要求 mic 键长按 1.5s 切换 g_dnr_enable(AI 通话降噪/DNR);20ms*75=1.5s,与 mode 键 LONG 解耦,避免误触。
|
||||
#define C1_KEY_MIC_DNR_LONG_TICKS 75
|
||||
// 改动原因:双击第二下需在首击释放后约 500ms 内按下,否则判为单击静音;20ms*25=500ms。
|
||||
#define C1_MIC_DOUBLE_DEFER_TICKS 25
|
||||
// 改动原因:新增C1模式持久化文件路径,使用LittleFS保存mode按键状态,保证断电重启后可恢复。
|
||||
@@ -533,13 +533,12 @@ void AudioHwRemote2(streaming chanend c, client interface i2c_master_if i2c, cli
|
||||
unsigned vol_down_press_ticks = 0;
|
||||
unsigned mic_mute_press_ticks = 0;
|
||||
unsigned vol_up_press_ticks = 0;
|
||||
// 改动原因:mic 键双击需延迟首轮短按的静音动作,用 stage1=等超时单击 / stage2=已收到第二下按下等释放;与长按 AI 互斥靠 mic_ai_long_fired。
|
||||
// 改动原因:mic 键双击需延迟首轮短按的静音动作,用 stage1=等超时单击 / stage2=已收到第二下按下等释放;与长按 DNR 互斥靠 mic_dnr_long_fired。
|
||||
unsigned mic_dbl_stage = 0;
|
||||
unsigned mic_defer_left = 0;
|
||||
unsigned mic_ai_long_fired = 0;
|
||||
// 改动原因:变声/美声仅按键+灯,tile0 保存状态供下发橙色 mode 区;AI 降噪无灯仅本地翻转供后续扩展。
|
||||
unsigned mic_dnr_long_fired = 0;
|
||||
// 改动原因:变声/美声仅按键+灯,tile0 保存状态供 set_mic_voice_fx 下发 mic 橙灯。
|
||||
unsigned c1_mic_voice_fx = 0;
|
||||
unsigned c1_mic_ai_nr = 0;
|
||||
// 改动原因:mic mute红灯通过interface下发到tile1,仅在状态变化时发送,减少无意义跨tile调用。
|
||||
unsigned last_mute_switch_for_led = 0xFFFFFFFF;
|
||||
unsigned host_os = 0;
|
||||
@@ -913,6 +912,16 @@ void AudioHwRemote2(streaming chanend c, client interface i2c_master_if i2c, cli
|
||||
mic_dbl_stage = 2;
|
||||
}
|
||||
mic_mute_press_ticks++;
|
||||
// 改动原因:按住满 1.5s 翻转 g_dnr_enable,extra_i2s 中 GET_SHARED_GLOBAL 决定是否走 DNR;松手时靠 mic_dnr_long_fired 屏蔽短按/双击。
|
||||
if (mic_mute_press_ticks == C1_KEY_MIC_DNR_LONG_TICKS)
|
||||
{
|
||||
unsigned dnr_enable;
|
||||
GET_SHARED_GLOBAL(dnr_enable, g_dnr_enable);
|
||||
dnr_enable = (dnr_enable != 0) ? 0 : 1;
|
||||
SET_SHARED_GLOBAL(g_dnr_enable, dnr_enable);
|
||||
mic_dnr_long_fired = 1;
|
||||
debug_printf("C1 mic DNR toggle (hold 1.5s): %d\n", dnr_enable);
|
||||
}
|
||||
// 改动原因:同一时刻只允许mic mute键生效,清除其它键状态,避免释放时误执行音量或mode短按。
|
||||
mode_press_ticks = 0;
|
||||
vol_down_press_ticks = 0;
|
||||
@@ -969,17 +978,17 @@ void AudioHwRemote2(streaming chanend c, client interface i2c_master_if i2c, cli
|
||||
}
|
||||
}
|
||||
|
||||
// 改动原因:mic:短按静音改为延迟单击(防双击);双击短按切变声灯(橙R+G);按住满1.5s仅切 AI 状态变量无灯;长按与短/双互斥。
|
||||
// 改动原因:mic:短按静音延迟单击(防双击);双击变声 mic 橙灯;长按1.5s 切 g_dnr_enable 无灯;长按与短/双互斥。
|
||||
{
|
||||
unsigned mic_snap = mic_mute_press_ticks;
|
||||
if (mic_snap > 0)
|
||||
{
|
||||
if ((mic_snap >= C1_KEY_MIC_AI_NR_TICKS) || mic_ai_long_fired)
|
||||
if ((mic_snap >= C1_KEY_MIC_DNR_LONG_TICKS) || mic_dnr_long_fired)
|
||||
{
|
||||
if (mic_dbl_stage == 2)
|
||||
mic_dbl_stage = 0;
|
||||
}
|
||||
else if ((mic_snap >= C1_KEY_SHORT_TICKS) && (mic_snap < C1_KEY_MIC_AI_NR_TICKS))
|
||||
else if ((mic_snap >= C1_KEY_SHORT_TICKS) && (mic_snap < C1_KEY_MIC_DNR_LONG_TICKS))
|
||||
{
|
||||
if (mic_dbl_stage == 2)
|
||||
{
|
||||
@@ -995,7 +1004,7 @@ void AudioHwRemote2(streaming chanend c, client interface i2c_master_if i2c, cli
|
||||
mic_defer_left = C1_MIC_DOUBLE_DEFER_TICKS;
|
||||
}
|
||||
}
|
||||
mic_ai_long_fired = 0;
|
||||
mic_dnr_long_fired = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user