summaryrefslogtreecommitdiff
path: root/src/audio/include
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/include
parent130009eb142a5ce8bb6cf9cbb59d69a4d96ed5f9 (diff)
downloadtangara-fw-7083459cf3c62c32d0c039a4665e702d70a27bba.tar.gz
wrap driver instance ownership + di in a class
Diffstat (limited to 'src/audio/include')
-rw-r--r--src/audio/include/audio_playback.hpp7
-rw-r--r--src/audio/include/i2s_audio_output.hpp8
2 files changed, 4 insertions, 11 deletions
diff --git a/src/audio/include/audio_playback.hpp b/src/audio/include/audio_playback.hpp
index 88dc29aa..cd4be3e7 100644
--- a/src/audio/include/audio_playback.hpp
+++ b/src/audio/include/audio_playback.hpp
@@ -6,6 +6,7 @@
#include <vector>
#include "audio_task.hpp"
+#include "driver_cache.hpp"
#include "esp_err.h"
#include "fatfs_audio_input.hpp"
#include "i2s_audio_output.hpp"
@@ -25,11 +26,7 @@ namespace audio {
*/
class AudioPlayback {
public:
- enum Error { ERR_INIT_ELEMENT, ERR_MEM };
- static auto create(drivers::GpioExpander* expander)
- -> cpp::result<std::unique_ptr<AudioPlayback>, Error>;
-
- explicit AudioPlayback(std::unique_ptr<I2SAudioOutput> output);
+ explicit AudioPlayback(drivers::DriverCache* drivers);
~AudioPlayback();
/*
diff --git a/src/audio/include/i2s_audio_output.hpp b/src/audio/include/i2s_audio_output.hpp
index 31510a91..07430777 100644
--- a/src/audio/include/i2s_audio_output.hpp
+++ b/src/audio/include/i2s_audio_output.hpp
@@ -17,12 +17,8 @@ namespace audio {
class I2SAudioOutput : public IAudioSink {
public:
- enum Error { DAC_CONFIG, I2S_CONFIG, STREAM_INIT };
- static auto create(drivers::GpioExpander* expander)
- -> cpp::result<std::unique_ptr<I2SAudioOutput>, Error>;
-
I2SAudioOutput(drivers::GpioExpander* expander,
- std::unique_ptr<drivers::AudioDac> dac);
+ std::shared_ptr<drivers::AudioDac> dac);
~I2SAudioOutput();
auto Configure(const StreamInfo::Format& format) -> bool override;
@@ -36,7 +32,7 @@ class I2SAudioOutput : public IAudioSink {
auto SetVolume(uint8_t volume) -> void;
drivers::GpioExpander* expander_;
- std::unique_ptr<drivers::AudioDac> dac_;
+ std::shared_ptr<drivers::AudioDac> dac_;
std::optional<StreamInfo::Pcm> current_config_;
};