10#include <freertos/FreeRTOS.h>
20 void setup()
override;
25 size_t play(
const uint8_t *data,
size_t length, TickType_t ticks_to_wait)
override;
27 void start()
override;
53 return this->outputs_[this->active_output_idx_.load(std::memory_order_relaxed)];
77 std::atomic<int8_t> active_output_idx_{0};
virtual void play(const Ts &...x)=0
Fixed-capacity vector - allocates once at runtime, never reallocates This avoids std::vector template...
void set_mute_state(bool mute_state) override
size_t play(const uint8_t *data, size_t length) override
void set_output_count(size_t count)
speaker::Speaker * get_active_output() const
void apply_cached_state_to_active_()
float get_setup_priority() const override
bool get_mute_state() override
bool get_pause_state() const override
void set_pause_state(bool pause_state) override
void dump_config() override
void set_volume(float volume) override
void add_output(speaker::Speaker *spk)
bool has_buffered_data() const override
std::atomic< uint32_t > frames_in_pipeline_
bool switch_to_output(speaker::Speaker *target)
Switch the active output to the given speaker.
float get_volume() override
std::atomic< int8_t > pending_start_prev_idx_
SwitchOutputAction(Router *parent)
TEMPLATABLE_VALUE(speaker::Speaker *, target) void play(const Ts &...x) override
constexpr float DATA
For components that import data from directly connected sensors like DHT.