settings.cpp 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. #include "settings.h"
  2. String Settings::getSettingsString() {
  3. return this->json_settings_string;
  4. }
  5. bool Settings::begin() {
  6. if(!SPIFFS.begin(FORMAT_SPIFFS_IF_FAILED)){
  7. Serial.println("Settings SPIFFS Mount Failed");
  8. return false;
  9. }
  10. File settingsFile;
  11. //SPIFFS.remove("/settings.json"); // NEED TO REMOVE THIS LINE
  12. if (SPIFFS.exists("/settings.json")) {
  13. settingsFile = SPIFFS.open("/settings.json", FILE_READ);
  14. if (!settingsFile) {
  15. settingsFile.close();
  16. Serial.println(F("Could not find settings file"));
  17. if (this->createDefaultSettings(SPIFFS))
  18. return true;
  19. else
  20. return false;
  21. }
  22. }
  23. else {
  24. Serial.println("Settings file does not exist");
  25. if (this->createDefaultSettings(SPIFFS))
  26. return true;
  27. else
  28. return false;
  29. }
  30. String json_string;
  31. DynamicJsonDocument jsonBuffer(1024);
  32. DeserializationError error = deserializeJson(jsonBuffer, settingsFile);
  33. serializeJson(jsonBuffer, json_string);
  34. Serial.println("Settings: " + (String)json_string + "\n");
  35. this->printJsonSettings(json_string);
  36. this->json_settings_string = json_string;
  37. return true;
  38. }
  39. void Settings::printJsonSettings(String json_string) {
  40. DynamicJsonDocument json(1024); // ArduinoJson v6
  41. if (deserializeJson(json, json_string)) {
  42. Serial.println("\nCould not parse json");
  43. }
  44. Serial.println("Settings\n----------------------------------------------");
  45. for (int i = 0; i < json["Settings"].size(); i++) {
  46. Serial.println("Name: " + json["Settings"][i]["name"].as<String>());
  47. Serial.println("Type: " + json["Settings"][i]["type"].as<String>());
  48. Serial.println("Value: " + json["Settings"][i]["value"].as<String>());
  49. Serial.println("----------------------------------------------");
  50. }
  51. }
  52. bool Settings::createDefaultSettings(fs::FS &fs) {
  53. Serial.println(F("Creating default settings file: settings.json"));
  54. File settingsFile = fs.open("/settings.json", FILE_WRITE);
  55. if (!settingsFile) {
  56. Serial.println(F("Failed to create settings file"));
  57. return false;
  58. }
  59. DynamicJsonDocument jsonBuffer(1024);
  60. String settings_string;
  61. jsonBuffer["Settings"][0]["name"] = "channel";
  62. jsonBuffer["Settings"][0]["type"] = "int";
  63. jsonBuffer["Settings"][0]["value"] = 11;
  64. jsonBuffer["Settings"][1]["name"] = "force pmkid";
  65. jsonBuffer["Settings"][1]["type"] = "bool";
  66. jsonBuffer["Settings"][1]["value"] = true;
  67. jsonBuffer["Settings"][2]["name"] = "save pcap";
  68. jsonBuffer["Settings"][2]["type"] = "bool";
  69. jsonBuffer["Settings"][2]["value"] = true;
  70. //jsonBuffer.printTo(settingsFile);
  71. if (serializeJson(jsonBuffer, settingsFile) == 0) {
  72. Serial.println(F("Failed to write to file"));
  73. }
  74. if (serializeJson(jsonBuffer, settings_string) == 0) {
  75. Serial.println(F("Failed to write to string"));
  76. }
  77. // Close the file
  78. settingsFile.close();
  79. this->printJsonSettings(settings_string);
  80. return true;
  81. }
  82. void Settings::main(uint32_t currentTime) {
  83. }