Settings.cpp 1.6 KB

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