Flatten so the repo root is the Arduino sketchbook; the project lives in WeatherPredictor/. Add a collection index README at the root and move the detailed project README into WeatherPredictor/. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
53 lines
1.3 KiB
C++
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();
|
|
}
|
|
}
|