LoRa_APRS_iGate/src/ConfigurationManagement/configuration.cpp

56 lines
1.8 KiB
C++
Raw Normal View History

#include "configuration.h"
2021-01-01 23:23:27 +01:00
#include <SPIFFS.h>
#include <logger.h>
2022-03-20 00:37:29 +01:00
#define MODULE_NAME "ConfigurationManagement"
ConfigurationManagement::ConfigurationManagement(logging::Logger &logger, String FilePath) : mFilePath(FilePath) {
if (!SPIFFS.begin(true)) {
2022-03-20 00:37:29 +01:00
logger.log(logging::LoggerLevel::LOGGER_LEVEL_INFO, MODULE_NAME, "Mounting SPIFFS was not possible. Trying to format SPIFFS...");
SPIFFS.format();
if (!SPIFFS.begin()) {
2022-11-16 23:10:06 +01:00
logger.log(logging::LoggerLevel::LOGGER_LEVEL_ERROR, MODULE_NAME, "Formatting SPIFFS was not okay!");
}
}
2021-01-01 23:23:27 +01:00
}
ConfigurationManagement::~ConfigurationManagement() {
2021-01-01 23:23:27 +01:00
}
2022-03-20 00:37:29 +01:00
void ConfigurationManagement::readConfiguration(logging::Logger &logger, Configuration &conf) {
File file = SPIFFS.open(mFilePath);
if (!file) {
2022-03-20 00:37:29 +01:00
logger.log(logging::LoggerLevel::LOGGER_LEVEL_ERROR, MODULE_NAME, "Failed to open file for reading, using default configuration.");
2021-05-19 00:44:37 +02:00
return;
}
DynamicJsonDocument data(2048);
DeserializationError error = deserializeJson(data, file);
if (error) {
2022-03-20 00:37:29 +01:00
logger.log(logging::LoggerLevel::LOGGER_LEVEL_WARN, MODULE_NAME, "Failed to read file, using default configuration.");
}
// serializeJson(data, Serial);
// Serial.println();
file.close();
2021-05-19 00:44:37 +02:00
readProjectConfiguration(data, conf);
// update config in memory to get the new fields:
2022-05-20 23:09:26 +02:00
// writeConfiguration(logger, conf);
2021-01-01 23:23:27 +01:00
}
2022-03-20 00:37:29 +01:00
void ConfigurationManagement::writeConfiguration(logging::Logger &logger, Configuration &conf) {
File file = SPIFFS.open(mFilePath, "w");
if (!file) {
2022-03-20 00:37:29 +01:00
logger.log(logging::LoggerLevel::LOGGER_LEVEL_ERROR, MODULE_NAME, "Failed to open file for writing...");
return;
}
DynamicJsonDocument data(2048);
2021-01-01 23:23:27 +01:00
writeProjectConfiguration(conf, data);
2021-01-01 23:23:27 +01:00
serializeJson(data, file);
// serializeJson(data, Serial);
// Serial.println();
file.close();
2021-01-01 23:23:27 +01:00
}