summaryrefslogtreecommitdiff
path: root/src/audio/fatfs_audio_input.cpp
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/fatfs_audio_input.cpp
parent1d340db87193ca589c3bd5df241ae0ed51a3100d (diff)
downloadtangara-fw-60169cdd91c46fb9c5cd22c2864e47b8e2dc413e.tar.gz
WIP on our own pipeline
Diffstat (limited to 'src/audio/fatfs_audio_input.cpp')
-rw-r--r--src/audio/fatfs_audio_input.cpp79
1 files changed, 79 insertions, 0 deletions
diff --git a/src/audio/fatfs_audio_input.cpp b/src/audio/fatfs_audio_input.cpp
new file mode 100644
index 00000000..1e8c35b8
--- /dev/null
+++ b/src/audio/fatfs_audio_input.cpp
@@ -0,0 +1,79 @@
+#include "fatfs_audio_input.hpp"
+#include <memory>
+
+#include "esp-adf/components/input_key_service/include/input_key_service.h"
+#include "esp_heap_caps.h"
+
+#include "audio_element.hpp"
+
+namespace audio {
+
+static const size_t kQueueItems = 0;
+static constexpr size_t kQueueItemSize = sizeof(IAudioElement::Command);
+static constexpr size_t kQueueSize = kQueueItems * kQueueItemSize;
+
+static const size_t kOutputBufferSize = 1024;
+
+FatfsAudioInput::FatfsAudioInput(std::shared_ptr<drivers::SdStorage> storage)
+ : IAudioElement(), storage_(storage) {
+ input_queue_memory_ = heap_caps_malloc(kQueueSize, MALLOC_CAP_SPIRAM);
+ input_queue_ = xQueueCreateStatic(
+ kQueueItems, kQueueItemSize, input_queue_memory_, &input_queue_metadata_);
+
+ output_queue_memory_ = heap_caps_malloc(kQueueSize, MALLOC_CAP_SPIRAM);
+ output_queue_ =
+ xQueueCreateStatic(kQueueItems, kQueueItemSize, output_queue_memory_,
+ &output_queue_metadata_);
+
+ output_buffer_memory_ =
+ heap_caps_malloc(kOutputBufferSize, MALLOC_CAP_SPIRAM);
+ output_buffer_ =
+ xStreamBufferCreateStatic(kOutputBufferSize - 1, 1, output_buffer_memory_,
+ &output_buffer_metadata_);
+}
+
+FatfsAudioInput::~FatfsAudioInput() {
+ vStreamBufferDelete(output_buffer_);
+ free(output_buffer_memory_);
+ vQueueDelete(output_queue_);
+ free(output_queue_memory_);
+ vQueueDelete(input_queue_);
+ free(input_queue_memory_);
+}
+
+auto FatfsAudioInput::InputCommandQueue() -> QueueHandle_t {
+ return input_queue_;
+}
+
+auto FatfsAudioInput::OutputCommandQueue() -> QueueHandle_t {
+ return output_queue_;
+}
+
+auto FatfsAudioInput::InputBuffer() -> StreamBufferHandle_t {
+ return nullptr;
+}
+
+auto FatfsAudioInput::OutputBuffer() -> StreamBufferHandle_t {
+ return output_buffer_;
+}
+
+auto FatfsAudioInput::ProcessElementCommand(void* command) -> void {
+ InputCommand *real = std::reinterpret_pointer_cast<input_key_service_add_key*>(command);
+
+ // TODO.
+}
+
+auto FatfsAudioInput::SkipElementCommand(void* command) -> void {
+ InputCommand *real = std::reinterpret_pointer_cast<input_key_service_add_key*>(command);
+ delete real;
+}
+
+auto FatfsAudioInput::ProcessData(uint8_t* data, uint16_t length) -> void {
+ // Not implemented.
+}
+
+auto FatfsAudioInput::ProcessIdle() -> void {
+ // TODO.
+}
+
+} // namespace audio