From 7b2a157acab3886c115ed0b1adc48bce4893e175 Mon Sep 17 00:00:00 2001
From: Eric Duminil <eric.duminil@gmail.com>
Date: Thu, 10 Feb 2022 16:40:51 +0100
Subject: [PATCH] Ugly, but seems to work

---
 ampel-firmware/ampel-firmware.ino | 16 ++++++++++++----
 ampel-firmware/web_config.cpp     |  7 ++-----
 ampel-firmware/web_config.h       |  3 ++-
 3 files changed, 16 insertions(+), 10 deletions(-)

diff --git a/ampel-firmware/ampel-firmware.ino b/ampel-firmware/ampel-firmware.ino
index a9db9ae..f937902 100644
--- a/ampel-firmware/ampel-firmware.ino
+++ b/ampel-firmware/ampel-firmware.ino
@@ -56,6 +56,12 @@
  * and define your credentials and parameters in 'config.h'.
  */
 
+iotwebconf::WifiAuthInfo* failedConnection() {
+  Serial.println("Seriously. What???");
+  led_effects::showKITTWheel(color::red);
+  return nullptr;
+}
+
 /*****************************************************************
  * Setup                                                         *
  *****************************************************************/
@@ -89,10 +95,12 @@ void setup() {
     Serial.println(WiFi.localIP());
   });
 
-  web_config::setWifiConnectionFailedCallback([]() {
-    led_effects::showKITTWheel(color::red);
-    Serial.println(F("Connection to WiFi failed"));
-  });
+  web_config::setWifiFailCallback(failedConnection);
+
+//  web_config::setWifiConnectionFailedCallback([]() {
+//    led_effects::showKITTWheel(color::red);
+//    Serial.println(F("Connection to WiFi failed"));
+//  });
 #endif
 
   pinMode(0, INPUT); // Flash button (used for forced calibration)
diff --git a/ampel-firmware/web_config.cpp b/ampel-firmware/web_config.cpp
index f7ef657..7a09ded 100644
--- a/ampel-firmware/web_config.cpp
+++ b/ampel-firmware/web_config.cpp
@@ -162,11 +162,8 @@ namespace web_config {
     iotWebConf->setWifiConnectionCallback(function);
   }
 
-  void setWifiConnectionFailedCallback(void (*function)()) {
-    iotWebConf->setWifiConnectionFailedHandler([&function]() -> WifiAuthInfo* {
-      function();
-      return NULL;
-    });
+  void setWifiFailCallback(WifiAuthInfo* (*function)()) {
+    iotWebConf->setWifiConnectionFailedHandler(function);
   }
 
   void initialize() {
diff --git a/ampel-firmware/web_config.h b/ampel-firmware/web_config.h
index 87c6605..af7d382 100644
--- a/ampel-firmware/web_config.h
+++ b/ampel-firmware/web_config.h
@@ -2,6 +2,7 @@
 #define AMPEL_WEB_CONFIG_H_
 
 #define STRING_LEN 64
+#include <IotWebConf.h>
 
 #if defined(ESP8266)
 #  include <ESP8266WebServer.h>
@@ -51,7 +52,7 @@ namespace config {
 namespace web_config {
   void initialize();
   void setWifiConnectionCallback(void (*function)());
-  void setWifiConnectionFailedCallback(void (*function)());
+  void setWifiFailCallback(iotwebconf::WifiAuthInfo* (*function)());
   void update();
   //TODO: Add saveConfig(), for e.g. after custom setters. Or simply reset after each configchange?
 
-- 
GitLab