From ba940baa0aff05ad26d265f32f1d185a1f410373 Mon Sep 17 00:00:00 2001 From: jacqueline Date: Fri, 29 Sep 2023 15:17:10 +1000 Subject: Add a lock around the SPI bus This seems to have been the cause of recurring deadlocks that have been difficult to repo. --- src/drivers/spi.cpp | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/drivers/spi.cpp') 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 acquire_spi(void) { + return std::lock_guard{sSpiMutex}; +} + } // namespace drivers -- cgit v1.2.3