#include "Config.hpp" #include #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(); JsonArray arr = conf_json["mac"].to(); for (int i = 0; i < 6; i++) { arr.add(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"]; }