diff options
| author | jacqueline <me@jacqueline.id.au> | 2023-10-16 13:52:43 +1100 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2023-10-16 13:52:43 +1100 |
| commit | 7523772886ca37cf05d0ad5b24f6d520e314242e (patch) | |
| tree | ab298342307c1023ef4e1a2a004407ca072dfc25 /src/audio/include | |
| parent | 96ea6cef8881d005cb06be8a9132535a5564d5fd (diff) | |
| download | tangara-fw-7523772886ca37cf05d0ad5b24f6d520e314242e.tar.gz | |
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.
Diffstat (limited to 'src/audio/include')
| -rw-r--r-- | src/audio/include/audio_sink.hpp | 8 | ||||
| -rw-r--r-- | src/audio/include/bt_audio_output.hpp | 2 | ||||
| -rw-r--r-- | src/audio/include/i2s_audio_output.hpp | 3 |
3 files changed, 10 insertions, 3 deletions
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<drivers::I2SDac> 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<drivers::I2SDac> dac_; + Modes current_mode_; std::optional<Format> current_config_; int_fast8_t left_difference_; uint16_t current_volume_; |
