diff --git a/data/igate_conf.json b/data/igate_conf.json index 7324498..ab32f61 100644 --- a/data/igate_conf.json +++ b/data/igate_conf.json @@ -17,7 +17,7 @@ "path": "WIDE1-1", "sendViaAPRSIS": false, "sendViaRF": false, - "beaconOnRxFreq": false, + "beaconFreq": 1, "statusActive": false, "statusPacket": "", "gpsActive": false, diff --git a/data_embed/index.html b/data_embed/index.html index f8b0467..218c807 100644 --- a/data_embed/index.html +++ b/data_embed/index.html @@ -569,29 +569,26 @@
-
- +
+
+ for="beacon.beaconFreq" + class="form-label"> + (Select LoRa Beacon Frequency) +
diff --git a/data_embed/script.js b/data_embed/script.js index 382913d..326f388 100644 --- a/data_embed/script.js +++ b/data_embed/script.js @@ -119,8 +119,11 @@ function loadSettings(settings) { document.getElementById("beacon.interval").value = settings.beacon.interval; document.getElementById("other.rememberStationTime").value = settings.other.rememberStationTime; document.getElementById("beacon.sendViaAPRSIS").checked = settings.beacon.sendViaAPRSIS; + document.getElementById("beacon.sendViaRF").checked = settings.beacon.sendViaRF; - document.getElementById("beacon.beaconOnRxFreq").value = settings.beacon.beaconOnRxFreq; + document.getElementById("beacon.beaconFreq").value = settings.beacon.beaconFreq; + BeaconingViaRFCheckbox.checked = settings.beacon.sendViaRF; + BeaconingFrequency.disabled = !BeaconingViaRFCheckbox.checked; document.getElementById("beacon.statusActive").checked = settings.beacon.statusActive; document.getElementById("beacon.statusPacket").value = settings.beacon.statusPacket; @@ -306,6 +309,12 @@ function updateImage() { } } +// Beaconing Switches +const BeaconingViaRFCheckbox = document.querySelector('input[name="beacon.sendViaRF"]'); +const BeaconingFrequency = document.querySelector('select[name="beacon.beaconFreq"]'); +BeaconingViaRFCheckbox.addEventListener("change", function() { + BeaconingFrequency.disabled = !this.checked; +}); // Status Switch const StatusCheckbox = document.querySelector('input[name="beacon.statusActive"]'); diff --git a/include/configuration.h b/include/configuration.h index 0c78990..4985da2 100644 --- a/include/configuration.h +++ b/include/configuration.h @@ -47,7 +47,7 @@ public: String path; bool sendViaAPRSIS; bool sendViaRF; - bool beaconOnRxFreq; + int beaconFreq; bool statusActive; String statusPacket; bool gpsActive; diff --git a/src/LoRa_APRS_iGate.cpp b/src/LoRa_APRS_iGate.cpp index baf1c87..4f98b50 100644 --- a/src/LoRa_APRS_iGate.cpp +++ b/src/LoRa_APRS_iGate.cpp @@ -67,8 +67,8 @@ ___________________________________________________________________*/ #endif -String versionDate = "2025-10-13"; -String versionNumber = "3.1.3"; +String versionDate = "2025-10-15"; +String versionNumber = "3.1.4"; Configuration Config; WiFiClient aprsIsClient; WiFiClient mqttClient; diff --git a/src/configuration.cpp b/src/configuration.cpp index d6564b1..31d83ba 100644 --- a/src/configuration.cpp +++ b/src/configuration.cpp @@ -72,7 +72,7 @@ bool Configuration::writeFile() { data["beacon"]["sendViaAPRSIS"] = beacon.sendViaAPRSIS; data["beacon"]["sendViaRF"] = beacon.sendViaRF; - data["beacon"]["beaconOnRxFreq"] = beacon.beaconOnRxFreq; + data["beacon"]["beaconFreq"] = beacon.beaconFreq; data["beacon"]["statusActive"] = beacon.statusActive; data["beacon"]["statusPacket"] = beacon.statusPacket; @@ -227,7 +227,7 @@ bool Configuration::readFile() { !data["beacon"].containsKey("path") || !data["beacon"].containsKey("sendViaAPRSIS") || !data["beacon"].containsKey("sendViaRF") || - !data["beacon"].containsKey("beaconOnRxFreq") || + !data["beacon"].containsKey("beaconFreq") || !data["beacon"].containsKey("statusActive") || !data["beacon"].containsKey("statusPacket") || !data["beacon"].containsKey("gpsActive") || @@ -241,7 +241,7 @@ bool Configuration::readFile() { beacon.path = data["beacon"]["path"] | "WIDE1-1"; beacon.sendViaAPRSIS = data["beacon"]["sendViaAPRSIS"] | false; beacon.sendViaRF = data["beacon"]["sendViaRF"] | false; - beacon.beaconOnRxFreq = data["beacon"]["beaconOnRxFreq"] | false; + beacon.beaconFreq = data["beacon"]["beaconFreq"] | 1; beacon.statusActive = data["beacon"]["statusActive"] | false; beacon.statusPacket = data["beacon"]["statusPacket"] | ""; beacon.gpsActive = data["beacon"]["gpsActive"] | false; @@ -440,7 +440,7 @@ void Configuration::setDefaultValues() { beacon.sendViaAPRSIS = true; beacon.sendViaRF = false; - beacon.beaconOnRxFreq = false; + beacon.beaconFreq = 1; beacon.statusActive = false; beacon.statusPacket = ""; diff --git a/src/lora_utils.cpp b/src/lora_utils.cpp index f67829c..63f5c79 100644 --- a/src/lora_utils.cpp +++ b/src/lora_utils.cpp @@ -129,7 +129,7 @@ namespace LoRa_Utils { } void changeFreqTx() { - delay(500); + delay(300); float freq = (float)Config.loramodule.txFreq / 1000000; radio.setFrequency(freq); radio.setSpreadingFactor(Config.loramodule.txSpreadingFactor); @@ -138,7 +138,7 @@ namespace LoRa_Utils { } void changeFreqRx() { - delay(500); + delay(300); float freq = (float)Config.loramodule.rxFreq / 1000000; radio.setFrequency(freq); radio.setSpreadingFactor(Config.loramodule.rxSpreadingFactor); @@ -150,7 +150,7 @@ namespace LoRa_Utils { if (!Config.loramodule.txActive) return; if (Config.loramodule.txFreq != Config.loramodule.rxFreq) { - if (!packetIsBeacon || (packetIsBeacon && !Config.beacon.beaconOnRxFreq)) { + if (!packetIsBeacon || (packetIsBeacon && Config.beacon.beaconFreq == 1)) { changeFreqTx(); } } @@ -174,7 +174,7 @@ namespace LoRa_Utils { if (Config.digi.ecoMode != 1) digitalWrite(INTERNAL_LED_PIN, LOW); // disabled in Ultra Eco Mode #endif if (Config.loramodule.txFreq != Config.loramodule.rxFreq) { - if (!packetIsBeacon || (packetIsBeacon && !Config.beacon.beaconOnRxFreq)) { + if (!packetIsBeacon || (packetIsBeacon && Config.beacon.beaconFreq == 1)) { changeFreqRx(); } } diff --git a/src/utils.cpp b/src/utils.cpp index 6d93bb5..830783f 100644 --- a/src/utils.cpp +++ b/src/utils.cpp @@ -284,7 +284,7 @@ namespace Utils { Serial.println("Tx Freq less than 125kHz from Rx Freq ---> NOT VALID"); displayShow("Tx Freq is less than ", "125kHz from Rx Freq", "device will autofix", "and then reboot", 1000); Config.loramodule.txFreq = Config.loramodule.rxFreq; // Inform about that but then change the TX QRG to RX QRG and reset the device - Config.beacon.beaconOnRxFreq = false; + Config.beacon.beaconFreq = 1; // return to LoRa Tx Beacon Freq Config.writeFile(); ESP.restart(); } diff --git a/src/web_utils.cpp b/src/web_utils.cpp index 9eb24e7..ae01373 100644 --- a/src/web_utils.cpp +++ b/src/web_utils.cpp @@ -177,7 +177,7 @@ namespace WEB_Utils { Config.beacon.interval = getParamIntSafe("beacon.interval", Config.beacon.interval); Config.beacon.sendViaAPRSIS = request->hasParam("beacon.sendViaAPRSIS", true); Config.beacon.sendViaRF = request->hasParam("beacon.sendViaRF", true); - Config.beacon.beaconOnRxFreq = request->hasParam("beacon.beaconOnRxFreq", true); + Config.beacon.beaconFreq = getParamIntSafe("beacon.beaconFreq", Config.beacon.beaconFreq); Config.beacon.latitude = getParamDoubleSafe("beacon.latitude", Config.beacon.latitude); Config.beacon.longitude = getParamDoubleSafe("beacon.longitude", Config.beacon.longitude); Config.beacon.comment = getParamStringSafe("beacon.comment", Config.beacon.comment);