diff options
| author | jacqueline <me@jacqueline.id.au> | 2023-03-10 11:28:33 +1100 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2023-04-19 10:27:59 +1000 |
| commit | a9531c86a433c8b7ae1f77ff0266c27c39eca7f4 (patch) | |
| tree | 11835552aa2ecb400537781d8eb3851118c47e61 /src/audio/include/audio_task.hpp | |
| parent | 2a46eecdc6334c31cee2b40427d2536b48cbb6be (diff) | |
| download | tangara-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.hpp | 31 |
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 |
