summaryrefslogtreecommitdiff
path: root/src/audio/include/audio_task.hpp
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2023-03-10 11:28:33 +1100
committerjacqueline <me@jacqueline.id.au>2023-04-19 10:27:59 +1000
commita9531c86a433c8b7ae1f77ff0266c27c39eca7f4 (patch)
tree11835552aa2ecb400537781d8eb3851118c47e61 /src/audio/include/audio_task.hpp
parent2a46eecdc6334c31cee2b40427d2536b48cbb6be (diff)
downloadtangara-fw-a9531c86a433c8b7ae1f77ff0266c27c39eca7f4.tar.gz
mostly single task pipeline
Diffstat (limited to 'src/audio/include/audio_task.hpp')
-rw-r--r--src/audio/include/audio_task.hpp31
1 files changed, 26 insertions, 5 deletions
diff --git a/src/audio/include/audio_task.hpp b/src/audio/include/audio_task.hpp
index df70ebaa..8db99850 100644
--- a/src/audio/include/audio_task.hpp
+++ b/src/audio/include/audio_task.hpp
@@ -6,17 +6,38 @@
#include "audio_element.hpp"
#include "freertos/portmacro.h"
+#include "pipeline.hpp"
namespace audio {
+namespace task {
struct AudioTaskArgs {
- std::shared_ptr<IAudioElement>& element;
+ Pipeline* pipeline;
+ QueueHandle_t input;
};
-auto StartAudioTask(const std::string& name,
- std::optional<BaseType_t> core_id,
- std::shared_ptr<IAudioElement> element) -> void;
+extern "C" void AudioTaskMain(void* args);
-void AudioTaskMain(void* args);
+enum Command { PLAY, PAUSE, QUIT };
+
+class Handle {
+ public:
+ explicit Handle(QueueHandle_t input);
+ ~Handle();
+
+ auto SetStreamInfo() -> void;
+ auto Play() -> void;
+ auto Pause() -> void;
+ auto Quit() -> void;
+
+ auto OutputBuffer() -> StreamBufferHandle_t;
+
+ private:
+ QueueHandle_t input;
+};
+
+auto Start(Pipeline* pipeline) -> Handle*;
+
+} // namespace task
} // namespace audio