]> git.tnoah.ca Git - lora-radio.git/commitdiff
Finish off edge cases of race condition
authorjacob.eva <x00010@disroot.org>
Wed, 4 Sep 2024 20:56:47 +0000 (21:56 +0100)
committerjacob.eva <x00010@disroot.org>
Wed, 4 Sep 2024 20:56:47 +0000 (21:56 +0100)
RNode_Firmware_CE.ino

index c307f2870ca19225da442ff080df0eb500fccc8d..547e505fce1968ee7d838c5c12e87f1c2526dbd9 100644 (file)
@@ -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();
     }