summaryrefslogtreecommitdiff
path: root/src/audio/include
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2022-11-21 08:00:52 +1100
committerjacqueline <me@jacqueline.id.au>2022-11-21 08:00:52 +1100
commit5f7444d7956a6cc517ada1b8b96c4f9cdd408fd5 (patch)
tree3dbdcf42899c7e0689d83d0d340f89c4aa2bab6e /src/audio/include
parent52e03182926d04fc458df745b46153a02800edac (diff)
downloadtangara-fw-5f7444d7956a6cc517ada1b8b96c4f9cdd408fd5.tar.gz
WIP
Diffstat (limited to 'src/audio/include')
-rw-r--r--src/audio/include/i2s_audio_output.hpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/audio/include/i2s_audio_output.hpp b/src/audio/include/i2s_audio_output.hpp
new file mode 100644
index 00000000..cd542f71
--- /dev/null
+++ b/src/audio/include/i2s_audio_output.hpp
@@ -0,0 +1,32 @@
+#pragma once
+
+#include <cstdint>
+#include <memory>
+
+#include "result.hpp"
+
+#include "dac.hpp"
+#include "gpio_expander.hpp"
+
+namespace drivers {
+
+class I2SAudioOutput : public IAudioOutput {
+ public:
+ enum Error { DAC_CONFIG, I2S_CONFIG, STREAM_INIT };
+ static auto create(GpioExpander* expander)
+ -> cpp::result<std::unique_ptr<I2SAudioOutput>, Error>;
+
+ I2SAudioOutput(std::unique_ptr<AudioDac>& dac,
+ audio_element_handle_t element);
+ ~I2SAudioOutput();
+
+ virtual auto SetVolume(uint8_t volume) -> void;
+ virtual auto Configure(audio_element_info_t& info) -> void;
+ virtual auto SetSoftMute(bool enabled) -> void;
+
+ private:
+ std::unique_ptr<AudioDac> dac_;
+ bool is_soft_muted_ = false;
+};
+
+} // namespace drivers