diff options
| author | jacqueline <me@jacqueline.id.au> | 2023-09-29 15:17:10 +1000 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2023-09-29 15:17:32 +1000 |
| commit | ba940baa0aff05ad26d265f32f1d185a1f410373 (patch) | |
| tree | aca7e4ef8049039b7eb92160732d711db15873cf /src/drivers/spi.cpp | |
| parent | c53802f308f57f0d829f5a02baf9e9fe8219c301 (diff) | |
| download | tangara-fw-ba940baa0aff05ad26d265f32f1d185a1f410373.tar.gz | |
Add a lock around the SPI bus
This seems to have been the cause of recurring deadlocks that have been
difficult to repo.
Diffstat (limited to 'src/drivers/spi.cpp')
| -rw-r--r-- | src/drivers/spi.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/drivers/spi.cpp b/src/drivers/spi.cpp index 93bf9cde..ba461b67 100644 --- a/src/drivers/spi.cpp +++ b/src/drivers/spi.cpp @@ -20,6 +20,8 @@ static const gpio_num_t kSpiSdoPin = GPIO_NUM_23; static const gpio_num_t kSpiSdiPin = GPIO_NUM_19; static const gpio_num_t kSpiSclkPin = GPIO_NUM_18; +static std::mutex sSpiMutex{}; + esp_err_t init_spi(void) { spi_bus_config_t config = { .mosi_io_num = kSpiSdoPin, @@ -52,4 +54,8 @@ esp_err_t deinit_spi(void) { return spi_bus_free(kSpiHost); } +std::lock_guard<std::mutex> acquire_spi(void) { + return std::lock_guard<std::mutex>{sSpiMutex}; +} + } // namespace drivers |
