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