2022-04-10 16:57:24 +02:00
|
|
|
#include "Configuration.h"
|
2022-04-10 17:37:54 +02:00
|
|
|
#include "defaults.h"
|
2022-04-18 03:38:07 +02:00
|
|
|
#include <LittleFS.h>
|
2022-04-10 16:57:24 +02:00
|
|
|
|
|
|
|
|
CONFIG_T config;
|
|
|
|
|
|
|
|
|
|
void ConfigurationClass::init()
|
|
|
|
|
{
|
|
|
|
|
memset(&config, 0x0, sizeof(config));
|
|
|
|
|
config.Cfg_SaveCount = 0;
|
|
|
|
|
config.Cfg_Version = CONFIG_VERSION;
|
2022-04-10 17:37:54 +02:00
|
|
|
|
|
|
|
|
// WiFi Settings
|
|
|
|
|
strlcpy(config.WiFi_Ssid, WIFI_SSID, sizeof(config.WiFi_Ssid));
|
|
|
|
|
strlcpy(config.WiFi_Password, WIFI_PASSWORD, sizeof(config.WiFi_Password));
|
|
|
|
|
config.WiFi_Dhcp = WIFI_DHCP;
|
|
|
|
|
strlcpy(config.WiFi_Hostname, APP_HOSTNAME, sizeof(config.WiFi_Hostname));
|
2022-04-17 23:13:36 +02:00
|
|
|
|
|
|
|
|
// NTP Settings
|
|
|
|
|
strlcpy(config.Ntp_Server, NTP_SERVER, sizeof(config.Ntp_Server));
|
|
|
|
|
strlcpy(config.Ntp_Timezone, NTP_TIMEZONE, sizeof(config.Ntp_Timezone));
|
2022-04-18 01:33:46 +02:00
|
|
|
strlcpy(config.Ntp_TimezoneDescr, NTP_TIMEZONEDESCR, sizeof(config.Ntp_TimezoneDescr));
|
2022-04-18 15:19:26 +02:00
|
|
|
|
|
|
|
|
// MqTT Settings
|
|
|
|
|
config.Mqtt_Enabled = MQTT_ENABLED;
|
|
|
|
|
strlcpy(config.Mqtt_Hostname, MQTT_HOST, sizeof(config.Mqtt_Hostname));
|
|
|
|
|
config.Mqtt_Port = MQTT_PORT;
|
|
|
|
|
strlcpy(config.Mqtt_Username, MQTT_USER, sizeof(config.Mqtt_Username));
|
|
|
|
|
strlcpy(config.Mqtt_Password, MQTT_PASSWORD, sizeof(config.Mqtt_Password));
|
|
|
|
|
strlcpy(config.Mqtt_Topic, MQTT_TOPIC, sizeof(config.Mqtt_Topic));
|
2022-04-10 16:57:24 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool ConfigurationClass::write()
|
|
|
|
|
{
|
2022-04-18 03:38:07 +02:00
|
|
|
File f = LittleFS.open(CONFIG_FILENAME, "w");
|
2022-04-10 16:57:24 +02:00
|
|
|
if (!f) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
config.Cfg_SaveCount++;
|
|
|
|
|
uint8_t* bytes = (uint8_t*)&config;
|
|
|
|
|
for (unsigned int i = 0; i < sizeof(CONFIG_T); i++) {
|
|
|
|
|
f.write(bytes[i]);
|
|
|
|
|
}
|
|
|
|
|
f.close();
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool ConfigurationClass::read()
|
|
|
|
|
{
|
2022-04-18 03:38:07 +02:00
|
|
|
File f = LittleFS.open(CONFIG_FILENAME, "r");
|
2022-04-10 16:57:24 +02:00
|
|
|
if (!f) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
uint8_t* bytes = (uint8_t*)&config;
|
|
|
|
|
for (unsigned int i = 0; i < sizeof(CONFIG_T); i++) {
|
|
|
|
|
bytes[i] = f.read();
|
|
|
|
|
}
|
|
|
|
|
f.close();
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ConfigurationClass::migrate()
|
|
|
|
|
{
|
2022-04-17 23:13:36 +02:00
|
|
|
if (config.Cfg_Version < 0x00010400) {
|
|
|
|
|
strlcpy(config.Ntp_Server, NTP_SERVER, sizeof(config.Ntp_Server));
|
|
|
|
|
strlcpy(config.Ntp_Timezone, NTP_TIMEZONE, sizeof(config.Ntp_Timezone));
|
2022-04-18 01:33:46 +02:00
|
|
|
strlcpy(config.Ntp_TimezoneDescr, NTP_TIMEZONEDESCR, sizeof(config.Ntp_TimezoneDescr));
|
2022-04-17 23:13:36 +02:00
|
|
|
}
|
2022-04-18 15:19:26 +02:00
|
|
|
|
|
|
|
|
if (config.Cfg_Version < 0x00010500) {
|
|
|
|
|
config.Mqtt_Enabled = MQTT_ENABLED;
|
|
|
|
|
strlcpy(config.Mqtt_Hostname, MQTT_HOST, sizeof(config.Mqtt_Hostname));
|
|
|
|
|
config.Mqtt_Port = MQTT_PORT;
|
|
|
|
|
strlcpy(config.Mqtt_Username, MQTT_USER, sizeof(config.Mqtt_Username));
|
|
|
|
|
strlcpy(config.Mqtt_Password, MQTT_PASSWORD, sizeof(config.Mqtt_Password));
|
|
|
|
|
strlcpy(config.Mqtt_Topic, MQTT_TOPIC, sizeof(config.Mqtt_Topic));
|
|
|
|
|
}
|
|
|
|
|
|
2022-04-10 16:57:24 +02:00
|
|
|
config.Cfg_Version = CONFIG_VERSION;
|
|
|
|
|
write();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
CONFIG_T& ConfigurationClass::get()
|
|
|
|
|
{
|
|
|
|
|
return config;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ConfigurationClass Configuration;
|