fix(multimodal): harden playback and client lifecycle handling

- retry the server connection prompt after transient playback failures
- serialize multimodal client and session start-stop operations
- tag downstream responses to ignore stale packets and playback events
- complete bounded teardown and clean callbacks after partial startup
This commit is contained in:
chenjintao
2026-08-14 15:24:29 +08:00
parent c56c65462e
commit 0cfb10252c
12 changed files with 436 additions and 188 deletions
@@ -25,6 +25,7 @@ typedef enum {
typedef struct {
multimodal_audio_downstream_playback_event_type_t type;
uint32_t playback_generation;
} multimodal_audio_downstream_playback_event_t;
typedef void (*multimodal_audio_downstream_playback_callback_t)(
@@ -47,7 +48,7 @@ esp_err_t multimodal_audio_unregister_pcm_observer(
int timeout_ms);
esp_err_t multimodal_audio_handle_downstream_opus(const uint8_t *data, size_t len);
esp_err_t multimodal_audio_begin_downstream_response(void);
esp_err_t multimodal_audio_begin_downstream_response(uint32_t *out_playback_generation);
esp_err_t multimodal_audio_finish_downstream_response(void);
esp_err_t multimodal_audio_stop_downstream_playback(void);
esp_err_t multimodal_audio_register_downstream_playback_callback(