summaryrefslogtreecommitdiff
path: root/src/drivers/i2s_audio_output.cpp
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2022-11-16 11:13:21 +1100
committerjacqueline <me@jacqueline.id.au>2022-11-16 11:13:21 +1100
commit8c51280bc68e51b76243e83b84762e33c52510ca (patch)
tree7871ce5bca24c9b9f42a437763d7f1411ddbcd94 /src/drivers/i2s_audio_output.cpp
parente802b8583f58a2be366f24b72afeb050550dbc7e (diff)
downloadtangara-fw-8c51280bc68e51b76243e83b84762e33c52510ca.tar.gz
Fix playback and console issues
Diffstat (limited to 'src/drivers/i2s_audio_output.cpp')
-rw-r--r--src/drivers/i2s_audio_output.cpp19
1 files changed, 17 insertions, 2 deletions
diff --git a/src/drivers/i2s_audio_output.cpp b/src/drivers/i2s_audio_output.cpp
index 8505895b..77d01b6a 100644
--- a/src/drivers/i2s_audio_output.cpp
+++ b/src/drivers/i2s_audio_output.cpp
@@ -82,13 +82,28 @@ auto I2SAudioOutput::create(GpioExpander* expander)
I2SAudioOutput::I2SAudioOutput(std::unique_ptr<AudioDac>& dac,
audio_element_handle_t element)
- : IAudioOutput(element), dac_(std::move(dac)) {}
+ : IAudioOutput(element), dac_(std::move(dac)) {
+ volume_ = 255;
+}
I2SAudioOutput::~I2SAudioOutput() {
// TODO: power down the DAC.
}
auto I2SAudioOutput::SetVolume(uint8_t volume) -> void {
- dac_->WriteVolume(255);
+ volume_ = volume;
+ if (!is_soft_muted_) {
+ dac_->WriteVolume(volume);
+ }
+}
+
+auto I2SAudioOutput::SetSoftMute(bool enabled) -> void {
+ if (enabled) {
+ is_soft_muted_ = true;
+ dac_->WriteVolume(255);
+ } else {
+ is_soft_muted_ = false;
+ dac_->WriteVolume(volume_);
+ }
}
auto I2SAudioOutput::Configure(audio_element_info_t& info) -> void {