diff --git a/data/igate_conf.json b/data/igate_conf.json index be090dc..f8a8a53 100644 --- a/data/igate_conf.json +++ b/data/igate_conf.json @@ -29,8 +29,8 @@ }, "lora": { "iGateFreq": 433775000, - "digirepeaterTxFreq": 433900000, - "digirepeaterRxFreq": 433775000, + "digirepeaterTxFreq": 433775000, + "digirepeaterRxFreq": 433900000, "spreadingFactor": 12, "signalBandwidth": 125000, "codingRate4": 5, diff --git a/src/LoRa_APRS_iGate.cpp b/src/LoRa_APRS_iGate.cpp index 291cfc5..91b1aca 100644 --- a/src/LoRa_APRS_iGate.cpp +++ b/src/LoRa_APRS_iGate.cpp @@ -72,7 +72,7 @@ void loop() { } else if (stationMode==3 || stationMode==4) { // DigiRepeater (3 RxFreq=TxFreq / 4 RxFreq!=TxFreq) Utils::checkDisplayInterval(); Utils::checkBeaconInterval(); - show_display(firstLine, secondLine, thirdLine, fourthLine, 0); + show_display(firstLine, secondLine, thirdLine, fourthLine, fifthLine, sixthLine, seventhLine, 0); DIGI_Utils::processPacket(LoRa_Utils::receivePacket()); } } \ No newline at end of file diff --git a/src/bme_utils.cpp b/src/bme_utils.cpp index cf1a3d1..9848d6b 100644 --- a/src/bme_utils.cpp +++ b/src/bme_utils.cpp @@ -3,7 +3,8 @@ #include "gps_utils.h" #include "display.h" -extern Configuration Config; +extern Configuration Config; +extern String fifthLine; namespace BME_Utils { @@ -94,17 +95,20 @@ String readDataSensor() { float newTemp = bme.readTemperature(); float newHum = bme.readHumidity(); float newPress = (bme.readPressure() / 100.0F); + //float bat = analogRead(battery); //bme.readAltitude(SEALEVELPRESSURE_HPA) if (isnan(newTemp) || isnan(newHum) || isnan(newPress)) { Serial.println("BME280 Module data failed"); wx = ".../...g...t...r...p...P...h..b....."; + fifthLine = ""; return wx; } else { tempStr = generateTempString((newTemp * 1.8) + 32); humStr = generateHumString(newHum); presStr = generatePresString(newPress); + fifthLine = "BME-> " + String(int(newTemp))+"C " + humStr + "% " + presStr.substring(0,4) + "hPa"; wx = ".../...g...t" + tempStr + "r...p...P...h" + humStr + "b" + presStr; return wx; } diff --git a/src/digi_utils.cpp b/src/digi_utils.cpp index 032dfec..a705f32 100644 --- a/src/digi_utils.cpp +++ b/src/digi_utils.cpp @@ -1,4 +1,5 @@ #include "configuration.h" +#include "station_utils.h" #include "lora_utils.h" #include "digi_utils.h" #include "display.h" @@ -16,8 +17,10 @@ void processPacket(String packet) { Serial.print("Received Lora Packet : " + String(packet)); if ((packet.substring(0, 3) == "\x3c\xff\x01") && (packet.indexOf("NOGATE") == -1)) { Serial.println(" ---> APRS LoRa Packet"); + String sender = packet.substring(3,packet.indexOf(">")); + STATION_Utils::updateLastHeard(sender); + Utils::typeOfPacket(packet, "Digi"); if ((stationMode==3) && (packet.indexOf("WIDE1-1") > 10)) { - Utils::typeOfPacket(packet, "Digi"); loraPacket = packet.substring(3); loraPacket.replace("WIDE1-1", Config.callsign + "*"); delay(500); @@ -25,7 +28,6 @@ void processPacket(String packet) { display_toggle(true); lastScreenOn = millis(); } else if (stationMode ==4){ - Utils::typeOfPacket(packet, "Digi"); if (packet.indexOf("WIDE1-1") == -1) { loraPacket = packet.substring(3,packet.indexOf(":")) + "," + Config.callsign + "*" + packet.substring(packet.indexOf(":")); } else { diff --git a/src/utils.cpp b/src/utils.cpp index 66b4e84..ba473c9 100644 --- a/src/utils.cpp +++ b/src/utils.cpp @@ -65,18 +65,23 @@ void setupDiplay() { setup_display(); digitalWrite(greenLed,HIGH); Serial.println("\nStarting iGate: " + Config.callsign + " Version: " + versionDate); - show_display(" LoRa APRS", " ( iGate )", "", " Richonguzman", " -- CD2RXU --", "", " " + versionDate, 4000); + show_display(" LoRa APRS", " ( iGate )", "", " Richonguzman", " -- CD2RXU --", "", " " + versionDate, 4000); digitalWrite(greenLed,LOW); firstLine = Config.callsign; if (stationMode==3 || stationMode==4) { - secondLine = ""; - } else { - secondLine = ""; + thirdLine = "<< DigiRepeater >>"; } - sixthLine = ""; seventhLine = " listening..."; } +void activeStations() { + fourthLine = "Stations (" + String(Config.rememberStationTime) + "min) = "; + if (lastHeardStation.size() < 10) { + fourthLine += " "; + } + fourthLine += String(lastHeardStation.size()); +} + void checkBeaconInterval() { uint32_t lastTx = millis() - lastBeaconTx; if (lastTx >= Config.beaconInterval*60*1000) { @@ -85,15 +90,13 @@ void checkBeaconInterval() { if (beacon_update) { display_toggle(true); Serial.println("---- Sending iGate Beacon ----"); + STATION_Utils::deleteNotHeard(); + activeStations(); if (stationMode==1 || stationMode==2) { thirdLine = getLocalIP(); - STATION_Utils::deleteNotHeard(); - fourthLine = "Stations (" + String(Config.rememberStationTime) + "min) = "; - if (lastHeardStation.size() < 10) { - fourthLine += " "; + if (!Config.bme.active) { + fifthLine = ""; } - fourthLine += String(lastHeardStation.size()); - fifthLine = ""; sixthLine = ""; show_display(firstLine, secondLine, thirdLine, fourthLine, fifthLine, sixthLine, "SENDING iGate BEACON", 1000); seventhLine = " listening..."; @@ -104,7 +107,14 @@ void checkBeaconInterval() { } show_display(firstLine, secondLine, thirdLine, fourthLine, fifthLine, sixthLine, seventhLine, 0); } else if (stationMode==3 || stationMode==4) { - fourthLine = ""; + String Rx = String(Config.loramodule.digirepeaterRxFreq); + String Tx = String(Config.loramodule.digirepeaterTxFreq); + if (stationMode==3) { + secondLine = "Rx:" + String(Tx.substring(0,3)) + "." + String(Tx.substring(3,6)); + } else { + secondLine = "Rx:" + String(Rx.substring(0,3)) + "." + String(Rx.substring(3,6)); + } + secondLine += " Tx:" + String(Tx.substring(0,3)) + "." + String(Tx.substring(3,6)); fifthLine = ""; sixthLine = ""; show_display(firstLine, secondLine, thirdLine, fourthLine, fifthLine, sixthLine, "SENDING iGate BEACON", 0); @@ -112,7 +122,11 @@ void checkBeaconInterval() { if (stationMode == 4) { LoRa_Utils::changeFreqTx(); } - LoRa_Utils::sendNewPacket("APRS",iGateBeaconPacket); + if (Config.bme.active) { + LoRa_Utils::sendNewPacket("APRS",iGateBeaconPacket.substring(0,iGateBeaconPacket.indexOf(":=")+20) + "_" + BME_Utils::readDataSensor() + iGateBeaconPacket.substring(iGateBeaconPacket.indexOf(":=")+21) + " + WX"); + } else { + LoRa_Utils::sendNewPacket("APRS",iGateBeaconPacket); + } if (stationMode == 4) { LoRa_Utils::changeFreqRx(); } @@ -156,7 +170,7 @@ void typeOfPacket(String packet, String packetType) { } sender = packet.substring(0,packet.indexOf(">")); } else { - sixthLine = "LoRa Rx ----> LoRa Tx"; + fifthLine = "LoRa Rx ----> LoRa Tx"; sender = packet.substring(3,packet.indexOf(">")); } for (int i=sender.length();i<9;i++) { diff --git a/src/utils.h b/src/utils.h index 81b87fa..a3b71f7 100644 --- a/src/utils.h +++ b/src/utils.h @@ -8,6 +8,7 @@ namespace Utils { void processStatus(); String getLocalIP(); void setupDiplay(); +void activeStations(); void checkBeaconInterval(); void checkDisplayInterval(); void validateDigiFreqs();