push a lot of changes...

This commit is contained in:
Peter Buchegger 2021-01-01 23:23:27 +01:00
parent 295feb98cc
commit d5c015f4b9
29 changed files with 2907 additions and 391 deletions

View file

@ -0,0 +1,65 @@
#include <SPIFFS.h>
#include <logger.h>
#include "configuration.h"
ConfigurationManagement::ConfigurationManagement(String FilePath)
: mFilePath(FilePath)
{
if(!SPIFFS.begin(true))
{
logPrintlnE("Mounting SPIFFS was not possible. Trying to format SPIFFS...");
SPIFFS.format();
if(!SPIFFS.begin())
{
logPrintlnE("Formating SPIFFS was not okay!");
}
}
}
ConfigurationManagement::~ConfigurationManagement()
{
}
std::shared_ptr<Configuration> ConfigurationManagement::readConfiguration()
{
File file = SPIFFS.open(mFilePath);
if(!file)
{
logPrintlnE("Failed to open file for reading...");
return 0;
}
DynamicJsonDocument data(2048);
DeserializationError error = deserializeJson(data, file);
if(error)
{
logPrintlnW("Failed to read file, using default configuration.");
}
//serializeJson(data, Serial);
//Serial.println();
file.close();
std::shared_ptr<Configuration> conf = readProjectConfiguration(data);
// update config in memory to get the new fields:
writeConfiguration(conf);
return conf;
}
void ConfigurationManagement::writeConfiguration(std::shared_ptr<Configuration> conf)
{
File file = SPIFFS.open(mFilePath, "w");
if(!file)
{
logPrintlnE("Failed to open file for writing...");
return;
}
DynamicJsonDocument data(2048);
writeProjectConfiguration(conf, data);
serializeJson(data, file);
//serializeJson(data, Serial);
//Serial.println();
file.close();
}

View file

@ -0,0 +1,27 @@
#ifndef CONFIGURATION_H_
#define CONFIGURATION_H_
#include <list>
#include <Arduino.h>
#include <ArduinoJson.h>
class Configuration;
class ConfigurationManagement
{
public:
explicit ConfigurationManagement(String FilePath);
virtual ~ConfigurationManagement();
std::shared_ptr<Configuration> readConfiguration();
void writeConfiguration(std::shared_ptr<Configuration> conf);
private:
virtual std::shared_ptr<Configuration> readProjectConfiguration(DynamicJsonDocument & data) = 0;
virtual void writeProjectConfiguration(std::shared_ptr<Configuration> conf, DynamicJsonDocument & data) = 0;
const String mFilePath;
};
#endif