From 6c79b559ccf1bce442aa9f1744118528fde09954 Mon Sep 17 00:00:00 2001 From: Peter Buchegger Date: Fri, 6 Nov 2020 21:32:59 +0100 Subject: [PATCH] fixing string config and some spaces --- src/configuration.cpp | 133 +++++++++++++++++++++++------------------- 1 file changed, 72 insertions(+), 61 deletions(-) diff --git a/src/configuration.cpp b/src/configuration.cpp index 05596fb..6a87901 100644 --- a/src/configuration.cpp +++ b/src/configuration.cpp @@ -13,7 +13,6 @@ ConfigurationManagement::ConfigurationManagement(String FilePath) if(!SPIFFS.begin()) { Serial.println("[ERROR] Formating SPIFFS was not okay!"); - return; } } } @@ -37,47 +36,59 @@ Configuration ConfigurationManagement::readConfiguration() file.close(); Configuration conf; - conf.callsign = data["callsign"].as(); - conf.wifi.active = data["wifi"]["active"] | false; - JsonArray aps = data["wifi"]["AP"].as(); + if(data.containsKey("callsign")) + conf.callsign = data["callsign"].as(); + + conf.wifi.active = data["wifi"]["active"] | false; + JsonArray aps = data["wifi"]["AP"].as(); for(JsonVariant v : aps) { Configuration::Wifi::AP ap; - ap.SSID = v["SSID"].as(); - ap.password = v["password"].as(); + ap.SSID = v["SSID"].as(); + ap.password = v["password"].as(); conf.wifi.APs.push_back(ap); } - conf.beacon.message = data["beacon"]["message"].as(); - conf.beacon.positionLatitude = data["beacon"]["position"]["latitude"] | 0.0; - conf.beacon.positionLongitude = data["beacon"]["position"]["longitude"] | 0.0; - conf.aprs_is.active = data["aprs_is"]["active"] | false; - conf.aprs_is.password = data["aprs_is"]["password"].as(); - conf.aprs_is.server = data["aprs_is"]["server"].as(); - conf.aprs_is.port = data["aprs_is"]["port"] | 14580; - conf.aprs_is.beacon = data["aprs_is"]["beacon"] | true; - conf.aprs_is.beaconTimeout = data["aprs_is"]["beacon_timeout"] | 15; - conf.digi.active = data["digi"]["active"] | false; - conf.digi.forwardTimeout = data["digi"]["forward_timeout"] | 5; - conf.digi.beacon = data["digi"]["beacon"] | true; - conf.digi.beaconTimeout = data["digi"]["beacon_timeout"] | 30; + if(data.containsKey("beacon") && data.containsKey("message")) + conf.beacon.message = data["beacon"]["message"].as(); + conf.beacon.positionLatitude = data["beacon"]["position"]["latitude"] | 0.0; + conf.beacon.positionLongitude = data["beacon"]["position"]["longitude"] | 0.0; + conf.aprs_is.active = data["aprs_is"]["active"] | false; + if(data.containsKey("aprs_is") && data.containsKey("password")) + conf.aprs_is.password = data["aprs_is"]["password"].as(); + if(data.containsKey("aprs_is") && data.containsKey("server")) + conf.aprs_is.server = data["aprs_is"]["server"].as(); + conf.aprs_is.port = data["aprs_is"]["port"] | 14580; + conf.aprs_is.beacon = data["aprs_is"]["beacon"] | true; + conf.aprs_is.beaconTimeout = data["aprs_is"]["beacon_timeout"] | 15; + conf.digi.active = data["digi"]["active"] | false; + conf.digi.forwardTimeout = data["digi"]["forward_timeout"] | 5; + conf.digi.beacon = data["digi"]["beacon"] | true; + conf.digi.beaconTimeout = data["digi"]["beacon_timeout"] | 30; - conf.lora.frequencyRx = data["lora"]["frequency_rx"] | 433775000; - conf.lora.frequencyTx = data["lora"]["frequency_tx"] | 433775000; - conf.lora.power = data["lora"]["power"] | 20; - conf.lora.spreadingFactor = data["lora"]["spreading_factor"] | 12; - conf.lora.signalBandwidth = data["lora"]["signal_bandwidth"] | 125000; - conf.lora.codingRate4 = data["lora"]["coding_rate4"] | 5; - conf.display.alwaysOn = data["display"]["always_on"] | true; - conf.display.timeout = data["display"]["timeout"] | 10; - conf.display.overwritePin = data["display"]["overwrite_pin"] | 0; + conf.lora.frequencyRx = data["lora"]["frequency_rx"] | 433775000; + conf.lora.frequencyTx = data["lora"]["frequency_tx"] | 433775000; + conf.lora.power = data["lora"]["power"] | 20; + conf.lora.spreadingFactor = data["lora"]["spreading_factor"] | 12; + conf.lora.signalBandwidth = data["lora"]["signal_bandwidth"] | 125000; + conf.lora.codingRate4 = data["lora"]["coding_rate4"] | 5; + conf.display.alwaysOn = data["display"]["always_on"] | true; + conf.display.timeout = data["display"]["timeout"] | 10; + conf.display.overwritePin = data["display"]["overwrite_pin"] | 0; - conf.ftp.active = data["ftp"]["active"] | false; - JsonArray users = data["ftp"]["user"].as(); + conf.ftp.active = data["ftp"]["active"] | false; + JsonArray users = data["ftp"]["user"].as(); for(JsonVariant u : users) { Configuration::Ftp::User us; - us.name = u["name"].as(); - us.password = u["password"].as(); + us.name = u["name"].as(); + us.password = u["password"].as(); + conf.ftp.users.push_back(us); + } + if(conf.ftp.users.empty()) + { + Configuration::Ftp::User us; + us.name = "ftp"; + us.password = "ftp"; conf.ftp.users.push_back(us); } @@ -97,44 +108,44 @@ void ConfigurationManagement::writeConfiguration(Configuration conf) } DynamicJsonDocument data(2048); - data["callsign"] = conf.callsign; - data["wifi"]["active"] = conf.wifi.active; + data["callsign"] = conf.callsign; + data["wifi"]["active"] = conf.wifi.active; JsonArray aps = data["wifi"].createNestedArray("AP"); for(Configuration::Wifi::AP ap : conf.wifi.APs) { JsonObject v = aps.createNestedObject(); - v["SSID"] = ap.SSID; - v["password"] = ap.password; + v["SSID"] = ap.SSID; + v["password"] = ap.password; } - data["beacon"]["message"] = conf.beacon.message; - data["beacon"]["position"]["latitude"] = conf.beacon.positionLatitude; - data["beacon"]["position"]["longitude"] = conf.beacon.positionLongitude; - data["aprs_is"]["active"] = conf.aprs_is.active; - data["aprs_is"]["password"] = conf.aprs_is.password; - data["aprs_is"]["server"] = conf.aprs_is.server; - data["aprs_is"]["port"] = conf.aprs_is.port; - data["aprs_is"]["beacon"] = conf.aprs_is.beacon; - data["aprs_is"]["beacon_timeout"] = conf.aprs_is.beaconTimeout; - data["digi"]["active"] = conf.digi.active; - data["digi"]["forward_timeout"] = conf.digi.forwardTimeout; - data["digi"]["beacon"] = conf.digi.beacon; - data["digi"]["beacon_timeout"] = conf.digi.beaconTimeout; - data["lora"]["frequency_rx"] = conf.lora.frequencyRx; - data["lora"]["frequency_tx"] = conf.lora.frequencyTx; - data["lora"]["power"] = conf.lora.power; - data["lora"]["spreading_factor"] = conf.lora.spreadingFactor; - data["lora"]["signal_bandwidth"] = conf.lora.signalBandwidth; - data["lora"]["coding_rate4"] = conf.lora.codingRate4; - data["display"]["always_on"] = conf.display.alwaysOn; - data["display"]["timeout"] = conf.display.timeout; - data["display"]["overwrite_pin"] = conf.display.overwritePin; - data["ftp"]["active"] = conf.ftp.active; + data["beacon"]["message"] = conf.beacon.message; + data["beacon"]["position"]["latitude"] = conf.beacon.positionLatitude; + data["beacon"]["position"]["longitude"] = conf.beacon.positionLongitude; + data["aprs_is"]["active"] = conf.aprs_is.active; + data["aprs_is"]["password"] = conf.aprs_is.password; + data["aprs_is"]["server"] = conf.aprs_is.server; + data["aprs_is"]["port"] = conf.aprs_is.port; + data["aprs_is"]["beacon"] = conf.aprs_is.beacon; + data["aprs_is"]["beacon_timeout"] = conf.aprs_is.beaconTimeout; + data["digi"]["active"] = conf.digi.active; + data["digi"]["forward_timeout"] = conf.digi.forwardTimeout; + data["digi"]["beacon"] = conf.digi.beacon; + data["digi"]["beacon_timeout"] = conf.digi.beaconTimeout; + data["lora"]["frequency_rx"] = conf.lora.frequencyRx; + data["lora"]["frequency_tx"] = conf.lora.frequencyTx; + data["lora"]["power"] = conf.lora.power; + data["lora"]["spreading_factor"] = conf.lora.spreadingFactor; + data["lora"]["signal_bandwidth"] = conf.lora.signalBandwidth; + data["lora"]["coding_rate4"] = conf.lora.codingRate4; + data["display"]["always_on"] = conf.display.alwaysOn; + data["display"]["timeout"] = conf.display.timeout; + data["display"]["overwrite_pin"] = conf.display.overwritePin; + data["ftp"]["active"] = conf.ftp.active; JsonArray users = data["ftp"].createNestedArray("user"); for(Configuration::Ftp::User u : conf.ftp.users) { JsonObject v = users.createNestedObject(); - v["name"] = u.name; - v["password"] = u.password; + v["name"] = u.name; + v["password"] = u.password; } serializeJson(data, file);