diff --git a/data/igate_conf.json b/data/igate_conf.json index 636bdf0..3332a7f 100644 --- a/data/igate_conf.json +++ b/data/igate_conf.json @@ -39,14 +39,17 @@ "beaconOnRxFreq": false }, "lora": { - "txFreq": 433775000, + "rxActive": true, "rxFreq": 433775000, - "spreadingFactor": 12, - "signalBandwidth": 125000, - "codingRate4": 5, - "power": 20, + "rxSpreadingFactor": 12, + "rxCodingRate4": 5, + "rxSignalBandwidth": 125000, "txActive": false, - "rxActive": true + "txFreq": 433775000, + "txSpreadingFactor": 12, + "txCodingRate4": 5, + "txSignalBandwidth": 125000, + "power": 20 }, "display": { "alwaysOn": true, diff --git a/include/configuration.h b/include/configuration.h index e38b316..a3be83d 100644 --- a/include/configuration.h +++ b/include/configuration.h @@ -73,13 +73,16 @@ public: class LoraModule { public: - long txFreq; - long rxFreq; - bool txActive; bool rxActive; - int spreadingFactor; - long signalBandwidth; - int codingRate4; + long rxFreq; + int rxSpreadingFactor; + int rxCodingRate4; + long rxSignalBandwidth; + bool txActive; + long txFreq; + int txSpreadingFactor; + int txCodingRate4; + long txSignalBandwidth; int power; }; diff --git a/src/configuration.cpp b/src/configuration.cpp index 9524bc8..9b5461a 100644 --- a/src/configuration.cpp +++ b/src/configuration.cpp @@ -89,14 +89,17 @@ bool Configuration::writeFile() { #endif data["digi"]["beaconOnRxFreq"] = digi.beaconOnRxFreq; - data["lora"]["rxFreq"] = loramodule.rxFreq; - data["lora"]["txFreq"] = loramodule.txFreq; - data["lora"]["spreadingFactor"] = loramodule.spreadingFactor; - data["lora"]["signalBandwidth"] = loramodule.signalBandwidth; - data["lora"]["codingRate4"] = loramodule.codingRate4; - data["lora"]["power"] = loramodule.power; - data["lora"]["txActive"] = loramodule.txActive; data["lora"]["rxActive"] = loramodule.rxActive; + data["lora"]["rxFreq"] = loramodule.rxFreq; + data["lora"]["rxSpreadingFactor"] = loramodule.rxSpreadingFactor; + data["lora"]["rxCodingRate4"] = loramodule.rxCodingRate4; + data["lora"]["rxSignalBandwidth"] = loramodule.rxSignalBandwidth; + data["lora"]["txActive"] = loramodule.txActive; + data["lora"]["txFreq"] = loramodule.txFreq; + data["lora"]["txSpreadingFactor"] = loramodule.txSpreadingFactor; + data["lora"]["txCodingRate4"] = loramodule.txCodingRate4; + data["lora"]["txSignalBandwidth"] = loramodule.txSignalBandwidth; + data["lora"]["power"] = loramodule.power; data["display"]["alwaysOn"] = display.alwaysOn; data["display"]["timeout"] = display.timeout; @@ -259,23 +262,29 @@ bool Configuration::readFile() { if (digi.ecoMode == 1) digi.ecoMode = 2; #endif - if (!data["lora"].containsKey("txFreq") || + if (!data["lora"].containsKey("rxActive") || !data["lora"].containsKey("rxFreq") || - !data["lora"].containsKey("spreadingFactor") || - !data["lora"].containsKey("signalBandwidth") || - !data["lora"].containsKey("codingRate4") || - !data["lora"].containsKey("power") || + !data["lora"].containsKey("rxSpreadingFactor") || + !data["lora"].containsKey("rxCodingRate4") || + !data["lora"].containsKey("rxSignalBandwidth") || !data["lora"].containsKey("txActive") || - !data["lora"].containsKey("rxActive")) needsRewrite = true; - loramodule.txFreq = data["lora"]["txFreq"] | 433775000; + !data["lora"].containsKey("txFreq") || + !data["lora"].containsKey("txSpreadingFactor") || + !data["lora"].containsKey("txCodingRate4") || + !data["lora"].containsKey("txSignalBandwidth") || + !data["lora"].containsKey("power")) needsRewrite = true; + loramodule.rxActive = data["lora"]["rxActive"] | true; loramodule.rxFreq = data["lora"]["rxFreq"] | 433775000; - loramodule.spreadingFactor = data["lora"]["spreadingFactor"] | 12; - loramodule.signalBandwidth = data["lora"]["signalBandwidth"] | 125000; - loramodule.codingRate4 = data["lora"]["codingRate4"] | 5; - loramodule.power = data["lora"]["power"] | 20; + loramodule.rxSpreadingFactor = data["lora"]["rxSpreadingFactor"] | 12; + loramodule.rxCodingRate4 = data["lora"]["rxCodingRate4"] | 5; + loramodule.rxSignalBandwidth = data["lora"]["rxSignalBandwidth"] | 125000; loramodule.txActive = data["lora"]["txActive"] | false; - loramodule.rxActive = data["lora"]["rxActive"] | false; - + loramodule.txFreq = data["lora"]["txFreq"] | 433775000; + loramodule.txSpreadingFactor = data["lora"]["txSpreadingFactor"] | 12; + loramodule.txCodingRate4 = data["lora"]["txCodingRate4"] | 5; + loramodule.txSignalBandwidth = data["lora"]["txSignalBandwidth"] | 125000; + loramodule.power = data["lora"]["power"] | 20; + if (!data["display"].containsKey("alwaysOn") || !data["display"].containsKey("timeout") || !data["display"].containsKey("turn180")) needsRewrite = true; @@ -445,14 +454,17 @@ void Configuration::setDefaultValues() { digi.ecoMode = 0; digi.beaconOnRxFreq = false; - loramodule.txFreq = 433775000; - loramodule.rxFreq = 433775000; - loramodule.spreadingFactor = 12; - loramodule.signalBandwidth = 125000; - loramodule.codingRate4 = 5; - loramodule.power = 20; - loramodule.txActive = false; loramodule.rxActive = true; + loramodule.rxFreq = 433775000; + loramodule.rxSpreadingFactor = 12; + loramodule.rxCodingRate4 = 5; + loramodule.rxSignalBandwidth = 125000; + loramodule.txActive = false; + loramodule.txFreq = 433775000; + loramodule.txSpreadingFactor = 12; + loramodule.txCodingRate4 = 5; + loramodule.txSignalBandwidth = 125000; + loramodule.power = 20; display.alwaysOn = true; display.timeout = 4; diff --git a/src/lora_utils.cpp b/src/lora_utils.cpp index 52e6e51..db1bd07 100644 --- a/src/lora_utils.cpp +++ b/src/lora_utils.cpp @@ -93,10 +93,10 @@ namespace LoRa_Utils { #if defined(HAS_SX1278) || defined(HAS_SX1276) radio.setDio0Action(setFlag, RISING); #endif - radio.setSpreadingFactor(Config.loramodule.spreadingFactor); - float signalBandwidth = Config.loramodule.signalBandwidth/1000; - radio.setBandwidth(signalBandwidth); - radio.setCodingRate(Config.loramodule.codingRate4); + radio.setSpreadingFactor(Config.loramodule.rxSpreadingFactor); + radio.setCodingRate(Config.loramodule.rxCodingRate4); + float signalBandwidth = Config.loramodule.rxSignalBandwidth/1000; + radio.setBandwidth(signalBandwidth); radio.setCRC(true); #if (defined(RADIO_RXEN) && defined(RADIO_TXEN)) // QRP Labs LightGateway has 400M22S (SX1268) @@ -132,12 +132,18 @@ namespace LoRa_Utils { delay(500); float freq = (float)Config.loramodule.txFreq / 1000000; radio.setFrequency(freq); + radio.setSpreadingFactor(Config.loramodule.txSpreadingFactor); + radio.setCodingRate(Config.loramodule.txCodingRate4); + radio.setBandwidth(Config.loramodule.txSignalBandwidth); } void changeFreqRx() { delay(500); float freq = (float)Config.loramodule.rxFreq / 1000000; radio.setFrequency(freq); + radio.setSpreadingFactor(Config.loramodule.rxSpreadingFactor); + radio.setCodingRate(Config.loramodule.rxCodingRate4); + radio.setBandwidth(Config.loramodule.rxSignalBandwidth); } void sendNewPacket(const String& newPacket) { diff --git a/src/web_utils.cpp b/src/web_utils.cpp index 0d3a422..b3d4346 100644 --- a/src/web_utils.cpp +++ b/src/web_utils.cpp @@ -200,14 +200,18 @@ namespace WEB_Utils { Config.digi.ecoMode = getParamIntSafe("digi.ecoMode", Config.digi.ecoMode); Config.digi.beaconOnRxFreq = request->hasParam("digi.beaconOnRxFreq", true); - Config.loramodule.txFreq = getParamIntSafe("lora.txFreq", Config.loramodule.txFreq); - Config.loramodule.rxFreq = getParamIntSafe("lora.rxFreq", Config.loramodule.rxFreq); - Config.loramodule.spreadingFactor = getParamIntSafe("lora.spreadingFactor", Config.loramodule.spreadingFactor); - Config.loramodule.signalBandwidth = getParamIntSafe("lora.signalBandwidth", Config.loramodule.signalBandwidth); - Config.loramodule.codingRate4 = getParamIntSafe("lora.codingRate4", Config.loramodule.codingRate4); - Config.loramodule.power = getParamIntSafe("lora.power", Config.loramodule.power); - Config.loramodule.txActive = request->hasParam("lora.txActive", true); + Config.loramodule.rxActive = request->hasParam("lora.rxActive", true); + Config.loramodule.rxFreq = getParamIntSafe("lora.rxFreq", Config.loramodule.rxFreq); + Config.loramodule.rxSpreadingFactor = getParamIntSafe("lora.rxSpreadingFactor", Config.loramodule.rxSpreadingFactor); + Config.loramodule.rxCodingRate4 = getParamIntSafe("lora.rxCodingRate4", Config.loramodule.rxCodingRate4); + Config.loramodule.rxSignalBandwidth = getParamIntSafe("lora.rxSignalBandwidth", Config.loramodule.rxSignalBandwidth); + Config.loramodule.txActive = request->hasParam("lora.txActive", true); + Config.loramodule.txFreq = getParamIntSafe("lora.txFreq", Config.loramodule.txFreq); + Config.loramodule.txSpreadingFactor = getParamIntSafe("lora.txSpreadingFactor", Config.loramodule.txSpreadingFactor); + Config.loramodule.txCodingRate4 = getParamIntSafe("lora.txCodingRate4", Config.loramodule.txCodingRate4); + Config.loramodule.txSignalBandwidth = getParamIntSafe("lora.txSignalBandwidth", Config.loramodule.txSignalBandwidth); + Config.loramodule.power = getParamIntSafe("lora.power", Config.loramodule.power); Config.display.alwaysOn = request->hasParam("display.alwaysOn", true);