From 78d66790051565e7fc5b7ade538d197994b59b75 Mon Sep 17 00:00:00 2001
From: Eric Duminil <eric.duminil@gmail.com>
Date: Tue, 29 Dec 2020 00:25:41 +0100
Subject: [PATCH] No more circular dependency

---
 ampel-firmware/co2_sensor.cpp  |  2 +-
 ampel-firmware/csv_writer.h    |  4 +++-
 ampel-firmware/led_effects.cpp |  6 +++---
 ampel-firmware/led_effects.h   |  3 +--
 ampel-firmware/mqtt.cpp        |  2 +-
 ampel-firmware/util.cpp        | 10 ----------
 ampel-firmware/util.h          | 11 +++--------
 ampel-firmware/wifi_util.h     |  4 +++-
 8 files changed, 15 insertions(+), 27 deletions(-)

diff --git a/ampel-firmware/co2_sensor.cpp b/ampel-firmware/co2_sensor.cpp
index 9bfa371..48761a4 100644
--- a/ampel-firmware/co2_sensor.cpp
+++ b/ampel-firmware/co2_sensor.cpp
@@ -113,7 +113,7 @@ namespace sensor {
     scd30.setForcedRecalibrationFactor(config::co2_calibration_level);
     Serial.println(F(" Done!"));
     Serial.println(F("Sensor calibrated."));
-    resetAmpel();
+    ESP.restart(); // softer than ESP.reset
   }
 
   void logToSerial() {
diff --git a/ampel-firmware/csv_writer.h b/ampel-firmware/csv_writer.h
index c6b71a1..e0e0d53 100644
--- a/ampel-firmware/csv_writer.h
+++ b/ampel-firmware/csv_writer.h
@@ -11,8 +11,10 @@
 #  error Board should be either ESP8266 or ESP832
 #endif
 
-#include "led_effects.h"
 #include "config.h"
+#include "util.h"
+#include "led_effects.h"
+
 namespace config {
   extern uint16_t csv_interval; // [s]
 }
diff --git a/ampel-firmware/led_effects.cpp b/ampel-firmware/led_effects.cpp
index 3af6a06..ebe8bee 100644
--- a/ampel-firmware/led_effects.cpp
+++ b/ampel-firmware/led_effects.cpp
@@ -139,14 +139,14 @@ namespace led_effects {
     pixels.show();
   }
 
-  void showRainbowWheel(int duration_s, uint16_t hue_increment) {
+  void showRainbowWheel(int duration_ms, uint16_t hue_increment) {
     if (config::night_mode) {
       return;
     }
     static uint16_t wheel_offset = 0;
-    unsigned long t0 = seconds();
+    unsigned long t0 = millis();
     pixels.setBrightness(config::max_brightness);
-    while (seconds() < t0 + duration_s) {
+    while (millis() < t0 + duration_ms) {
       for (int i = 0; i < NUMPIXELS; i++) {
         pixels.setPixelColor(i, pixels.ColorHSV(i * 65535 / NUMPIXELS + wheel_offset));
         wheel_offset += hue_increment;
diff --git a/ampel-firmware/led_effects.h b/ampel-firmware/led_effects.h
index da5757d..03aee3d 100644
--- a/ampel-firmware/led_effects.h
+++ b/ampel-firmware/led_effects.h
@@ -1,7 +1,6 @@
 #ifndef LED_EFFECTS_H_INCLUDED
 #define LED_EFFECTS_H_INCLUDED
 #include <Arduino.h>
-#include "util.h"
 #include "config.h"
 
 // Adafruit NeoPixel (Arduino library for controlling single-wire-based LED pixels and strip)
@@ -30,7 +29,7 @@ namespace led_effects {
   int countdownToZero();
   void showWaitingLED(uint32_t color);
   void showKITTWheel(uint32_t color, uint16_t duration_s = 2);
-  void showRainbowWheel(int duration_s = 1, uint16_t hue_increment = 50);
+  void showRainbowWheel(int duration_ms = 1000, uint16_t hue_increment = 50);
   void displayCO2color(uint16_t co2);
 }
 #endif
diff --git a/ampel-firmware/mqtt.cpp b/ampel-firmware/mqtt.cpp
index 7f54c38..29f609f 100644
--- a/ampel-firmware/mqtt.cpp
+++ b/ampel-firmware/mqtt.cpp
@@ -167,7 +167,7 @@ namespace mqtt {
     } else if (messageString == "local_ip") {
       sendInfoAboutLocalNetwork();
     } else if (messageString == "reset") {
-      resetAmpel();
+      ESP.restart(); // softer than ESP.reset()
     } else {
       led_effects::showKITTWheel(color::red, 1);
       Serial.println(F("Message not supported. Doing nothing."));
diff --git a/ampel-firmware/util.cpp b/ampel-firmware/util.cpp
index 43ead3a..31df19d 100644
--- a/ampel-firmware/util.cpp
+++ b/ampel-firmware/util.cpp
@@ -38,16 +38,6 @@ namespace ntp {
   }
 }
 
-void resetAmpel() {
-  Serial.print(F("Resetting"));
-#ifdef AMPEL_CSV
-  FS_LIB.end();
-#endif
-  led_effects::LEDsOff();
-  delay(1000);
-  ESP.restart();
-}
-
 uint32_t max_loop_duration = 0;
 
 //FIXME: Remove every instance of Strings, to avoid heap fragmentation problems. (Start:  "Free heap space : 17104 bytes")
diff --git a/ampel-firmware/util.h b/ampel-firmware/util.h
index 4bd2810..0ffe5eb 100644
--- a/ampel-firmware/util.h
+++ b/ampel-firmware/util.h
@@ -2,20 +2,17 @@
 #define AMPEL_UTIL_H_INCLUDED
 #include <Arduino.h>
 #include "config.h"
-#ifdef AMPEL_CSV
-#  include "csv_writer.h" // To close filesystem before reset
-#endif
 
-#include <WiFiUdp.h> //required for NTP
+#include <WiFiUdp.h> // required for NTP
 #include "src/lib/NTPClient-master/NTPClient.h" // NTP
 
 #if defined(ESP8266)
 #  define BOARD "ESP8266"
-#  include <ESP8266WiFi.h>
+#  include <ESP8266WiFi.h> // required to get MAC address
 #  define get_free_heap_size() system_get_free_heap_size()
 #elif defined(ESP32)
 #  define BOARD "ESP32"
-#  include <WiFi.h>
+#  include <WiFi.h> // required to get MAC address
 #  define get_free_heap_size() esp_get_free_heap_size()
 #else
 #  define BOARD "Unknown"
@@ -43,6 +40,4 @@ namespace util {
 extern uint32_t max_loop_duration;
 const extern String SENSOR_ID;
 
-void resetAmpel();
-
 #endif
diff --git a/ampel-firmware/wifi_util.h b/ampel-firmware/wifi_util.h
index 3fb4713..7520ed7 100644
--- a/ampel-firmware/wifi_util.h
+++ b/ampel-firmware/wifi_util.h
@@ -1,8 +1,10 @@
 #ifndef WIFI_UTIL_H_INCLUDED
 #define WIFI_UTIL_H_INCLUDED
 
-#include "led_effects.h"
 #include "config.h"
+#include "util.h"
+#include "led_effects.h"
+
 void WiFiConnect(const String &hostname);
 
 #endif
-- 
GitLab