]> git.tnoah.ca Git - lora-radio.git/commitdiff
Added button input and deep sleep
authorMark Qvist <mark@unsigned.io>
Wed, 1 May 2024 23:20:33 +0000 (01:20 +0200)
committerMark Qvist <mark@unsigned.io>
Wed, 1 May 2024 23:20:33 +0000 (01:20 +0200)
Boards.h
RNode_Firmware.ino
Utilities.h

index f523f28e271658263a292e055049b3e9817b6405..6eb912345e0228a9421d73dbf26fdf701ff49c4c 100644 (file)
--- a/Boards.h
+++ b/Boards.h
@@ -77,6 +77,8 @@
   #define HAS_PMU false
   #define HAS_NP false
   #define HAS_EEPROM false
+  #define HAS_INPUT false
+  #define HAS_SLEEP false
 
   #if defined(ENABLE_TCXO)
       #define HAS_TCXO true
     #elif BOARD_MODEL == BOARD_HELTEC32_V3
       #define IS_ESP32S3 true
       #define HAS_DISPLAY true
+      #define HAS_INPUT true
+      #define HAS_SLEEP true
       #define HAS_BLUETOOTH false
       #define HAS_BLE true
       // Cannot run wifi and BLE at same time?
       #define HAS_CONSOLE false
       #define HAS_EEPROM true
+      #define PIN_WAKEUP GPIO_NUM_0
+      #define WAKEUP_LEVEL 0
+      
       #if defined(EXTERNAL_LEDS)
         const int pin_led_rx = 13;
         const int pin_led_tx = 14;
         const int pin_led_rx = 35;
         const int pin_led_tx = 35;
       #endif
+      const int pin_btn_usr1 = 0;
 
       #define MODEM SX1262
       #define HAS_TCXO true
index 7f0c8393b70b0558661828daf439740d1aba419c..c0b019253a778d338ac6154bfa3795e845756da9 100644 (file)
@@ -82,6 +82,10 @@ void setup() {
   serial_interrupt_init();
 
   // Configure input and output pins
+  #if HAS_INPUT
+    input_init();
+  #endif
+
   #if HAS_NP == false
     pinMode(pin_led_rx, OUTPUT);
     pinMode(pin_led_tx, OUTPUT);
@@ -1289,6 +1293,23 @@ void loop() {
   #if HAS_BLUETOOTH || HAS_BLE == true
     if (!console_active && bt_ready) update_bt();
   #endif
+
+  #if HAS_INPUT
+    input_read();
+  #endif
+}
+
+void sleep_now() {
+  #if HAS_SLEEP == true
+    esp_sleep_enable_ext0_wakeup(PIN_WAKEUP, WAKEUP_LEVEL);
+    esp_deep_sleep_start();
+  #endif
+}
+
+void button_event(uint8_t event, unsigned long duration) {
+  if (duration > 2000) {
+    sleep_now();
+  }
 }
 
 volatile bool serial_polling = false;
index 9400367fe404ad13f051c00ab0efd0122083ef2d..b2f4f7419fc1b15e51c6f2952b884649e2a5b3aa 100644 (file)
@@ -56,6 +56,10 @@ sx128x *LoRa = &sx128x_modem;
   #include "Power.h"
 #endif
 
+#if HAS_INPUT == true
+       #include "Input.h"
+#endif
+
 #if MCU_VARIANT == MCU_ESP32 || MCU_VARIANT == MCU_NRF52
        #include "Device.h"
 #endif