Преглед на файлове

moved memory and config management to own wrapper class ConfigManager

master
gituser преди 1 месец
родител
ревизия
fbdf9f2d3d
променени са 4 файла, в които са добавени 130 реда и са изтрити 37 реда
  1. 52
    0
      ConfigManager.cpp
  2. 37
    0
      ConfigManager.h
  3. 39
    34
      LEDLamp.ino
  4. 2
    3
      sloeber.ino.cpp

+ 52
- 0
ConfigManager.cpp Целия файл

/*
* MemoryManager.cpp
*
* Created on: 21.06.2026
* Author: FSmilari
*/

#include "ConfigManager.h"

ConfigManager::ConfigManager() {
memset(&_config, 0, sizeof(Config));
_config.wifiValid = false;
}

ConfigManager::~ConfigManager() {
// TODO Auto-generated destructor stub
}

bool ConfigManager::loadConfig() {
EEPROM.begin(sizeof(Config));
EEPROM.get(0, _config);

if (_config.wifiValid != true) {
memset(&_config, 0, sizeof(Config));
_config.wifiValid = false;
return false;
}

return true;
}

bool ConfigManager::saveConfig(const Config &config) {
_config = config;

EEPROM.begin(sizeof(Config));
EEPROM.put(0, _config);

return EEPROM.commit();
}

void ConfigManager::resetConfig() {
memset(&_config, 0, sizeof(Config));
_config.wifiValid = false;

EEPROM.begin(sizeof(Config));
EEPROM.put(0, _config);
EEPROM.commit();
}

Config& ConfigManager::getConfig() {
return _config;
}

+ 37
- 0
ConfigManager.h Целия файл

/*
* ConfigManager.h
*
* Created on: 21.06.2026
* Author: FSmilari
*/

#ifndef CONFIGMANAGER_H_
#define CONFIGMANAGER_H_

#include <Arduino.h>
#include <EEPROM.h>

struct Config {
char ssid[32];
char pass[64];
bool wifiValid;
};

class ConfigManager {

public:
ConfigManager();
virtual ~ConfigManager();

bool loadConfig();
bool saveConfig(const Config &config);
void resetConfig();
Config& getConfig();

private:
Config _config;
};


#endif /* CONFIGMANAGER_H_ */


+ 39
- 34
LEDLamp.ino Целия файл

#include <Adafruit_Neopixel.h> #include <Adafruit_Neopixel.h>
#include "States.h" #include "States.h"
#include "Commands.h" #include "Commands.h"
#include "ConfigManager.h"
#include "HtmlPages.h" #include "HtmlPages.h"
#include "LEDStripManager.h" #include "LEDStripManager.h"


const byte DNS_PORT = 53; const byte DNS_PORT = 53;


// WLAN Config // WLAN Config
struct Config {
char ssid[32];
char pass[64];
bool valid;
};
//struct Config {
// char ssid[32];
// char pass[64];
// bool valid;
//};


// AP Daten // AP Daten
const char *ap_ssid = "Wemos_Setup"; const char *ap_ssid = "Wemos_Setup";
const char *ap_pass = "admin123"; const char *ap_pass = "admin123";



ESP8266WebServer webServer(80); ESP8266WebServer webServer(80);
WebSocketsServer webSocket(81); WebSocketsServer webSocket(81);
DNSServer dnsServer; DNSServer dnsServer;
LEDStripManager ledMngr(LED_COUNT, LED_STRIP_DATA_PIN); LEDStripManager ledMngr(LED_COUNT, LED_STRIP_DATA_PIN);
Config config;

// ---------- EEPROM ----------
//TODO: move to onw class
void saveConfig() {
EEPROM.begin(sizeof(Config));
EEPROM.put(0, config);
EEPROM.commit();
}

void loadConfig() {
EEPROM.begin(sizeof(Config));
EEPROM.get(0, config);
ConfigManager configManager;


if (config.valid != true) {
config.valid = false;
}
}


