summaryrefslogtreecommitdiff
path: root/src/audio/include
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2023-10-16 13:52:43 +1100
committerjacqueline <me@jacqueline.id.au>2023-10-16 13:52:43 +1100
commit7523772886ca37cf05d0ad5b24f6d520e314242e (patch)
treeab298342307c1023ef4e1a2a004407ca072dfc25 /src/audio/include
parent96ea6cef8881d005cb06be8a9132535a5564d5fd (diff)
downloadtangara-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.hpp8
-rw-r--r--src/audio/include/bt_audio_output.hpp2
-rw-r--r--src/audio/include/i2s_audio_output.hpp3
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_;