diff --git a/data/igate_conf.json b/data/igate_conf.json index b18bce6..634cf8a 100644 --- a/data/igate_conf.json +++ b/data/igate_conf.json @@ -29,7 +29,7 @@ }, "digi": { "mode": 0, - "ecoMode": false + "ecoMode": 0 }, "lora": { "txFreq": 433775000, diff --git a/include/configuration.h b/include/configuration.h index 8e258e0..4a8545f 100644 --- a/include/configuration.h +++ b/include/configuration.h @@ -47,7 +47,7 @@ public: class DIGI { public: int mode; - bool ecoMode; + int ecoMode; // 0 = Not Active | 1 = Ultra EcoMode | 2 = Not Active (WiFi OFF, Serial ON) }; class LoraModule { diff --git a/src/LoRa_APRS_iGate.cpp b/src/LoRa_APRS_iGate.cpp index b8d457b..0e4f9f2 100644 --- a/src/LoRa_APRS_iGate.cpp +++ b/src/LoRa_APRS_iGate.cpp @@ -47,7 +47,7 @@ ___________________________________________________________________*/ #endif -String versionDate = "2025.03.20"; +String versionDate = "2025.04.24"; Configuration Config; WiFiClient espClient; #ifdef HAS_GPS @@ -133,7 +133,6 @@ void setup() { Config.loramodule.rxActive = false; } #endif - DIGI_Utils::checkEcoMode(); WIFI_Utils::setup(); NTP_Utils::setup(); SYSLOG_Utils::setup(); diff --git a/src/aprs_is_utils.cpp b/src/aprs_is_utils.cpp index c8f53cf..3a30ecd 100644 --- a/src/aprs_is_utils.cpp +++ b/src/aprs_is_utils.cpp @@ -70,7 +70,7 @@ namespace APRS_IS_Utils { if (WiFi.status() == WL_CONNECTED) { wifiState = "OK"; } else { - if (backUpDigiMode || Config.digi.ecoMode) { + if (backUpDigiMode || Config.digi.ecoMode == 1 || Config.digi.ecoMode == 2) { wifiState = "--"; } else { wifiState = "AP"; diff --git a/src/configuration.cpp b/src/configuration.cpp index f666f17..2a16661 100644 --- a/src/configuration.cpp +++ b/src/configuration.cpp @@ -167,7 +167,7 @@ bool Configuration::readFile() { aprs_is.objectsToRF = data["aprs_is"]["objectsToRF"] | false; digi.mode = data["digi"]["mode"] | 0; - digi.ecoMode = data["digi"]["ecoMode"] | false; + digi.ecoMode = data["digi"]["ecoMode"] | 0; loramodule.txFreq = data["lora"]["txFreq"] | 433775000; loramodule.rxFreq = data["lora"]["rxFreq"] | 433775000; @@ -274,7 +274,7 @@ void Configuration::init() { beacon.gpsAmbiguity = false; digi.mode = 0; - digi.ecoMode = false; + digi.ecoMode = 0; tnc.enableServer = false; tnc.enableSerial = false; diff --git a/src/digi_utils.cpp b/src/digi_utils.cpp index 8f2e483..f5dee6e 100644 --- a/src/digi_utils.cpp +++ b/src/digi_utils.cpp @@ -162,12 +162,4 @@ namespace DIGI_Utils { } } - void checkEcoMode() { - if (Config.digi.ecoMode) { - Config.display.alwaysOn = false; - Config.display.timeout = 0; - setCpuFrequencyMhz(10); - } - } - } \ No newline at end of file diff --git a/src/lora_utils.cpp b/src/lora_utils.cpp index 77b6309..326cfe4 100644 --- a/src/lora_utils.cpp +++ b/src/lora_utils.cpp @@ -133,7 +133,7 @@ namespace LoRa_Utils { } #ifdef INTERNAL_LED_PIN - if (!Config.digi.ecoMode) digitalWrite(INTERNAL_LED_PIN, HIGH); + if (Config.digi.ecoMode != 1) digitalWrite(INTERNAL_LED_PIN, HIGH); // disabled in Ultra Eco Mode #endif int state = radio.transmit("\x3c\xff\x01" + newPacket); transmitFlag = true; @@ -148,27 +148,13 @@ namespace LoRa_Utils { Utils::println(String(state)); } #ifdef INTERNAL_LED_PIN - if (!Config.digi.ecoMode) digitalWrite(INTERNAL_LED_PIN, LOW); + if (Config.digi.ecoMode != 1) digitalWrite(INTERNAL_LED_PIN, LOW); // disabled in Ultra Eco Mode #endif if (Config.loramodule.txFreq != Config.loramodule.rxFreq) { changeFreqRx(); } } - /*String packetSanitization(const String& packet) { - String sanitizedPacket = packet; - if (packet.indexOf("\0") > 0) { - sanitizedPacket.replace("\0", ""); - } - if (packet.indexOf("\r") > 0) { - sanitizedPacket.replace("\r", ""); - } - if (packet.indexOf("\n") > 0) { - sanitizedPacket.replace("\n", ""); - } - return sanitizedPacket; - }*/ - void startReceive() { radio.startReceive(); } @@ -193,7 +179,7 @@ namespace LoRa_Utils { Utils::println("<--- LoRa Packet Rx : " + packet.substring(3)); Utils::println("(RSSI:" + String(rssi) + " / SNR:" + String(snr) + " / FreqErr:" + String(freqError) + ")"); - if (!Config.lowPowerMode && !Config.digi.ecoMode) { + if (!Config.lowPowerMode && Config.digi.ecoMode == 0) { if (receivedPackets.size() >= 10) { receivedPackets.erase(receivedPackets.begin()); } diff --git a/src/ntp_utils.cpp b/src/ntp_utils.cpp index 3fb1dff..e5e7e9d 100644 --- a/src/ntp_utils.cpp +++ b/src/ntp_utils.cpp @@ -15,7 +15,7 @@ NTPClient timeClient(ntpUDP, "pool.ntp.org", 0, 15 * 60 * 1000); // Update in namespace NTP_Utils { void setup() { - if (WiFi.status() == WL_CONNECTED && !Config.digi.ecoMode && Config.callsign != "NOCALL-10") { + if (WiFi.status() == WL_CONNECTED && Config.digi.ecoMode == 0 && Config.callsign != "NOCALL-10") { int gmt = Config.ntp.gmtCorrection * 3600; timeClient.setTimeOffset(gmt); timeClient.begin(); @@ -23,11 +23,11 @@ namespace NTP_Utils { } void update() { - if (WiFi.status() == WL_CONNECTED && !Config.digi.ecoMode && Config.callsign != "NOCALL-10") timeClient.update(); + if (WiFi.status() == WL_CONNECTED && Config.digi.ecoMode == 0 && Config.callsign != "NOCALL-10") timeClient.update(); } String getFormatedTime() { - if (!Config.digi.ecoMode) return timeClient.getFormattedTime(); + if (Config.digi.ecoMode == 0) return timeClient.getFormattedTime(); return "DigiEcoMode Active"; } diff --git a/src/power_utils.cpp b/src/power_utils.cpp index 2884eca..7c444f6 100644 --- a/src/power_utils.cpp +++ b/src/power_utils.cpp @@ -250,7 +250,7 @@ namespace POWER_Utils { #if defined(HELTEC_V3) || defined(HELTEC_V3_2) || defined(HELTEC_WP) || defined(HELTEC_WSL_V3) || defined(HELTEC_WSL_V3_DISPLAY) Wire1.begin(BOARD_I2C_SDA, BOARD_I2C_SCL); - #endif + #endif #if defined(TTGO_T_DECK_GPS) || defined(TTGO_T_DECK_PLUS) pinMode(BOARD_POWERON, OUTPUT); @@ -266,7 +266,15 @@ namespace POWER_Utils { delay(500); Wire.begin(BOARD_I2C_SDA, BOARD_I2C_SCL); - #endif + #endif + + // PIN Ultra Eco Mode definitions + + + + + + // delay(1000); BATTERY_Utils::setup(); diff --git a/src/query_utils.cpp b/src/query_utils.cpp index 3b29c40..26c5d31 100644 --- a/src/query_utils.cpp +++ b/src/query_utils.cpp @@ -58,9 +58,9 @@ namespace QUERY_Utils { else if (STATION_Utils::isManager(station) && (!queryFromAPRSIS || !Config.remoteManagement.rfOnly)) { if (queryQuestion.indexOf("?EM=OFF") == 0) { if ((Config.digi.mode == 2 || Config.digi.mode == 3) && Config.loramodule.txActive && Config.loramodule.rxActive && !Config.aprs_is.active) { - if (Config.digi.ecoMode) { // Exit Digipeater EcoMode + if (Config.digi.ecoMode == 1) { // Exit Digipeater EcoMode answer = "DigiEcoMode:OFF"; - Config.digi.ecoMode = false; + Config.digi.ecoMode = 0; Config.display.alwaysOn = true; Config.display.timeout = 10; shouldSleepLowVoltage = true; // to make sure all packets in outputPacketBuffer are sended before restart. @@ -73,9 +73,9 @@ namespace QUERY_Utils { } } else if (queryQuestion.indexOf("?EM=ON") == 0) { if ((Config.digi.mode == 2 || Config.digi.mode == 3) && Config.loramodule.txActive && Config.loramodule.rxActive && !Config.aprs_is.active) { - if (!Config.digi.ecoMode) { // Start Digipeater EcoMode + if (Config.digi.ecoMode == 0) { // Start Digipeater EcoMode answer = "DigiEcoMode:ON"; - Config.digi.ecoMode = true; + Config.digi.ecoMode = 1; shouldSleepLowVoltage = true; // to make sure all packets in outputPacketBuffer are sended before restart. saveNewDigiEcoModeConfig = true; } else { @@ -85,7 +85,13 @@ namespace QUERY_Utils { answer = "DigiEcoMode control not possible"; } } else if (queryQuestion.indexOf("?EM=?") == 0) { // Digipeater EcoMode Status - answer = (Config.digi.ecoMode) ? "DigiEcoMode:ON" : "DigiEcoMode:OFF"; + if (Config.digi.ecoMode == 0) { + answer = "DigiEcoMode:OFF"; + } else if (Config.digi.ecoMode == 1) { + answer = "DigiEcoMode:ON"; + } else { + answer = "DigiEcoMode:OFF/Only Serial Output"; + } } else if (queryQuestion.indexOf("?TX=ON") == 0) { if (Config.loramodule.txActive) { answer = "TX was ON"; diff --git a/src/tnc_utils.cpp b/src/tnc_utils.cpp index 7118f7f..cbc2a1b 100644 --- a/src/tnc_utils.cpp +++ b/src/tnc_utils.cpp @@ -24,7 +24,7 @@ String inputSerialBuffer = ""; namespace TNC_Utils { void setup() { - if (Config.tnc.enableServer && !Config.digi.ecoMode) { + if (Config.tnc.enableServer && Config.digi.ecoMode == 0) { tncServer.stop(); tncServer.begin(); } @@ -128,7 +128,7 @@ namespace TNC_Utils { } void loop() { - if (!Config.digi.ecoMode) { + if (Config.digi.ecoMode == 0) { if (Config.tnc.enableServer) { checkNewClients(); readFromClients(); diff --git a/src/utils.cpp b/src/utils.cpp index b9b370f..36db487 100644 --- a/src/utils.cpp +++ b/src/utils.cpp @@ -76,7 +76,7 @@ namespace Utils { } String getLocalIP() { - if (Config.digi.ecoMode) { + if (Config.digi.ecoMode == 1 || Config.digi.ecoMode == 2) { return "** WiFi AP Killed **"; } else if (!WiFiConnected) { return "IP : 192.168.4.1"; @@ -93,7 +93,14 @@ namespace Utils { digitalWrite(INTERNAL_LED_PIN,HIGH); #endif Serial.println("\nStarting Station: " + Config.callsign + " Version: " + versionDate); - Serial.println((Config.digi.ecoMode) ? "(DigiEcoMode: ON)" : "(DigiEcoMode: OFF)"); + Serial.print("(DigiEcoMode: "); + if (Config.digi.ecoMode == 0) { + Serial.println("OFF)"); + } else if (Config.digi.ecoMode == 1) { + Serial.println("ON)"); + } else { + Serial.println("ON / Only Serial Output)"); + } displayShow(" LoRa APRS", "", "", " ( iGATE & DIGI )", "", "" , " CA2RXU " + versionDate, 4000); #ifdef INTERNAL_LED_PIN digitalWrite(INTERNAL_LED_PIN,LOW); @@ -200,7 +207,6 @@ namespace Utils { !Config.wxsensor.active && (Config.battery.sendInternalVoltage || Config.battery.sendExternalVoltage) && (lastBeaconTx > 0)) { - //(!Config.digi.ecoMode || lastBeaconTx > 0)) { sendInitialTelemetryPackets(); } @@ -211,7 +217,7 @@ namespace Utils { beaconPacket = iGateBeaconPacket; secondaryBeaconPacket = iGateLoRaBeaconPacket; #ifdef HAS_GPS - if (Config.beacon.gpsActive && !Config.digi.ecoMode) { + if (Config.beacon.gpsActive && Config.digi.ecoMode == 0) { GPS_Utils::getData(); if (gps.location.isUpdated() && gps.location.lat() != 0.0 && gps.location.lng() != 0.0) { GPS_Utils::generateBeaconFirstPart(); diff --git a/src/web_utils.cpp b/src/web_utils.cpp index 073579e..6921ff6 100644 --- a/src/web_utils.cpp +++ b/src/web_utils.cpp @@ -141,7 +141,7 @@ namespace WEB_Utils { Config.digi.mode = request->getParam("digi.mode", true)->value().toInt(); - Config.digi.ecoMode = request->hasParam("digi.ecoMode", true); + Config.digi.ecoMode = request->getParam("digi.ecoMode", true)->value().toInt();; Config.loramodule.txFreq = request->getParam("lora.txFreq", true)->value().toInt(); @@ -271,7 +271,7 @@ namespace WEB_Utils { } void setup() { - if (!Config.digi.ecoMode) { + if (Config.digi.ecoMode == 0) { server.on("/", HTTP_GET, handleHome); server.on("/status", HTTP_GET, handleStatus); server.on("/received-packets.json", HTTP_GET, handleReceivedPackets); diff --git a/src/wifi_utils.cpp b/src/wifi_utils.cpp index 68ce571..6bcae60 100644 --- a/src/wifi_utils.cpp +++ b/src/wifi_utils.cpp @@ -24,7 +24,7 @@ uint32_t lastBackupDigiTime = millis(); namespace WIFI_Utils { void checkWiFi() { - if (!Config.digi.ecoMode) { + if (Config.digi.ecoMode == 0) { if (backUpDigiMode) { uint32_t WiFiCheck = millis() - lastBackupDigiTime; if (WiFi.status() != WL_CONNECTED && WiFiCheck >= 15 * 60 * 1000) { @@ -154,7 +154,7 @@ namespace WIFI_Utils { } void setup() { - if (!Config.digi.ecoMode) startWiFi(); + if (Config.digi.ecoMode == 0) startWiFi(); btStop(); }