#pragma once #include #include #include #include "esp_err.h" #ifdef __cplusplus extern "C" { #endif typedef esp_err_t (*multimodal_audio_uplink_cb_t)(const uint8_t *data, size_t len, void *ctx); typedef enum { MULTIMODAL_AUDIO_DOWNSTREAM_PLAYBACK_STARTED = 0, MULTIMODAL_AUDIO_DOWNSTREAM_PLAYBACK_COMPLETED, MULTIMODAL_AUDIO_DOWNSTREAM_PLAYBACK_STOPPED, } multimodal_audio_downstream_playback_event_type_t; typedef struct { multimodal_audio_downstream_playback_event_type_t type; } multimodal_audio_downstream_playback_event_t; typedef void (*multimodal_audio_downstream_playback_callback_t)( const multimodal_audio_downstream_playback_event_t *event, void *ctx); esp_err_t multimodal_audio_init(void); void multimodal_audio_deinit(void); esp_err_t multimodal_audio_start_uplink(multimodal_audio_uplink_cb_t cb, void *cb_ctx); esp_err_t multimodal_audio_stop_uplink(int timeout_ms); bool multimodal_audio_is_uplink_running(void); bool multimodal_audio_is_initialized(void); 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_finish_downstream_response(void); esp_err_t multimodal_audio_stop_downstream_playback(void); esp_err_t multimodal_audio_register_downstream_playback_callback( multimodal_audio_downstream_playback_callback_t cb, void *cb_ctx); #ifdef __cplusplus } #endif