From 7523772886ca37cf05d0ad5b24f6d520e314242e Mon Sep 17 00:00:00 2001 From: jacqueline Date: Mon, 16 Oct 2023 13:52:43 +1100 Subject: Decouple play/pause from output on/off I think this was the cause of toggling play/pause making audio go away. Or at least I can't repro that bug anymore, anyway. --- src/audio/include/audio_sink.hpp | 8 +++++++- src/audio/include/bt_audio_output.hpp | 2 +- src/audio/include/i2s_audio_output.hpp | 3 ++- 3 files changed, 10 insertions(+), 3 deletions(-) (limited to 'src/audio/include') diff --git a/src/audio/include/audio_sink.hpp b/src/audio/include/audio_sink.hpp index 6a7f95bf..c37e51fb 100644 --- a/src/audio/include/audio_sink.hpp +++ b/src/audio/include/audio_sink.hpp @@ -31,11 +31,17 @@ class IAudioOutput { virtual ~IAudioOutput() {} + enum class Modes { + kOff, + kOnPaused, + kOnPlaying, + }; + /* * Indicates whether this output is currently being sent samples. If this is * false, the output should place itself into a low power state. */ - virtual auto SetInUse(bool) -> void = 0; + virtual auto SetMode(Modes) -> void = 0; virtual auto SetVolumeImbalance(int_fast8_t balance) -> void = 0; virtual auto SetVolume(uint_fast8_t percent) -> void = 0; diff --git a/src/audio/include/bt_audio_output.hpp b/src/audio/include/bt_audio_output.hpp index d3d2bc19..6e5d0720 100644 --- a/src/audio/include/bt_audio_output.hpp +++ b/src/audio/include/bt_audio_output.hpp @@ -24,7 +24,7 @@ class BluetoothAudioOutput : public IAudioOutput { BluetoothAudioOutput(StreamBufferHandle_t, drivers::Bluetooth& bt); ~BluetoothAudioOutput(); - auto SetInUse(bool) -> void override; + auto SetMode(Modes) -> void override; auto SetVolumeImbalance(int_fast8_t balance) -> void override; auto SetVolume(uint_fast8_t percent) -> void override; diff --git a/src/audio/include/i2s_audio_output.hpp b/src/audio/include/i2s_audio_output.hpp index 004cb8f8..0f51a11c 100644 --- a/src/audio/include/i2s_audio_output.hpp +++ b/src/audio/include/i2s_audio_output.hpp @@ -25,7 +25,7 @@ class I2SAudioOutput : public IAudioOutput { std::unique_ptr dac); ~I2SAudioOutput(); - auto SetInUse(bool) -> void override; + auto SetMode(Modes) -> void override; auto SetMaxVolume(uint16_t) -> void; auto SetVolumeDb(uint16_t) -> void; @@ -46,6 +46,7 @@ class I2SAudioOutput : public IAudioOutput { drivers::IGpios& expander_; std::unique_ptr dac_; + Modes current_mode_; std::optional current_config_; int_fast8_t left_difference_; uint16_t current_volume_; -- cgit v1.2.3