Settings.cpp 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #include <Settings.h>
  2. #include <ArduinoJson.h>
  3. #include <FS.h>
  4. void Settings::deserialize(Settings& settings, String json) {
  5. DynamicJsonBuffer jsonBuffer;
  6. JsonObject& parsedSettings = jsonBuffer.parseObject(json);
  7. settings.adminUsername = parsedSettings.get<String>("admin_username");
  8. settings.adminPassword = parsedSettings.get<String>("admin_password");
  9. settings.cePin = parsedSettings["ce_pin"];
  10. settings.csnPin = parsedSettings["csn_pin"];
  11. }
  12. void Settings::load(Settings& settings) {
  13. if (SPIFFS.exists(SETTINGS_FILE)) {
  14. File f = SPIFFS.open(SETTINGS_FILE, "r");
  15. String settingsContents = f.readStringUntil(SETTINGS_TERMINATOR);
  16. f.close();
  17. deserialize(settings, settingsContents);
  18. } else {
  19. settings.save();
  20. }
  21. }
  22. String Settings::toJson(const bool prettyPrint) {
  23. String buffer = "";
  24. StringStream s(buffer);
  25. serialize(s, prettyPrint);
  26. return buffer;
  27. }
  28. void Settings::save() {
  29. File f = SPIFFS.open(SETTINGS_FILE, "w");
  30. if (!f) {
  31. Serial.println("Opening settings file failed");
  32. } else {
  33. serialize(f);
  34. f.close();
  35. }
  36. }
  37. void Settings::serialize(Stream& stream, const bool prettyPrint) {
  38. DynamicJsonBuffer jsonBuffer;
  39. JsonObject& root = jsonBuffer.createObject();
  40. root["admin_username"] = this->adminUsername;
  41. root["admin_password"] = this->adminPassword;
  42. root["ce_pin"] = this->cePin;
  43. root["csn_pin"] = this->csnPin;
  44. if (prettyPrint) {
  45. root.prettyPrintTo(stream);
  46. } else {
  47. root.printTo(stream);
  48. }
  49. }