summaryrefslogtreecommitdiff
path: root/src/audio/audio_playback.cpp
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2023-04-21 15:27:57 +1000
committerjacqueline <me@jacqueline.id.au>2023-04-21 15:27:57 +1000
commit7083459cf3c62c32d0c039a4665e702d70a27bba (patch)
tree815757d591d8600469104398e95e80824bd94871 /src/audio/audio_playback.cpp
parent130009eb142a5ce8bb6cf9cbb59d69a4d96ed5f9 (diff)
downloadtangara-fw-7083459cf3c62c32d0c039a4665e702d70a27bba.tar.gz
wrap driver instance ownership + di in a class
Diffstat (limited to 'src/audio/audio_playback.cpp')
-rw-r--r--src/audio/audio_playback.cpp16
1 files changed, 4 insertions, 12 deletions
diff --git a/src/audio/audio_playback.cpp b/src/audio/audio_playback.cpp
index fac4bfab..c51e41fb 100644
--- a/src/audio/audio_playback.cpp
+++ b/src/audio/audio_playback.cpp
@@ -5,6 +5,7 @@
#include <memory>
#include <string_view>
+#include "driver_cache.hpp"
#include "freertos/portmacro.h"
#include "audio_decoder.hpp"
@@ -21,19 +22,10 @@
#include "stream_message.hpp"
namespace audio {
-
-auto AudioPlayback::create(drivers::GpioExpander* expander)
- -> cpp::result<std::unique_ptr<AudioPlayback>, Error> {
- auto sink_res = I2SAudioOutput::create(expander);
- if (sink_res.has_error()) {
- return cpp::fail(ERR_INIT_ELEMENT);
- }
- return std::make_unique<AudioPlayback>(std::move(sink_res.value()));
-}
-
-AudioPlayback::AudioPlayback(std::unique_ptr<I2SAudioOutput> output)
+AudioPlayback::AudioPlayback(drivers::DriverCache* drivers)
: file_source_(std::make_unique<FatfsAudioInput>()),
- i2s_output_(std::move(output)) {
+ i2s_output_(std::make_unique<I2SAudioOutput>(drivers->AcquireGpios(),
+ drivers->AcquireDac())) {
AudioDecoder* codec = new AudioDecoder();
elements_.emplace_back(codec);