]> git.tnoah.ca Git - lora-radio.git/commitdiff
RAM attributes for ESP32
authorMark Qvist <mark@unsigned.io>
Fri, 14 Jan 2022 19:56:10 +0000 (20:56 +0100)
committerMark Qvist <mark@unsigned.io>
Fri, 14 Jan 2022 19:56:10 +0000 (20:56 +0100)
LoRa.cpp

index f91272ca859bb0c8a93383652a9599748d27530d..2b16e3a2ea6dfc1894b4df57988adf30344edce7 100644 (file)
--- a/LoRa.cpp
+++ b/LoRa.cpp
@@ -6,6 +6,31 @@
 
 #include "LoRa.h"
 
+#define MCU_1284P 0x91
+#define MCU_2560  0x92
+#define MCU_ESP32 0x81
+#if defined(__AVR_ATmega1284P__)
+  #define PLATFORM PLATFORM_AVR
+  #define MCU_VARIANT MCU_1284P
+#elif defined(__AVR_ATmega2560__)
+  #define PLATFORM PLATFORM_AVR
+  #define MCU_VARIANT MCU_2560
+#elif defined(ESP32)
+  #define PLATFORM PLATFORM_ESP32
+  #define MCU_VARIANT MCU_ESP32
+#endif
+
+#ifndef MCU_VARIANT
+  #error No MCU variant defined, cannot compile
+#endif
+
+#if MCU_VARIANT == MCU_ESP32
+  #include "soc/rtc_wdt.h"
+  #define ISR_VECT IRAM_ATTR
+#else
+  #define ISR_VECT
+#endif
+
 // Registers
 #define REG_FIFO                 0x00
 #define REG_OP_MODE              0x01
@@ -571,7 +596,8 @@ void LoRaClass::implicitHeaderMode()
   writeRegister(REG_MODEM_CONFIG_1, readRegister(REG_MODEM_CONFIG_1) | 0x01);
 }
 
-void LoRaClass::handleDio0Rise()
+
+void ISR_VECT LoRaClass::handleDio0Rise()
 {
   int irqFlags = readRegister(REG_IRQ_FLAGS);
 
@@ -623,7 +649,7 @@ uint8_t LoRaClass::singleTransfer(uint8_t address, uint8_t value)
   return response;
 }
 
-void LoRaClass::onDio0Rise()
+void ISR_VECT LoRaClass::onDio0Rise()
 {
   LoRa.handleDio0Rise();
 }