From aa1dd478106443c6adf167562425353ea1a76b19 Mon Sep 17 00:00:00 2001 From: Peter Buchegger Date: Fri, 6 Nov 2020 00:36:12 +0100 Subject: [PATCH 1/6] remove version tag --- src/configuration.cpp | 1 - src/configuration.h | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/configuration.cpp b/src/configuration.cpp index 30d117c..3cffa1a 100644 --- a/src/configuration.cpp +++ b/src/configuration.cpp @@ -106,7 +106,6 @@ void ConfigurationManagement::writeConfiguration(Configuration conf) } DynamicJsonDocument data(2048); - data["version"] = conf.version; data["callsign"] = conf.callsign; data["wifi"]["active"] = conf.wifi.active; JsonArray aps = data["wifi"].createNestedArray("AP"); diff --git a/src/configuration.h b/src/configuration.h index c73f615..8e7e101 100644 --- a/src/configuration.h +++ b/src/configuration.h @@ -98,9 +98,8 @@ public: std::list users; }; - Configuration() : version(4), callsign("NOCALL-10") {}; + Configuration() : callsign("NOCALL-10") {}; - int version; String callsign; Wifi wifi; Beacon beacon; From 53bbc8680103248a5e575b03b5cd1650a410b028 Mon Sep 17 00:00:00 2001 From: Peter Buchegger Date: Fri, 6 Nov 2020 00:37:40 +0100 Subject: [PATCH 2/6] remove writing config if file not exists --- src/configuration.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/configuration.cpp b/src/configuration.cpp index 3cffa1a..1d10731 100644 --- a/src/configuration.cpp +++ b/src/configuration.cpp @@ -16,12 +16,7 @@ ConfigurationManagement::ConfigurationManagement(String FilePath) return; } } - if(!SPIFFS.exists(mFilePath)) - { - Configuration conf; - writeConfiguration(conf); } -} Configuration ConfigurationManagement::readConfiguration() { @@ -32,7 +27,11 @@ Configuration ConfigurationManagement::readConfiguration() return Configuration(); } DynamicJsonDocument data(2048); - deserializeJson(data, file); + DeserializationError error = deserializeJson(data, file); + if(error) + { + Serial.println("Failed to read file, using default configuration."); + } //serializeJson(data, Serial); //Serial.println(); file.close(); From 0455b9d0903a79066356a5b82d573a83c4438628 Mon Sep 17 00:00:00 2001 From: Peter Buchegger Date: Fri, 6 Nov 2020 00:38:11 +0100 Subject: [PATCH 3/6] add first default reading --- src/configuration.cpp | 66 +++++++++++++++++++------------------------ 1 file changed, 29 insertions(+), 37 deletions(-) diff --git a/src/configuration.cpp b/src/configuration.cpp index 1d10731..05596fb 100644 --- a/src/configuration.cpp +++ b/src/configuration.cpp @@ -16,7 +16,7 @@ ConfigurationManagement::ConfigurationManagement(String FilePath) return; } } - } +} Configuration ConfigurationManagement::readConfiguration() { @@ -38,7 +38,7 @@ Configuration ConfigurationManagement::readConfiguration() Configuration conf; conf.callsign = data["callsign"].as(); - conf.wifi.active = data["wifi"]["active"]; + conf.wifi.active = data["wifi"]["active"] | false; JsonArray aps = data["wifi"]["AP"].as(); for(JsonVariant v : aps) { @@ -48,45 +48,37 @@ Configuration ConfigurationManagement::readConfiguration() conf.wifi.APs.push_back(ap); } conf.beacon.message = data["beacon"]["message"].as(); - conf.beacon.positionLatitude = data["beacon"]["position"]["latitude"]; - conf.beacon.positionLongitude = data["beacon"]["position"]["longitude"]; - conf.aprs_is.active = data["aprs_is"]["active"]; + 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"]; - conf.aprs_is.beacon = data["aprs_is"]["beacon"]; - conf.aprs_is.beaconTimeout = data["aprs_is"]["beacon_timeout"]; - conf.digi.active = data["digi"]["active"]; - conf.digi.forwardTimeout = data["digi"]["forward_timeout"]; - conf.digi.beacon = data["digi"]["beacon"]; - conf.digi.beaconTimeout = data["digi"]["beacon_timeout"]; + 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["version"] >= 2) + 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(); + for(JsonVariant u : users) { - conf.lora.frequencyRx = data["lora"]["frequency_rx"]; - conf.lora.frequencyTx = data["lora"]["frequency_tx"]; - conf.lora.power = data["lora"]["power"]; - conf.display.alwaysOn = data["display"]["always_on"]; - conf.display.timeout = data["display"]["timeout"]; - conf.display.overwritePin = data["display"]["overwrite_pin"]; - } - if(data["version"] >= 3) - { - conf.lora.spreadingFactor = data["lora"]["spreading_factor"]; - conf.lora.signalBandwidth = data["lora"]["signal_bandwidth"]; - conf.lora.codingRate4 = data["lora"]["coding_rate4"]; - } - if(data["version"] >= 4) - { - conf.ftp.active = data["ftp"]["active"]; - JsonArray users = data["ftp"]["user"].as(); - for(JsonVariant u : users) - { - Configuration::Ftp::User us; - us.name = u["name"].as(); - us.password = u["password"].as(); - conf.ftp.users.push_back(us); - } + Configuration::Ftp::User us; + us.name = u["name"].as(); + us.password = u["password"].as(); + conf.ftp.users.push_back(us); } // update config in memory to get the new fields: From 6c79b559ccf1bce442aa9f1744118528fde09954 Mon Sep 17 00:00:00 2001 From: Peter Buchegger Date: Fri, 6 Nov 2020 21:32:59 +0100 Subject: [PATCH 4/6] 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); From edf168e523fba3f19a508a1182f8ebe12a74414b Mon Sep 17 00:00:00 2001 From: Peter Buchegger Date: Fri, 6 Nov 2020 21:42:09 +0100 Subject: [PATCH 5/6] dummy change --- src/configuration.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/configuration.cpp b/src/configuration.cpp index 6a87901..92fa1e3 100644 --- a/src/configuration.cpp +++ b/src/configuration.cpp @@ -2,7 +2,6 @@ #include "configuration.h" - ConfigurationManagement::ConfigurationManagement(String FilePath) : mFilePath(FilePath) { From a91ee0c97917f3982434ef6c945b5a8bcf2ba589 Mon Sep 17 00:00:00 2001 From: Peter Buchegger Date: Fri, 6 Nov 2020 21:44:09 +0100 Subject: [PATCH 6/6] remove braches in workflow --- .github/workflows/main.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index e8de1af..b940d07 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,10 +1,6 @@ name: PlatformIO CI -on: - push: - branches: [ master ] - pull_request: - branches: [ master ] +on: [push, pull_request] jobs: PlatformIO-Check: