From 610991455d335663de1dd6c0c6a3e0247ffd46df Mon Sep 17 00:00:00 2001 From: jacqueline Date: Wed, 7 Jun 2023 09:50:25 +1000 Subject: R4 pre-emptive bringup Includes stripping out the IC-specific I2S stuff, and doing more manual volume control using pots --- src/audio/audio_fsm.cpp | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) (limited to 'src/audio/audio_fsm.cpp') diff --git a/src/audio/audio_fsm.cpp b/src/audio/audio_fsm.cpp index 9c7af6fe..3ab8b6e8 100644 --- a/src/audio/audio_fsm.cpp +++ b/src/audio/audio_fsm.cpp @@ -5,18 +5,20 @@ */ #include "audio_fsm.hpp" +#include #include "audio_decoder.hpp" #include "audio_events.hpp" #include "audio_task.hpp" -#include "dac.hpp" #include "fatfs_audio_input.hpp" #include "i2s_audio_output.hpp" +#include "i2s_dac.hpp" #include "pipeline.hpp" namespace audio { drivers::GpioExpander* AudioState::sGpioExpander; -std::weak_ptr AudioState::sDac; +std::shared_ptr AudioState::sDac; +std::shared_ptr AudioState::sPots; std::weak_ptr AudioState::sDatabase; std::unique_ptr AudioState::sFileSource; @@ -24,14 +26,19 @@ std::unique_ptr AudioState::sI2SOutput; std::vector> AudioState::sPipeline; auto AudioState::Init(drivers::GpioExpander* gpio_expander, - std::weak_ptr dac, - std::weak_ptr database) -> void { + std::weak_ptr database) -> bool { sGpioExpander = gpio_expander; - sDac = dac; + + auto dac = drivers::I2SDac::create(gpio_expander); + if (!dac) { + return false; + } + sDac.reset(dac.value()); + sPots.reset(new drivers::DigitalPot(gpio_expander)); sDatabase = database; sFileSource.reset(new FatfsAudioInput()); - sI2SOutput.reset(new I2SAudioOutput(sGpioExpander, sDac)); + sI2SOutput.reset(new I2SAudioOutput(sGpioExpander, sDac, sPots)); // Perform initial pipeline configuration. // TODO(jacqueline): Factor this out once we have any kind of dynamic @@ -43,6 +50,8 @@ auto AudioState::Init(drivers::GpioExpander* gpio_expander, pipeline->AddInput(sFileSource.get()); task::StartPipeline(pipeline, sI2SOutput.get()); + + return true; } namespace states { -- cgit v1.2.3