Просмотр исходного кода

Add specific setting retrieval

Just Call Me Koko 4 лет назад
Родитель
Сommit
bca0f70073
3 измененных файлов с 100 добавлено и 4 удалено
  1. 6 0
      esp32_marauder/esp32_marauder.ino
  2. 79 4
      esp32_marauder/settings.cpp
  3. 15 0
      esp32_marauder/settings.h

+ 6 - 0
esp32_marauder/esp32_marauder.ino

@@ -116,6 +116,12 @@ void setup()
 
   settings_obj.begin();
 
+  Serial.println("This is a test Channel: " + (String)settings_obj.loadSetting<uint8_t>("Channel"));
+  if (settings_obj.loadSetting<bool>("Force PMKID"))
+    Serial.println("This is a test Force PMKID: true");
+  else
+    Serial.println("This is a test Force PMKID: false");
+
   wifi_scan_obj.RunSetup();
 
   Serial.println(wifi_scan_obj.freeRAM());

+ 79 - 4
esp32_marauder/settings.cpp

@@ -46,6 +46,79 @@ bool Settings::begin() {
   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;
+}
+
 void Settings::printJsonSettings(String json_string) {
   DynamicJsonDocument json(1024); // ArduinoJson v6
 
@@ -75,15 +148,15 @@ bool Settings::createDefaultSettings(fs::FS &fs) {
   DynamicJsonDocument jsonBuffer(1024);
   String settings_string;
 
-  jsonBuffer["Settings"][0]["name"] = "channel";
-  jsonBuffer["Settings"][0]["type"] = "int";
+  jsonBuffer["Settings"][0]["name"] = "Channel";
+  jsonBuffer["Settings"][0]["type"] = "uint8_t";
   jsonBuffer["Settings"][0]["value"] = 11;
 
-  jsonBuffer["Settings"][1]["name"] = "force pmkid";
+  jsonBuffer["Settings"][1]["name"] = "Force PMKID";
   jsonBuffer["Settings"][1]["type"] = "bool";
   jsonBuffer["Settings"][1]["value"] = true;
 
-  jsonBuffer["Settings"][2]["name"] = "save pcap";
+  jsonBuffer["Settings"][2]["name"] = "Save PCAP";
   jsonBuffer["Settings"][2]["type"] = "bool";
   jsonBuffer["Settings"][2]["value"] = true;
 
@@ -98,6 +171,8 @@ bool Settings::createDefaultSettings(fs::FS &fs) {
   // Close the file
   settingsFile.close();
 
+  this->json_settings_string = settings_string;
+
   this->printJsonSettings(settings_string);
 
   return true;

+ 15 - 0
esp32_marauder/settings.h

@@ -22,6 +22,21 @@ class Settings {
   public:
     bool begin();
 
+    template <typename T>
+    T loadSetting(String name);
+
+    //template<>
+    //int loadSetting<int>(String key);
+    
+    //template<>
+    //String loadSetting<String>(String key);
+    
+    //template<>
+    //bool loadSetting<bool>(String key);
+    
+    //template<>
+    //uint8_t loadSetting<uint8_t>(String key);
+
     String getSettingsString();
     void main(uint32_t currentTime);
 };