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/display.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'src/drivers/display.cpp') diff --git a/src/drivers/display.cpp b/src/drivers/display.cpp index 48310074..a06320f4 100644 --- a/src/drivers/display.cpp +++ b/src/drivers/display.cpp @@ -34,6 +34,7 @@ #include "gpios.hpp" #include "misc/lv_color.h" #include "soc/soc.h" +#include "spi.hpp" #include "tasks.hpp" static const char* kTag = "DISPLAY"; @@ -267,8 +268,12 @@ void Display::SendTransaction(TransactionType type, gpio_set_level(kDisplayDr, type); - // TODO(jacqueline): Handle these errors. - esp_err_t ret = spi_device_transmit(handle_, &sTransaction); + esp_err_t ret; + { + auto lock = drivers::acquire_spi(); + // TODO(jacqueline): Handle these errors. + ret = spi_device_transmit(handle_, &sTransaction); + } ESP_ERROR_CHECK(ret); } -- cgit v1.2.3