Files
tracktime_kart/main/Config.cpp
Michal Courson 82dde89d80 initial
2025-08-28 21:35:21 -04:00

63 lines
1.4 KiB
C++

#include "Config.hpp"
#include <math.h>
#include "FS.h"
#include "SPIFFS.h"
Config config;
void Config::Init() {
SPIFFS.begin(true);
File f = SPIFFS.open("/config.json", FILE_READ);
if (!f) {
SetDefaults();
return;
}
DeserializationError err = deserializeJson(conf_json, f);
if (err == DeserializationError::Ok) {
Load();
} else {
SetDefaults();
}
f.close();
}
void Config::SetDefaults() {
Serial.println("Setting default config");
// Set default MAC address
trackside_mac[0] = 0x34;
trackside_mac[1] = 0x85;
trackside_mac[2] = 0x18;
trackside_mac[3] = 0xa9;
trackside_mac[4] = 0x3d;
trackside_mac[5] = 0xfc;
// Set default kart ID
kart_id = esp_random();
// Save the defaults to SPIFFS
Save();
}
void Config::Save() {
conf_json.to<JsonObject>();
JsonArray arr = conf_json["mac"].to<JsonArray>();
for (int i = 0; i < 6; i++) {
arr.add<int>(trackside_mac[i]);
}
conf_json["kart_id"] = kart_id;
String out;
serializeJson(conf_json, out);
File f = SPIFFS.open("/config.json", FILE_WRITE, true);
f.print(out);
f.close();
Serial.printf("Config saved: %s\n", out.c_str());
}
void Config::Load() {
JsonArray arr = conf_json["mac"];
for (int i = 0; i < 6; i++) {
trackside_mac[i] = arr[i];
}
kart_id = conf_json["kart_id"];
}