// ---------- CAPTIVE PORTAL PAGE ---------- // ---------- CAPTIVE PORTAL PAGE ----------
void handleSetupPage() { void handleSetupPage() {


// ---------- SAVE ---------- // ---------- SAVE ----------
void handleSave() { void handleSave() {
// String ssid = webServer.arg("ssid");
// String pass = webServer.arg("pass");
//
// ssid.toCharArray(config.ssid, 32);
// pass.toCharArray(config.pass, 64);
// config.valid = true;
//
// saveConfig();

Config cfg;

String ssid = webServer.arg("ssid"); String ssid = webServer.arg("ssid");
String pass = webServer.arg("pass"); String pass = webServer.arg("pass");


ssid.toCharArray(config.ssid, 32);
pass.toCharArray(config.pass, 64);
config.valid = true;
ssid.toCharArray(cfg.ssid, sizeof(cfg.ssid));
pass.toCharArray(cfg.pass, sizeof(cfg.pass));


saveConfig();
cfg.wifiValid = true;

configManager.saveConfig(cfg);


webServer.send(200, "text/html", getConnectionSuccessPage()); webServer.send(200, "text/html", getConnectionSuccessPage());


} }


void resetWifiConfiguration(uint8_t num) { void resetWifiConfiguration(uint8_t num) {
EEPROM.begin(sizeof(Config));
config.valid = false;
EEPROM.put(0, config);
// EEPROM.begin(sizeof(Config));
// config.valid = false;
// EEPROM.put(0, config);

Config cfg = configManager.getConfig();
String ssid = "";
String pass = "";
ssid.toCharArray(cfg.ssid, sizeof(cfg.ssid));
pass.toCharArray(cfg.pass, sizeof(cfg.pass));
cfg.wifiValid = false;

configManager.saveConfig(cfg);


webSocket.sendTXT(num, "Wifi_Reset_Success"); webSocket.sendTXT(num, "Wifi_Reset_Success");
delay(200); delay(200);
} }


void handleBoot() { void handleBoot() {
if (config.valid) {
if (configManager.getConfig().wifiValid) {
WiFi.mode(WIFI_STA); WiFi.mode(WIFI_STA);
WiFi.begin(config.ssid, config.pass);
WiFi.begin(configManager.getConfig().ssid, configManager.getConfig().pass);
setState(STATE_CONNECTING); setState(STATE_CONNECTING);
} }
else { else {


if (WiFi.status() != WL_CONNECTED) { if (WiFi.status() != WL_CONNECTED) {
Serial.println("WLAN verloren"); Serial.println("WLAN verloren");
WiFi.begin(config.ssid, config.pass);
WiFi.begin(configManager.getConfig().ssid, configManager.getConfig().pass);
connectStart = millis(); connectStart = millis();
setState(STATE_CONNECTING); setState(STATE_CONNECTING);
} }
Serial.begin(115200); Serial.begin(115200);
ledMngr.begin(); ledMngr.begin();


loadConfig();
configManager.loadConfig();


setState(STATE_BOOT); setState(STATE_BOOT);
connectStart = millis(); connectStart = millis();

+ 2
- 3
sloeber.ino.cpp Целия файл

//This is a automatic generated file //This is a automatic generated file
//Please do not modify this file //Please do not modify this file
//If you touch this file your change will be overwritten during the next build //If you touch this file your change will be overwritten during the next build
//This file has been generated on 2026-06-19 21:07:33
//This file has been generated on 2026-06-21 13:25:01


#include "Arduino.h" #include "Arduino.h"
#include "Arduino.h" #include "Arduino.h"
#include <Adafruit_Neopixel.h> #include <Adafruit_Neopixel.h>
#include "States.h" #include "States.h"
#include "Commands.h" #include "Commands.h"
#include "ConfigManager.h"
#include "HtmlPages.h" #include "HtmlPages.h"
#include "LEDStripManager.h" #include "LEDStripManager.h"


void saveConfig() ;
void loadConfig() ;
void handleSetupPage() ; void handleSetupPage() ;
void handleSTAControlPage() ; void handleSTAControlPage() ;
void handleSave() ; void handleSave() ;

Loading…
Отказ
Запис