diff options
| author | jacqueline <me@jacqueline.id.au> | 2023-04-21 15:27:57 +1000 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2023-04-21 15:27:57 +1000 |
| commit | 7083459cf3c62c32d0c039a4665e702d70a27bba (patch) | |
| tree | 815757d591d8600469104398e95e80824bd94871 /src/audio/i2s_audio_output.cpp | |
| parent | 130009eb142a5ce8bb6cf9cbb59d69a4d96ed5f9 (diff) | |
| download | tangara-fw-7083459cf3c62c32d0c039a4665e702d70a27bba.tar.gz | |
wrap driver instance ownership + di in a class
Diffstat (limited to 'src/audio/i2s_audio_output.cpp')
| -rw-r--r-- | src/audio/i2s_audio_output.cpp | 22 |
1 files changed, 3 insertions, 19 deletions
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 <algorithm> #include <cstddef> +#include <memory> #include <variant> #include "esp_err.h" @@ -18,27 +19,10 @@ static const char* kTag = "I2SOUT"; namespace audio { -auto I2SAudioOutput::create(drivers::GpioExpander* expander) - -> cpp::result<std::unique_ptr<I2SAudioOutput>, 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<drivers::AudioDac> 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<I2SAudioOutput>(expander, std::move(dac)); -} - I2SAudioOutput::I2SAudioOutput(drivers::GpioExpander* expander, - std::unique_ptr<drivers::AudioDac> dac) + std::shared_ptr<drivers::AudioDac> dac) : expander_(expander), dac_(std::move(dac)), current_config_() { + dac->WriteVolume(127); // for testing dac_->SetSource(buffer()); } |
