| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305 |
- #include "settings.h"
- String Settings::getSettingsString() {
- return this->json_settings_string;
- }
- bool Settings::begin() {
- if(!SPIFFS.begin(FORMAT_SPIFFS_IF_FAILED)){
- Serial.println("Settings SPIFFS Mount Failed");
- return false;
- }
- File settingsFile;
- //SPIFFS.remove("/settings.json"); // NEED TO REMOVE THIS LINE
- if (SPIFFS.exists("/settings.json")) {
- settingsFile = SPIFFS.open("/settings.json", FILE_READ);
-
- if (!settingsFile) {
- settingsFile.close();
- Serial.println(F("Could not find settings file"));
- if (this->createDefaultSettings(SPIFFS))
- return true;
- else
- return false;
- }
- }
- else {
- Serial.println("Settings file does not exist");
- if (this->createDefaultSettings(SPIFFS))
- return true;
- else
- return false;
- }
- String json_string;
- DynamicJsonDocument jsonBuffer(1024);
- DeserializationError error = deserializeJson(jsonBuffer, settingsFile);
- serializeJson(jsonBuffer, json_string);
- //Serial.println("Settings: " + (String)json_string + "\n");
- //this->printJsonSettings(json_string);
- this->json_settings_string = json_string;
-
- return true;
- }
- template <typename T>
- T Settings::loadSetting(String key) {}
- // Get type int settings
- template<>
- int Settings::loadSetting<int>(String key) {
- DynamicJsonDocument json(1024); // ArduinoJson v6
- if (deserializeJson(json, this->json_settings_string)) {
- Serial.println("\nCould not parse json");
- }
- for (int i = 0; i < json["Settings"].size(); i++) {
- if (json["Settings"][i]["name"].as<String>() == key)
- return json["Settings"][i]["value"];
- }
- return 0;
- }
- // Get type string settings
- template<>
- String Settings::loadSetting<String>(String key) {
- //return this->json_settings_string;
-
- DynamicJsonDocument json(1024); // ArduinoJson v6
- if (deserializeJson(json, this->json_settings_string)) {
- Serial.println("\nCould not parse json");
- }
- for (int i = 0; i < json["Settings"].size(); i++) {
- if (json["Settings"][i]["name"].as<String>() == key)
- return json["Settings"][i]["value"];
- }
- return "";
- }
- // Get type bool settings
- template<>
- bool Settings::loadSetting<bool>(String key) {
- DynamicJsonDocument json(1024); // ArduinoJson v6
- if (deserializeJson(json, this->json_settings_string)) {
- Serial.println("\nCould not parse json");
- }
- for (int i = 0; i < json["Settings"].size(); i++) {
- if (json["Settings"][i]["name"].as<String>() == key)
- return json["Settings"][i]["value"];
- }
- return false;
- }
- //Get type uint8_t settings
- template<>
- uint8_t Settings::loadSetting<uint8_t>(String key) {
- DynamicJsonDocument json(1024); // ArduinoJson v6
- if (deserializeJson(json, this->json_settings_string)) {
- Serial.println("\nCould not parse json");
- }
- for (int i = 0; i < json["Settings"].size(); i++) {
- if (json["Settings"][i]["name"].as<String>() == key)
- return json["Settings"][i]["value"];
- }
- return 0;
- }
- template <typename T>
- T Settings::saveSetting(String key, bool value) {}
- template<>
- bool Settings::saveSetting<bool>(String key, bool value) {
- DynamicJsonDocument json(1024); // ArduinoJson v6
- if (deserializeJson(json, this->json_settings_string)) {
- Serial.println("\nCould not parse json");
- }
- String settings_string;
- for (int i = 0; i < json["Settings"].size(); i++) {
- if (json["Settings"][i]["name"].as<String>() == key) {
- json["Settings"][i]["value"] = value;
- Serial.println("Saving setting...");
- File settingsFile = SPIFFS.open("/settings.json", FILE_WRITE);
- if (!settingsFile) {
- Serial.println(F("Failed to create settings file"));
- return false;
- }
- if (serializeJson(json, settingsFile) == 0) {
- Serial.println(F("Failed to write to file"));
- }
- if (serializeJson(json, settings_string) == 0) {
- Serial.println(F("Failed to write to string"));
- }
-
- // Close the file
- settingsFile.close();
-
- this->json_settings_string = settings_string;
-
- this->printJsonSettings(settings_string);
-
- return true;
- }
- }
- return false;
- }
- bool Settings::toggleSetting(String key) {
- DynamicJsonDocument json(1024); // ArduinoJson v6
- if (deserializeJson(json, this->json_settings_string)) {
- Serial.println("\nCould not parse json");
- }
- for (int i = 0; i < json["Settings"].size(); i++) {
- if (json["Settings"][i]["name"].as<String>() == key) {
- if (json["Settings"][i]["value"]) {
- saveSetting<bool>(key, false);
- Serial.println("Setting value to false");
- return false;
- }
- else {
- saveSetting<bool>(key, true);
- Serial.println("Setting value to true");
- return true;
- }
- return false;
- }
- }
- }
- String Settings::setting_index_to_name(int i) {
- DynamicJsonDocument json(1024); // ArduinoJson v6
- if (deserializeJson(json, this->json_settings_string)) {
- Serial.println("\nCould not parse json");
- }
- return json["Settings"][i]["name"];
- }
- int Settings::getNumberSettings() {
- DynamicJsonDocument json(1024); // ArduinoJson v6
- if (deserializeJson(json, this->json_settings_string)) {
- Serial.println("\nCould not parse json");
- }
- return json["Settings"].size();
- }
- String Settings::getSettingType(String key) {
- DynamicJsonDocument json(1024); // ArduinoJson v6
- if (deserializeJson(json, this->json_settings_string)) {
- Serial.println("\nCould not parse json");
- }
-
- for (int i = 0; i < json["Settings"].size(); i++) {
- if (json["Settings"][i]["name"].as<String>() == key)
- return json["Settings"][i]["type"];
- }
- }
- void Settings::printJsonSettings(String json_string) {
- DynamicJsonDocument json(1024); // ArduinoJson v6
- if (deserializeJson(json, json_string)) {
- Serial.println("\nCould not parse json");
- }
-
- Serial.println("Settings\n----------------------------------------------");
- for (int i = 0; i < json["Settings"].size(); i++) {
- Serial.println("Name: " + json["Settings"][i]["name"].as<String>());
- Serial.println("Type: " + json["Settings"][i]["type"].as<String>());
- Serial.println("Value: " + json["Settings"][i]["value"].as<String>());
- Serial.println("----------------------------------------------");
- }
- }
- bool Settings::createDefaultSettings(fs::FS &fs) {
- Serial.println(F("Creating default settings file: settings.json"));
-
- File settingsFile = fs.open("/settings.json", FILE_WRITE);
- if (!settingsFile) {
- Serial.println(F("Failed to create settings file"));
- return false;
- }
- DynamicJsonDocument jsonBuffer(1024);
- String settings_string;
- //jsonBuffer["Settings"][0]["name"] = "Channel";
- //jsonBuffer["Settings"][0]["type"] = "uint8_t";
- //jsonBuffer["Settings"][0]["value"] = 11;
- //jsonBuffer["Settings"][0]["range"]["min"] = 1;
- //jsonBuffer["Settings"][0]["range"]["max"] = 14;
- //jsonBuffer["Settings"][1]["name"] = "Channel Hop Delay";
- //jsonBuffer["Settings"][1]["type"] = "int";
- //jsonBuffer["Settings"][1]["value"] = 1;
- //jsonBuffer["Settings"][1]["range"]["min"] = 1;
- //jsonBuffer["Settings"][1]["range"]["max"] = 10;
- jsonBuffer["Settings"][0]["name"] = "ForcePMKID";
- jsonBuffer["Settings"][0]["type"] = "bool";
- jsonBuffer["Settings"][0]["value"] = true;
- jsonBuffer["Settings"][0]["range"]["min"] = false;
- jsonBuffer["Settings"][0]["range"]["max"] = true;
- jsonBuffer["Settings"][1]["name"] = "ForceProbe";
- jsonBuffer["Settings"][1]["type"] = "bool";
- jsonBuffer["Settings"][1]["value"] = true;
- jsonBuffer["Settings"][1]["range"]["min"] = false;
- jsonBuffer["Settings"][1]["range"]["max"] = true;
- jsonBuffer["Settings"][2]["name"] = "SavePCAP";
- jsonBuffer["Settings"][2]["type"] = "bool";
- jsonBuffer["Settings"][2]["value"] = true;
- jsonBuffer["Settings"][2]["range"]["min"] = false;
- jsonBuffer["Settings"][2]["range"]["max"] = true;
- //jsonBuffer.printTo(settingsFile);
- if (serializeJson(jsonBuffer, settingsFile) == 0) {
- Serial.println(F("Failed to write to file"));
- }
- if (serializeJson(jsonBuffer, settings_string) == 0) {
- Serial.println(F("Failed to write to string"));
- }
- // Close the file
- settingsFile.close();
- this->json_settings_string = settings_string;
- this->printJsonSettings(settings_string);
- return true;
- }
- void Settings::main(uint32_t currentTime) {
-
- }
|