summaryrefslogtreecommitdiff
path: root/src/audio/include/audio_sink.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/audio/include/audio_sink.hpp')
-rw-r--r--src/audio/include/audio_sink.hpp18
1 files changed, 15 insertions, 3 deletions
diff --git a/src/audio/include/audio_sink.hpp b/src/audio/include/audio_sink.hpp
index 116410f6..f31d0d75 100644
--- a/src/audio/include/audio_sink.hpp
+++ b/src/audio/include/audio_sink.hpp
@@ -11,7 +11,6 @@
#include "esp_heap_caps.h"
#include "freertos/FreeRTOS.h"
-#include "idf_additions.h"
namespace audio {
@@ -27,7 +26,8 @@ class IAudioOutput {
StreamBufferHandle_t stream_;
public:
- IAudioOutput(StreamBufferHandle_t stream) : stream_(stream) {}
+ IAudioOutput(StreamBufferHandle_t stream)
+ : stream_(stream), mode_(Modes::kOff) {}
virtual ~IAudioOutput() {}
@@ -41,7 +41,14 @@ class IAudioOutput {
* 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 SetMode(Modes) -> void = 0;
+ auto mode(Modes m) -> void {
+ if (mode_ == m) {
+ return;
+ }
+ changeMode(m);
+ mode_ = m;
+ }
+ auto mode() -> Modes { return mode_; }
virtual auto SetVolumeImbalance(int_fast8_t balance) -> void = 0;
@@ -70,6 +77,11 @@ class IAudioOutput {
virtual auto Configure(const Format& format) -> void = 0;
auto stream() -> StreamBufferHandle_t { return stream_; }
+
+ protected:
+ Modes mode_;
+
+ virtual auto changeMode(Modes new_mode) -> void = 0;
};
} // namespace audio