From 04062b052c566f4931a0ae6eb09f0f0013269a8b Mon Sep 17 00:00:00 2001
From: Eric Duminil <eric.duminil@gmail.com>
Date: Thu, 17 Feb 2022 14:39:16 +0100
Subject: [PATCH] Allow commands during startup

---
 ampel-firmware/ampel-firmware.h   | 1 -
 ampel-firmware/ampel-firmware.ino | 8 +-------
 ampel-firmware/sensor_console.cpp | 6 ++++++
 ampel-firmware/sensor_console.h   | 2 +-
 ampel-firmware/wifi_util.cpp      | 1 +
 5 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/ampel-firmware/ampel-firmware.h b/ampel-firmware/ampel-firmware.h
index e60b3a7..e477735 100644
--- a/ampel-firmware/ampel-firmware.h
+++ b/ampel-firmware/ampel-firmware.h
@@ -25,6 +25,5 @@ void wifiConnected();
 void wifiFailed();
 void keepServicesAlive();
 void checkFlashButton();
-void checkSerialInput();
 
 #endif
diff --git a/ampel-firmware/ampel-firmware.ino b/ampel-firmware/ampel-firmware.ino
index b50d4a9..09bd105 100644
--- a/ampel-firmware/ampel-firmware.ino
+++ b/ampel-firmware/ampel-firmware.ino
@@ -128,7 +128,7 @@ void loop() {
   // Short press for night mode, Long press for calibration.
   checkFlashButton();
 
-  checkSerialInput();
+  sensor_console::checkSerialInput();
 
   if (sensor::processData()) {
     if (config::is_csv_active()) {
@@ -188,12 +188,6 @@ void wifiFailed() {
  * Helper functions                                              *
  *****************************************************************/
 
-void checkSerialInput() {
-  while (Serial.available() > 0) {
-    sensor_console::processSerialInput(Serial.read());
-  }
-}
-
 /**
  * Checks if flash button has been pressed:
  *   If not, do nothing.
diff --git a/ampel-firmware/sensor_console.cpp b/ampel-firmware/sensor_console.cpp
index f6e1827..5b13396 100644
--- a/ampel-firmware/sensor_console.cpp
+++ b/ampel-firmware/sensor_console.cpp
@@ -149,6 +149,12 @@ namespace sensor_console {
     }
   }
 
+  void checkSerialInput() {
+    while (Serial.available() > 0) {
+      sensor_console::processSerialInput(Serial.read());
+    }
+  }
+
   /*
    * Tries to find the corresponding callback for a given command. Name and parameter type should fit.
    */
diff --git a/ampel-firmware/sensor_console.h b/ampel-firmware/sensor_console.h
index 9594317..a2eb461 100644
--- a/ampel-firmware/sensor_console.h
+++ b/ampel-firmware/sensor_console.h
@@ -12,7 +12,7 @@ namespace sensor_console {
   void defineIntCommand(const char *name, void (*function)(int32_t), const __FlashStringHelper *doc_fstring);
   void defineStringCommand(const char *name, void (*function)(char*), const __FlashStringHelper *doc_fstring);
 
-  void processSerialInput(const uint8_t in_byte);
+  void checkSerialInput();
 
   void execute(const char *command_line);
 }
diff --git a/ampel-firmware/wifi_util.cpp b/ampel-firmware/wifi_util.cpp
index da4ca65..e18058d 100644
--- a/ampel-firmware/wifi_util.cpp
+++ b/ampel-firmware/wifi_util.cpp
@@ -35,6 +35,7 @@ namespace wifi {
   void tryConnection() {
     for (int i = 0; i <= config::wifi_timeout + 5; i++) {
       web_config::update();
+      sensor_console::checkSerialInput(); // To allow reset or ssid ... during startup
       if (isAccessPoint()) {
         led_effects::alert(0x1cff68);
       } else if (connected()) {
-- 
GitLab