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
+5 -5
View File
@@ -43,10 +43,10 @@ typedef struct {
} platform_multimodal_transport_callbacks_t;
typedef struct {
void (*on_started)(void *user_data);
void (*on_completed)(void *user_data);
void (*on_stopped)(void *user_data);
void (*on_stalled)(void *user_data);
void (*on_started)(uint32_t playback_generation, void *user_data);
void (*on_completed)(uint32_t playback_generation, void *user_data);
void (*on_stopped)(uint32_t playback_generation, void *user_data);
void (*on_stalled)(uint32_t playback_generation, void *user_data);
void *user_data;
} platform_multimodal_downstream_playback_callbacks_t;
@@ -399,7 +399,7 @@ esp_err_t platform_multimodal_audio_unregister_pcm_observer(
void *user_data,
int timeout_ms);
esp_err_t platform_multimodal_audio_play_downstream_opus(const uint8_t *data, size_t len);
esp_err_t platform_multimodal_audio_begin_downstream_response(void);
esp_err_t platform_multimodal_audio_begin_downstream_response(uint32_t *out_playback_generation);
esp_err_t platform_multimodal_audio_finish_downstream_response(void);
esp_err_t platform_multimodal_audio_stop_downstream_playback(void);
esp_err_t platform_multimodal_audio_register_downstream_playback_callbacks(