From 7083459cf3c62c32d0c039a4665e702d70a27bba Mon Sep 17 00:00:00 2001 From: jacqueline Date: Fri, 21 Apr 2023 15:27:57 +1000 Subject: wrap driver instance ownership + di in a class --- src/audio/i2s_audio_output.cpp | 22 +++------------------- 1 file changed, 3 insertions(+), 19 deletions(-) (limited to 'src/audio/i2s_audio_output.cpp') diff --git a/src/audio/i2s_audio_output.cpp b/src/audio/i2s_audio_output.cpp index e5c672f9..e69cc5ac 100644 --- a/src/audio/i2s_audio_output.cpp +++ b/src/audio/i2s_audio_output.cpp @@ -2,6 +2,7 @@ #include #include +#include #include #include "esp_err.h" @@ -18,27 +19,10 @@ static const char* kTag = "I2SOUT"; namespace audio { -auto I2SAudioOutput::create(drivers::GpioExpander* expander) - -> cpp::result, Error> { - // First, we need to perform initial configuration of the DAC chip. - auto dac_result = drivers::AudioDac::create(expander); - if (dac_result.has_error()) { - ESP_LOGE(kTag, "failed to init dac: %d", dac_result.error()); - return cpp::fail(DAC_CONFIG); - } - std::unique_ptr dac = std::move(dac_result.value()); - - // Soft mute immediately, in order to minimise any clicks and pops caused by - // the initial output element and pipeline configuration. - // dac->WriteVolume(255); - dac->WriteVolume(127); // for testing - - return std::make_unique(expander, std::move(dac)); -} - I2SAudioOutput::I2SAudioOutput(drivers::GpioExpander* expander, - std::unique_ptr dac) + std::shared_ptr dac) : expander_(expander), dac_(std::move(dac)), current_config_() { + dac->WriteVolume(127); // for testing dac_->SetSource(buffer()); } -- cgit v1.2.3