7#include <freertos/event_groups.h>
8#include <freertos/queue.h>
9#include <freertos/FreeRTOS.h>
32#if SOC_I2S_SUPPORTS_DAC
55 size_t play(
const uint8_t *data,
size_t length, TickType_t ticks_to_wait)
override;
93 static bool i2s_overflow_cb(i2s_chan_handle_t handle, i2s_event_data_t *event,
void *user_ctx);
140#if SOC_I2S_SUPPORTS_DAC
BedjetMode mode
BedJet operating mode.
i2s_dac_mode_t internal_dac_mode_
esp_err_t start_i2s_driver_(audio::AudioStreamInfo &audio_stream_info)
Starts the ESP32 I2S driver.
TaskHandle_t speaker_task_handle_
int16_t q15_volume_factor_
float get_setup_priority() const override
void stop_(bool wait_on_empty)
Sends a stop command to the speaker task via event_group_.
bool send_esp_err_to_event_group_(esp_err_t err)
Sets the corresponding ERR_ESP event group bits.
void set_dout_pin(uint8_t pin)
static bool i2s_overflow_cb(i2s_chan_handle_t handle, i2s_event_data_t *event, void *user_ctx)
size_t play(const uint8_t *data, size_t length) override
void set_internal_dac_mode(i2s_dac_mode_t mode)
std::shared_ptr< RingBuffer > audio_ring_buffer_
void set_pause_state(bool pause_state) override
void set_mute_state(bool mute_state) override
Mutes or unmute the speaker.
esp_err_t allocate_buffers_(size_t data_buffer_size, size_t ring_buffer_size)
Allocates the data buffer and ring buffer.
uint32_t accumulated_frames_written_
bool has_buffered_data() const override
void set_i2s_comm_fmt(std::string mode)
size_t play(const uint8_t *data, size_t length, TickType_t ticks_to_wait) override
Plays the provided audio data.
bool get_pause_state() const override
void set_buffer_duration(uint32_t buffer_duration_ms)
optional< uint32_t > timeout_
uint32_t buffer_duration_ms_
std::string i2s_comm_fmt_
i2s_chan_handle_t tx_handle_
void set_volume(float volume) override
Sets the volume of the speaker.
i2s_comm_format_t i2s_comm_fmt_
static void speaker_task(void *params)
Function for the FreeRTOS task handling audio output.
QueueHandle_t i2s_event_queue_
void delete_task_(size_t buffer_size)
Deletes the speaker's task.
void set_timeout(uint32_t ms)
EventGroupHandle_t event_group_
void set_i2s_comm_fmt(i2s_comm_format_t mode)
const float PROCESSOR
For components that use data from sensors like displays.
Providing packet encoding functions for exchanging data with a remote host.