diff options
| author | jacqueline <me@jacqueline.id.au> | 2023-10-05 14:23:48 +1100 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2023-10-05 14:23:48 +1100 |
| commit | bf1fc5a2a0f408a8d8a54d4329257a10d077c4fb (patch) | |
| tree | 638a50ff5aa05e5d3f01ffba77214fe4fc4b531e /src | |
| parent | ee8e5234562c2b9ee1bb261785135abd4f718f83 (diff) | |
| download | tangara-fw-bf1fc5a2a0f408a8d8a54d4329257a10d077c4fb.tar.gz | |
Guard audio pipeline file accesses
Diffstat (limited to 'src')
| -rw-r--r-- | src/audio/fatfs_audio_input.cpp | 9 | ||||
| -rw-r--r-- | src/audio/fatfs_source.cpp | 4 |
2 files changed, 12 insertions, 1 deletions
diff --git a/src/audio/fatfs_audio_input.cpp b/src/audio/fatfs_audio_input.cpp index 54630a98..3cd75606 100644 --- a/src/audio/fatfs_audio_input.cpp +++ b/src/audio/fatfs_audio_input.cpp @@ -32,6 +32,7 @@ #include "event_queue.hpp" #include "fatfs_source.hpp" #include "future_fetcher.hpp" +#include "spi.hpp" #include "tag_parser.hpp" #include "tasks.hpp" #include "track.hpp" @@ -127,7 +128,13 @@ auto FatfsAudioInput::OpenFile(const std::pmr::string& path) -> bool { } std::unique_ptr<FIL> file = std::make_unique<FIL>(); - FRESULT res = f_open(file.get(), path.c_str(), FA_READ); + FRESULT res; + + { + auto lock = drivers::acquire_spi(); + res = f_open(file.get(), path.c_str(), FA_READ); + } + if (res != FR_OK) { ESP_LOGE(kTag, "failed to open file! res: %i", res); return false; diff --git a/src/audio/fatfs_source.cpp b/src/audio/fatfs_source.cpp index 7fe4adf9..a5d172e7 100644 --- a/src/audio/fatfs_source.cpp +++ b/src/audio/fatfs_source.cpp @@ -15,6 +15,7 @@ #include "audio_source.hpp" #include "codec.hpp" +#include "spi.hpp" #include "types.hpp" namespace audio { @@ -25,10 +26,12 @@ FatfsSource::FatfsSource(codecs::StreamType t, std::unique_ptr<FIL> file) : IStream(t), file_(std::move(file)) {} FatfsSource::~FatfsSource() { + auto lock = drivers::acquire_spi(); f_close(file_.get()); } auto FatfsSource::Read(cpp::span<std::byte> dest) -> ssize_t { + auto lock = drivers::acquire_spi(); if (f_eof(file_.get())) { return 0; } @@ -46,6 +49,7 @@ auto FatfsSource::CanSeek() -> bool { } auto FatfsSource::SeekTo(int64_t destination, SeekFrom from) -> void { + auto lock = drivers::acquire_spi(); switch (from) { case SeekFrom::kStartOfStream: f_lseek(file_.get(), destination); |
