增加了单击启动对话和长按期间对话,默认使用短按启动对话

This commit is contained in:
CSBOOK\44744
2026-07-02 14:02:51 +08:00
parent bc74db61a9
commit 404389f1ea
6 changed files with 104 additions and 77 deletions
@@ -52,6 +52,10 @@
#define CONFIG_TQ_KEY_INPUT_POLL_MS 20
#endif
#if !defined(CONFIG_TQ_PTT_MODE_HOLD_TO_TALK) && !defined(CONFIG_TQ_PTT_MODE_CLICK_TO_TALK)
#define CONFIG_TQ_PTT_MODE_CLICK_TO_TALK 1
#endif
#ifndef CONTROL_PLANE_PTT_INITIAL_INACTIVE_STABLE_MS
#define CONTROL_PLANE_PTT_INITIAL_INACTIVE_STABLE_MS 120
#endif
@@ -123,9 +127,15 @@ static const control_plane_key_config_t s_key_configs[] = {
.long_press_ms = CONFIG_TQ_KEY_LONG_PRESS_MS,
.double_click_ms = CONFIG_TQ_KEY_DOUBLE_CLICK_MS,
.emit_press_release = true,
#if CONFIG_TQ_PTT_MODE_CLICK_TO_TALK
.enable_short_press = true,
.enable_long_press = false,
.enable_double_click = true,
#else
.enable_short_press = false,
.enable_long_press = false,
.enable_double_click = false,
#endif
},
{
.key_id = CONTROL_PLANE_KEY_ID_SW2,
@@ -80,6 +80,14 @@
#define CONFIG_TQ_TASK_MONITOR_MAX_TASKS 64
#endif
#if !defined(CONFIG_TQ_PTT_MODE_HOLD_TO_TALK) && !defined(CONFIG_TQ_PTT_MODE_CLICK_TO_TALK)
#define CONFIG_TQ_PTT_MODE_CLICK_TO_TALK 1
#endif
#ifndef CONFIG_TQ_PTT_CLICK_CAPTURE_TIMEOUT_MS
#define CONFIG_TQ_PTT_CLICK_CAPTURE_TIMEOUT_MS 8000
#endif
#ifndef CONFIG_TQ_NETWORK_TASK_CORE
#define CONFIG_TQ_NETWORK_TASK_CORE 0
#endif
@@ -1189,6 +1197,18 @@ static void control_plane_drive_ptt_state_machine(TickType_t *last_ws_start_atte
}
TickType_t now = xTaskGetTickCount();
#if CONFIG_TQ_PTT_MODE_CLICK_TO_TALK
TickType_t capture_timeout_ticks = pdMS_TO_TICKS(CONFIG_TQ_PTT_CLICK_CAPTURE_TIMEOUT_MS);
if (capture_timeout_ticks == 0) {
capture_timeout_ticks = 1;
}
if (ptt.press_tick != 0 &&
(now - ptt.press_tick) >= capture_timeout_ticks) {
control_plane_set_ptt_active(false);
return;
}
#endif
TickType_t denied_ticks = pdMS_TO_TICKS(CONTROL_PLANE_PTT_DENIED_TIMEOUT_MS);
if (denied_ticks == 0) {
denied_ticks = 1;
@@ -30,6 +30,10 @@
#define CONFIG_TQ_SYSTEM_EVENT_TASK_STACK 4096
#endif
#if !defined(CONFIG_TQ_PTT_MODE_HOLD_TO_TALK) && !defined(CONFIG_TQ_PTT_MODE_CLICK_TO_TALK)
#define CONFIG_TQ_PTT_MODE_CLICK_TO_TALK 1
#endif
#define CONTROL_PLANE_PTT_HOLD_STEP_MS 80
#ifndef CONFIG_TQ_LOCAL_TASK_CORE
@@ -153,12 +157,32 @@ static void control_plane_dispatch_key_event(const control_plane_key_event_t *ev
switch (event->type) {
case CONTROL_PLANE_KEY_EVENT_PRESSED: {
#if CONFIG_TQ_PTT_MODE_CLICK_TO_TALK
control_plane_multimodal_runtime_state_t state = {0};
if (control_plane_multimodal_get_runtime_state(&state) == ESP_OK &&
state.remote_responding) {
esp_err_t err = control_plane_multimodal_send_request_to_speak();
if (err != ESP_OK && err != ESP_ERR_INVALID_STATE) {
ESP_LOGW(TAG, "PTT barge-in request failed: %s", esp_err_to_name(err));
}
}
#else
control_plane_set_ptt_active(true);
#endif
break;
}
case CONTROL_PLANE_KEY_EVENT_RELEASED: {
#if !CONFIG_TQ_PTT_MODE_CLICK_TO_TALK
control_plane_set_ptt_active(false);
#endif
break;
}
case CONTROL_PLANE_KEY_EVENT_SHORT_PRESS: {
#if CONFIG_TQ_PTT_MODE_CLICK_TO_TALK
control_plane_set_ptt_active(true);
#endif
break;
}