From 419a5c6ce315f9a86c9d9663a6778fc67958ba21 Mon Sep 17 00:00:00 2001 From: "jacob.eva" Date: Wed, 4 Sep 2024 21:56:47 +0100 Subject: [PATCH] Finish off edge cases of race condition --- RNode_Firmware_CE.ino | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/RNode_Firmware_CE.ino b/RNode_Firmware_CE.ino index c307f28..547e505 100644 --- a/RNode_Firmware_CE.ino +++ b/RNode_Firmware_CE.ino @@ -1323,8 +1323,18 @@ void poll_buffers() { void packet_poll() { // If we have received a packet on an interface which needs to be processed while (!fifo_isempty(&packet_rdy_interfaces)) { + #if MCU_VARIANT == MCU_ESP32 + portENTER_CRITICAL(&update_lock); + #elif MCU_VARIANT == MCU_NRF52 + portENTER_CRITICAL(); + #endif uint8_t packet_int = fifo_pop(&packet_rdy_interfaces); selected_radio = interface_obj[packet_int]; + #if MCU_VARIANT == MCU_ESP32 + portEXIT_CRITICAL(&update_lock); + #elif MCU_VARIANT == MCU_NRF52 + portEXIT_CRITICAL(); + #endif selected_radio->clearIRQStatus(); selected_radio->handleDio0Rise(); }