summaryrefslogtreecommitdiff
path: root/src/audio/include/fatfs_audio_input.hpp
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2022-11-17 13:30:16 +1100
committerjacqueline <me@jacqueline.id.au>2022-11-17 13:30:16 +1100
commit60169cdd91c46fb9c5cd22c2864e47b8e2dc413e (patch)
treefd8d11915c9bcbc9b89cad27921de5f7fada0d78 /src/audio/include/fatfs_audio_input.hpp
parent1d340db87193ca589c3bd5df241ae0ed51a3100d (diff)
downloadtangara-fw-60169cdd91c46fb9c5cd22c2864e47b8e2dc413e.tar.gz
WIP on our own pipeline
Diffstat (limited to 'src/audio/include/fatfs_audio_input.hpp')
-rw-r--r--src/audio/include/fatfs_audio_input.hpp49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/audio/include/fatfs_audio_input.hpp b/src/audio/include/fatfs_audio_input.hpp
new file mode 100644
index 00000000..ed4da55e
--- /dev/null
+++ b/src/audio/include/fatfs_audio_input.hpp
@@ -0,0 +1,49 @@
+#pragma once
+
+#include <cstdint>
+#include <memory>
+
+#include "freertos/FreeRTOS.h"
+#include "freertos/queue.h"
+#include "freertos/stream_buffer.h"
+
+#include "audio_element.hpp"
+#include "storage.hpp"
+
+namespace audio {
+
+class FatfsAudioInput : public IAudioElement {
+ public:
+ struct InputCommand {
+ std::string filename;
+ };
+
+ struct OutputCommand {
+ // TODO: does this actually need any special output?
+ };
+
+ FatfsAudioInput(std::shared_ptr<drivers::SdStorage> storage);
+ ~FatfsAudioInput();
+
+ auto OutputCommandQueue() -> QueueHandle_t;
+ auto OutputBuffer() -> StreamBufferHandle_t;
+
+ private:
+ std::shared_ptr<drivers::SdStorage> storage_;
+
+ uint8_t current_sequence = 0;
+
+ uint8_t* input_queue_memory_;
+ StaticQueue_t input_queue_metadata_;
+ QueueHandle_t input_queue_;
+
+ uint8_t* output_queue_memory_;
+ StaticQueue_t output_queue_metadata_;
+ QueueHandle_t output_queue_;
+
+ uint8_t* output_buffer_memory_;
+ StaticStreamBuffer_t output_buffer_metadata_;
+ StreamBufferHandle_t output_buffer_;
+};
+
+} // namespace audio