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:
@@ -200,9 +200,10 @@ esp_err_t platform_multimodal_audio_play_downstream_opus(const uint8_t *data, si
|
||||
return multimodal_audio_handle_downstream_opus(data, 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)
|
||||
{
|
||||
return multimodal_audio_begin_downstream_response();
|
||||
return multimodal_audio_begin_downstream_response(out_playback_generation);
|
||||
}
|
||||
|
||||
esp_err_t platform_multimodal_audio_finish_downstream_response(void)
|
||||
@@ -230,22 +231,22 @@ static void platform_multimodal_downstream_playback_bridge(
|
||||
switch (event->type) {
|
||||
case MULTIMODAL_AUDIO_DOWNSTREAM_PLAYBACK_STARTED:
|
||||
if (callbacks.on_started != NULL) {
|
||||
callbacks.on_started(callbacks.user_data);
|
||||
callbacks.on_started(event->playback_generation, callbacks.user_data);
|
||||
}
|
||||
break;
|
||||
case MULTIMODAL_AUDIO_DOWNSTREAM_PLAYBACK_COMPLETED:
|
||||
if (callbacks.on_completed != NULL) {
|
||||
callbacks.on_completed(callbacks.user_data);
|
||||
callbacks.on_completed(event->playback_generation, callbacks.user_data);
|
||||
}
|
||||
break;
|
||||
case MULTIMODAL_AUDIO_DOWNSTREAM_PLAYBACK_STOPPED:
|
||||
if (callbacks.on_stopped != NULL) {
|
||||
callbacks.on_stopped(callbacks.user_data);
|
||||
callbacks.on_stopped(event->playback_generation, callbacks.user_data);
|
||||
}
|
||||
break;
|
||||
case MULTIMODAL_AUDIO_DOWNSTREAM_PLAYBACK_STALLED:
|
||||
if (callbacks.on_stalled != NULL) {
|
||||
callbacks.on_stalled(callbacks.user_data);
|
||||
callbacks.on_stalled(event->playback_generation, callbacks.user_data);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
||||
Reference in New Issue
Block a user