diff options
| author | jacqueline <me@jacqueline.id.au> | 2022-11-21 08:00:52 +1100 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2022-11-21 08:00:52 +1100 |
| commit | 5f7444d7956a6cc517ada1b8b96c4f9cdd408fd5 (patch) | |
| tree | 3dbdcf42899c7e0689d83d0d340f89c4aa2bab6e /src/audio/include | |
| parent | 52e03182926d04fc458df745b46153a02800edac (diff) | |
| download | tangara-fw-5f7444d7956a6cc517ada1b8b96c4f9cdd408fd5.tar.gz | |
WIP
Diffstat (limited to 'src/audio/include')
| -rw-r--r-- | src/audio/include/i2s_audio_output.hpp | 32 |
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 |
