Files
Flipdot-display/src/esp32/system/settings_store.cpp
T

40 lines
1010 B
C++
Raw Normal View History

2026-10-13 01:52:34 +02:00
#include "system/settings_store.h"
#include <Preferences.h>
static const char *NAMESPACE = "flipdot";
static const char *KEY = "settings";
// Increase when the Settings struct changes; old records are then ignored (defaults)
static const uint16_t VERSION = 1;
struct StoredSettings
{
uint16_t version;
uint16_t size;
Settings settings;
};
void loadSettings(Settings &settings)
{
settings = Settings();
StoredSettings stored;
Preferences prefs;
prefs.begin(NAMESPACE, true);
size_t read = prefs.getBytes(KEY, &stored, sizeof(stored));
prefs.end();
if (read == sizeof(stored) && stored.version == VERSION && stored.size == sizeof(Settings) &&
validateSettings(stored.settings) == nullptr)
settings = stored.settings;
}
void saveSettings(const Settings &settings)
{
StoredSettings stored;
stored.version = VERSION;
stored.size = sizeof(Settings);
stored.settings = settings;
Preferences prefs;
prefs.begin(NAMESPACE, false);
prefs.putBytes(KEY, &stored, sizeof(stored));
prefs.end();
}