增加了单击启动对话和长按期间对话,默认使用短按启动对话
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user