From 220e4fab27b7f419b3e89e2f2d28ae789aac09d7 Mon Sep 17 00:00:00 2001
From: wangzhibo <wangzhibo@shsening.com>
Date: 星期四, 08 十月 2026 16:29:55 +0800
Subject: [PATCH] 5种场景模式家长端ok

---
 xiaozhi-esp32-2.2.6/main/application.h |   11 +++++++++++
 1 files changed, 11 insertions(+), 0 deletions(-)

diff --git a/xiaozhi-esp32-2.2.6/main/application.h b/xiaozhi-esp32-2.2.6/main/application.h
index 4713b56..a137543 100644
--- a/xiaozhi-esp32-2.2.6/main/application.h
+++ b/xiaozhi-esp32-2.2.6/main/application.h
@@ -106,6 +106,13 @@
     void StopListening();
     void SendListenDetect(const std::string& text, bool open_if_idle = true);
     bool SendListenDetectNow(const std::string& text);
+    void HoldIdleForServerPrompt();
+    void ReleaseHoldIdle();
+    void StartListeningAfterPrompt();
+    void ArmPendingDetectRetry(const std::string& text, int retries);
+    bool IsAudioChannelConnected() const;
+    void AnnounceReturnedToChat();
+    void ReconnectAfterLesson(const std::string& detect);
 
     void Reboot();
     void WakeWordInvoke(const std::string& wake_word);
@@ -127,6 +134,7 @@
     void PlaySound(const std::string_view& sound);
     AudioService& GetAudioService() { return audio_service_; }
     void ApplyMp3CommandOnlyMic();
+    bool IsOnMainLoop() const;
     void ResumeListeningAfterMp3Clip();
     void CloseShadowingListenWindow();
     
@@ -164,6 +172,7 @@
     bool sdcard_mp3_stop_requested_ = false;
     bool opening_audio_channel_ = false;
     bool suppress_wake_until_listen_ = false;
+    bool hold_idle_for_prompt_ = false;
     bool network_error_suppressed_ = false;
     std::string pending_detect_text_;
     int pending_detect_retry_ticks_ = 0;
@@ -176,6 +185,7 @@
     bool tts_stop_pending_ = false;
     bool tts_stop_waiting_ = false;
     bool tts_idle_waiting_ = false;
+    bool tts_session_end_ = false;
     bool tts_speaking_state_ready_ = false;
     uint32_t tts_activity_generation_ = 0;
     int tts_playback_empty_ticks_ = 0;
@@ -187,6 +197,7 @@
     int sleep_inhibit_count_ = 0;
     int clock_ticks_ = 0;
     TaskHandle_t activation_task_handle_ = nullptr;
+    TaskHandle_t main_loop_task_ = nullptr;
 
 
     // Event handlers

--
Gitblit v1.9.1