Files
Arduino/WeatherPredictor/app_settings.cpp
T
2026-07-17 20:08:03 +07:00

53 lines
1.3 KiB
C++

#include <LittleFS.h>
#include <ArduinoJson.h>
#include "config.h"
#include "app_settings.h"
AppSettings settings;
static const char* PATH = "/settings.json";
void settingsDefaults() {
settings.altitudeM = DEFAULT_ALTITUDE_M;
settings.tzOffsetMin = DEFAULT_TZ_OFFSET_MIN;
settings.lat = DEFAULT_LAT;
settings.lon = DEFAULT_LON;
}
static bool settingsLoad() {
File f = LittleFS.open(PATH, "r");
if (!f) return false;
JsonDocument doc;
DeserializationError err = deserializeJson(doc, f);
f.close();
if (err) return false;
settings.altitudeM = doc["altitude"] | DEFAULT_ALTITUDE_M;
settings.tzOffsetMin = doc["tz"] | DEFAULT_TZ_OFFSET_MIN;
settings.lat = doc["lat"] | DEFAULT_LAT;
settings.lon = doc["lon"] | DEFAULT_LON;
return true;
}
bool settingsSave() {
JsonDocument doc;
doc["altitude"] = settings.altitudeM;
doc["tz"] = settings.tzOffsetMin;
doc["lat"] = settings.lat;
doc["lon"] = settings.lon;
File f = LittleFS.open(PATH, "w");
if (!f) return false;
serializeJson(doc, f);
f.close();
return true;
}
void settingsBegin() {
if (!LittleFS.begin()) {
LittleFS.format();
LittleFS.begin();
}
settingsDefaults();
if (!settingsLoad()) { // first boot: persist defaults
settingsSave();
}
}