From 11b36705f6e2c7392d28f31e225723470e902d42 Mon Sep 17 00:00:00 2001
From: Eric Duminil <eric.duminil@gmail.com>
Date: Sat, 12 Feb 2022 13:58:26 +0100
Subject: [PATCH] WiFi callbacks

---
 ampel-firmware/ampel-firmware.ino | 64 +++++++++++++++----------------
 ampel-firmware/web_config.cpp     |  1 +
 2 files changed, 32 insertions(+), 33 deletions(-)

diff --git a/ampel-firmware/ampel-firmware.ino b/ampel-firmware/ampel-firmware.ino
index 1c8e405..b72d7f1 100644
--- a/ampel-firmware/ampel-firmware.ino
+++ b/ampel-firmware/ampel-firmware.ino
@@ -56,11 +56,37 @@
  * and define your credentials and parameters in 'config.h'.
  */
 
-void failedConnection() {
-  Serial.println("Seriously. What???");
-  led_effects::showKITTWheel(color::red);
+//void failedConnection() {
+//  Serial.println("Seriously. What???");
+//  led_effects::showKITTWheel(color::red);
+//}
+//
+void wifiConnected() {
+  led_effects::showKITTWheel(color::green);
+  Serial.println();
+  Serial.print(F("WiFi - Connected! IP address: "));
+  IPAddress address = WiFi.localIP();
+  snprintf(wifi::local_ip, sizeof(wifi::local_ip), "%d.%d.%d.%d", address[0], address[1], address[2], address[3]);
+  Serial.println(wifi::local_ip);
+
+  ntp::initialize();
+
+  if (config::mqtt_active()) {
+    mqtt::initialize(ampel.sensorId);
+  }
+
+  //TODO: If http enabled
+  Serial.print(F("You can access this sensor via http://"));
+  Serial.print(ampel.sensorId);
+  Serial.print(F(".local (might be unstable) or http://"));
+  Serial.println(WiFi.localIP());
 }
 
+void wifiFailed() {
+  Serial.print(F("WiFi - Could not connect to "));
+  Serial.println(config::current_ssid()); //TODO: Rename
+  led_effects::showKITTWheel(color::red);
+}
 /*****************************************************************
  * Setup                                                         *
  *****************************************************************/
@@ -72,35 +98,9 @@ void setup() {
 
   web_config::initialize();
 
-  if (config::wifi_active) {
-    web_config::setWifiConnectionCallback([]() {
-      //TODO: Move somewhere else
-      led_effects::showKITTWheel(color::green);
-      Serial.println();
-      Serial.print(F("WiFi - Connected! IP address: "));
-      IPAddress address = WiFi.localIP();
-      snprintf(wifi::local_ip, sizeof(wifi::local_ip), "%d.%d.%d.%d", address[0], address[1], address[2], address[3]);
-      Serial.println(wifi::local_ip);
-
-      ntp::initialize();
-
-      if (config::mqtt_active()) {
-        mqtt::initialize(ampel.sensorId);
-      }
-
-      Serial.print(F("You can access this sensor via http://"));
-      Serial.print(ampel.sensorId);
-      Serial.print(F(".local (might be unstable) or http://"));
-      Serial.println(WiFi.localIP());
-    });
+  web_config::setWifiConnectionCallback(wifiConnected);
 
-    web_config::setWifiFailCallback(failedConnection);
-
-//  web_config::setWifiConnectionFailedCallback([]() {
-//    led_effects::showKITTWheel(color::red);
-//    Serial.println(F("Connection to WiFi failed"));
-//  });
-  }
+  web_config::setWifiFailCallback(wifiFailed);
 
   pinMode(0, INPUT); // Flash button (used for forced calibration)
 
@@ -124,8 +124,6 @@ void setup() {
     wifi::defineCommands();
 #  if (AMPEL_HTTP==1)
     web_server::definePages();
-    //TODO: Rename. Not just web_server
-    // web_server::initialize();
 #  endif
   }
 
diff --git a/ampel-firmware/web_config.cpp b/ampel-firmware/web_config.cpp
index 70f733d..43d767e 100644
--- a/ampel-firmware/web_config.cpp
+++ b/ampel-firmware/web_config.cpp
@@ -50,6 +50,7 @@ namespace web_config {
           "[s]").build();
 
   //TODO: Distribute to corresponding classes, possibly with callbacks?
+  //TODO: Chainedparameters?
   /**
    * CO2 sensor
    */
-- 
GitLab