Digirepeater Mode Added

This commit is contained in:
richonguzman 2023-11-07 21:29:02 -03:00
parent 0c4d748737
commit 82862b184b
9 changed files with 178 additions and 149 deletions

View File

@ -51,6 +51,7 @@ ____________________________________________________
____________________________________________________
## Timeline (Versions):
- 2023.11.07 DigiRepeater Mode added in Emergency Menu.
- 2023.10.23 COMPLETE New Menu for Keyboard add-on.
- 2023.10.22 Added Keyboard Support over I2C (CARDKB from https://m5stack.com)
- 2023.10.07 Screen Brightness control added.

View File

@ -21,18 +21,23 @@ namespace APRSPacketLib {
packet.path.replace("WIDE1-" + hop , callsign + "*,WIDE1-" + String(hop.toInt()-1));
}
String repeatedPacket = packet.sender + ">" + packet.tocall + "," + packet.path;
if (packet.type == "gps") {
repeatedPacket += ":!";
} else if (packet.type == "status") {
repeatedPacket += ":>";
} else if (packet.type == "telemetry") {
repeatedPacket += ":T#";
} else if (packet.type == "message") {
for(int i = packet.addressee.length(); i < 9; i++) {
packet.addressee += ' ';
}
repeatedPacket += "::" + packet.addressee + ":";
}
switch (packet.type) {
case 0: // gps
repeatedPacket += ":!";
break;
case 1: // message
for(int i = packet.addressee.length(); i < 9; i++) {
packet.addressee += ' ';
}
repeatedPacket += "::" + packet.addressee + ":";
break;
case 2: // status
repeatedPacket += ":>";
break;
case 3: // telemetry
repeatedPacket += ":T#";
break;
}
return repeatedPacket + packet.message;
} else {
return "X";
@ -121,9 +126,7 @@ namespace APRSPacketLib {
return packet;
}
float decodeEncodedLatitude(String receivedPacket) {
String packet = receivedPacket.substring(receivedPacket.indexOf(":!")+3);
String encodedLatitude = packet.substring(0,4);
float decodeEncodedLatitude(String encodedLatitude) {
int Y1 = int(encodedLatitude[0]);
int Y2 = int(encodedLatitude[1]);
int Y3 = int(encodedLatitude[2]);
@ -131,24 +134,15 @@ namespace APRSPacketLib {
return (90.0 - ((((Y1-33) * pow(91,3)) + ((Y2-33) * pow(91,2)) + ((Y3-33) * 91) + Y4-33) / 380926.0));
}
float decodeEncodedLongitude(String receivedPacket) {
String packet = receivedPacket.substring(receivedPacket.indexOf(":!")+3);
String encodedLongtitude = packet.substring(4,8);
int X1 = int(encodedLongtitude[0]);
int X2 = int(encodedLongtitude[1]);
int X3 = int(encodedLongtitude[2]);
int X4 = int(encodedLongtitude[3]);
float decodeEncodedLongitude(String encodedLongitude) {
int X1 = int(encodedLongitude[0]);
int X2 = int(encodedLongitude[1]);
int X3 = int(encodedLongitude[2]);
int X4 = int(encodedLongitude[3]);
return (-180.0 + ((((X1-33) * pow(91,3)) + ((X2-33) * pow(91,2)) + ((X3-33) * 91) + X4-33) / 190463.0));
}
float decodeLatitude(String receivedPacket) {
String gpsData;
if (receivedPacket.indexOf(":!") > 10) {
gpsData = receivedPacket.substring(receivedPacket.indexOf(":!")+2);
} else if (receivedPacket.indexOf(":=") > 10) {
gpsData = receivedPacket.substring(receivedPacket.indexOf(":=")+2);
}
String Latitude = gpsData.substring(0,8);
float decodeLatitude(String Latitude) {
String firstLatPart = Latitude.substring(0,2);
String secondLatPart = Latitude.substring(2,4);
String thirdLatPart = Latitude.substring(Latitude.indexOf(".")+1,Latitude.indexOf(".")+3);
@ -161,14 +155,7 @@ namespace APRSPacketLib {
}
}
float decodeLongitude(String receivedPacket) {
String gpsData;
if (receivedPacket.indexOf(":!") > 10) {
gpsData = receivedPacket.substring(receivedPacket.indexOf(":!")+2);
} else if (receivedPacket.indexOf(":=") > 10) {
gpsData = receivedPacket.substring(receivedPacket.indexOf(":=")+2);
}
String Longitude = gpsData.substring(9,18);
float decodeLongitude(String Longitude) {
String firstLngPart = Longitude.substring(0,3);
String secondLngPart = Longitude.substring(3,5);
String thirdLngPart = Longitude.substring(Longitude.indexOf(".")+1,Longitude.indexOf(".")+3);
@ -182,6 +169,11 @@ namespace APRSPacketLib {
}
APRSPacket processReceivedPacket(String receivedPacket) {
/* Packet type:
gps = 0
message = 1
status = 2
telemetry = 3 */
APRSPacket aprsPacket;
aprsPacket.sender = receivedPacket.substring(0,receivedPacket.indexOf(">"));
String temp00 = receivedPacket.substring(receivedPacket.indexOf(">")+1,receivedPacket.indexOf(":"));
@ -192,8 +184,26 @@ namespace APRSPacketLib {
aprsPacket.tocall = temp00;
aprsPacket.path = "";
}
if (receivedPacket.indexOf("::") > 10) {
aprsPacket.type = "message";
if (receivedPacket.indexOf(":!") > 10 || receivedPacket.indexOf(":=") > 10 ) {
aprsPacket.type = 0;
aprsPacket.addressee = "";
String gpsChar = "";
if (receivedPacket.indexOf(":!") > 10) {
gpsChar = ":!";
} else {
gpsChar = ":=";
}
int encodedBytePosition = receivedPacket.indexOf(gpsChar) + 14;
aprsPacket.message = receivedPacket.substring(receivedPacket.indexOf(gpsChar)+2);
if (String(receivedPacket[encodedBytePosition]) == "G" || String(receivedPacket[encodedBytePosition]) == "Q" || String(receivedPacket[encodedBytePosition]) == "[" || String(receivedPacket[encodedBytePosition]) == "H") {
aprsPacket.latitude = decodeEncodedLatitude(receivedPacket.substring(receivedPacket.indexOf(gpsChar)+3, receivedPacket.indexOf(gpsChar)+7));
aprsPacket.longitude = decodeEncodedLongitude(receivedPacket.substring(receivedPacket.indexOf(gpsChar)+7, receivedPacket.indexOf(gpsChar)+11));
} else {
aprsPacket.latitude = decodeLatitude(receivedPacket.substring(receivedPacket.indexOf(gpsChar)+2,receivedPacket.indexOf(gpsChar)+10));
aprsPacket.longitude = decodeLongitude(receivedPacket.substring(receivedPacket.indexOf(gpsChar)+11,receivedPacket.indexOf(gpsChar)+20));
}
} else if (receivedPacket.indexOf("::") > 10) {
aprsPacket.type = 1;
String temp1 = receivedPacket.substring(receivedPacket.indexOf("::")+2);
String temp2 = temp1.substring(0,temp1.indexOf(":"));
temp2.trim();
@ -201,41 +211,14 @@ namespace APRSPacketLib {
aprsPacket.message = temp1.substring(temp1.indexOf(":")+1);
aprsPacket.latitude = 0;
aprsPacket.longitude = 0;
} else if (receivedPacket.indexOf(":!") > 10 || receivedPacket.indexOf(":=") > 10 ) {
aprsPacket.type = "gps";
aprsPacket.addressee = "";
int encodedBytePosition = 0;
if (receivedPacket.indexOf(":!") > 10) {
encodedBytePosition = receivedPacket.indexOf(":!") + 14;
aprsPacket.message = receivedPacket.substring(receivedPacket.indexOf(":!")+2);
}
if (receivedPacket.indexOf(":=") > 10) {
encodedBytePosition = receivedPacket.indexOf(":=") + 14;
aprsPacket.message = receivedPacket.substring(receivedPacket.indexOf(":=")+2);
}
if (encodedBytePosition != 0) {
if (String(receivedPacket[encodedBytePosition]) == "G" || String(receivedPacket[encodedBytePosition]) == "Q" || String(receivedPacket[encodedBytePosition]) == "[" || String(receivedPacket[encodedBytePosition]) == "H") {
aprsPacket.latitude = decodeEncodedLatitude(receivedPacket);
aprsPacket.longitude = decodeEncodedLongitude(receivedPacket);
} else {
aprsPacket.latitude = decodeLatitude(receivedPacket);
aprsPacket.longitude = decodeLongitude(receivedPacket);
}
//
Serial.print(aprsPacket.sender);
Serial.print(" GPS : ");
Serial.print(aprsPacket.latitude); Serial.print(" N ");
Serial.print(aprsPacket.longitude);Serial.println(" E");
//
}
} else if (receivedPacket.indexOf(":>") > 10) {
aprsPacket.type = "status";
aprsPacket.type = 2;
aprsPacket.addressee = "";
aprsPacket.message = receivedPacket.substring(receivedPacket.indexOf(":>")+2);
aprsPacket.latitude = 0;
aprsPacket.longitude = 0;
} else if (receivedPacket.indexOf(":T#") >= 10 && receivedPacket.indexOf(":=/") == -1) {
aprsPacket.type = "telemetry";
aprsPacket.type = 3;
aprsPacket.addressee = "";
aprsPacket.message = receivedPacket.substring(receivedPacket.indexOf(":T#")+3);
aprsPacket.latitude = 0;

View File

@ -9,7 +9,7 @@ struct APRSPacket {
String path;
String addressee;
String message;
String type;
int type;
float latitude;
float longitude;
};

View File

@ -82,7 +82,8 @@ uint32_t keyboardTime = millis();
String messageCallsign = "";
String messageText = "";
bool digirepeaterActive = false; // defaul = false (needs to be activated in the EMERGENCY of the Tracker MENU)
bool digirepeaterActive = false;
bool sosActive = false;
logging::Logger logger;

View File

@ -31,6 +31,8 @@ extern int messagesIterator;
extern bool messageLed;
extern String messageCallsign;
extern String messageText;
extern bool digirepeaterActive;
extern bool sosActive;
namespace KEYBOARD_Utils {
@ -218,12 +220,26 @@ namespace KEYBOARD_Utils {
else if (menuDisplay == 6) {
menuDisplay = 60;
} else if (menuDisplay == 60) {
show_display("EMERGENCY_", "Digirepeater still", "on development..", 2000); /////////////////////////
if (digirepeaterActive) {
show_display("EMERGENCY_", ""," DigiRepeater"," Status --> OFF","", 2000); /////////////////////////
logger.log(logging::LoggerLevel::LOGGER_LEVEL_INFO, "Main", "%s", "DigiRepeater OFF");
digirepeaterActive = false;
} else {
show_display("EMERGENCY_", ""," DigiRepeater"," Status --> ON","", 2000); /////////////////////////
logger.log(logging::LoggerLevel::LOGGER_LEVEL_INFO, "Main", "%s", "DigiRepeater ON");
digirepeaterActive = true;
}
} else if (menuDisplay == 61) {
show_display("EMERGENCY_", "S.O.S. still", "on development..", 2000); /////////////////////////
}
if (sosActive) {
show_display("EMERGENCY_", ""," S.O.S."," Status --> OFF","", 2000);
logger.log(logging::LoggerLevel::LOGGER_LEVEL_INFO, "Main", "%s", "S.O.S Mode OFF");
sosActive = false;
} else {
show_display("EMERGENCY_", ""," S.O.S."," Status --> ON","", 2000);
logger.log(logging::LoggerLevel::LOGGER_LEVEL_INFO, "Main", "%s", "S.O.S Mode ON");
sosActive = true;
}
}
}
void processPressedKey(char key) {

View File

@ -25,6 +25,10 @@ extern int lowBatteryPercent;
extern bool keyDetected;
extern String messageCallsign;
extern String messageText;
extern bool digirepeaterActive;
extern bool sosActive;
String digi, sos;
namespace MENU_Utils {
@ -171,12 +175,32 @@ namespace MENU_Utils {
break;
case 60: // 6. Emergency ---> Digirepeater
show_display("EMERGENCY_", "", "> Digirepeater", " S.O.S.","",lastLine);
if (digirepeaterActive) {
digi = "ON";
} else {
digi = "OFF";
}
if (sosActive) {
sos = "ON";
} else {
sos = "OFF";
}
show_display("EMERGENCY_", "", "> Digirepeater (" + digi + ")", " S.O.S. (" + sos + ")","",lastLine);
break;
case 61: // 6. Emergency ---> S.O.S.
show_display("EMERGENCY_", "", " Digirepeater", "> S.O.S.","",lastLine);
if (digirepeaterActive) {
digi = "ON";
} else {
digi = "OFF";
}
if (sosActive) {
sos = "ON";
} else {
sos = "OFF";
}
show_display("EMERGENCY_", "", " Digirepeater (" + digi + ")", "> S.O.S. (" + sos + ")","",lastLine);
break;
case 0: ///////////// MAIN MENU //////////////
String hdopState, firstRowMainMenu, secondRowMainMenu, thirdRowMainMenu, fourthRowMainMenu, fifthRowMainMenu, sixthRowMainMenu;

View File

@ -170,74 +170,74 @@ namespace MSG_Utils {
return;
}
if (packetReceived.substring(0,3) == "\x3c\xff\x01") { // its an APRS packet
BLUETOOTH_Utils::sendPacket(packetReceived.substring(3));
//Serial.println(packetReceived); // only for debug
aprsPacket = APRSPacketLib::processReceivedPacket(packetReceived.substring(3));
if (digirepeaterActive) {
Serial.print("Checking Packet before repeating ---> ");
String digiRepeatedPacket = APRSPacketLib::generateDigiRepeatedPacket(aprsPacket, currentBeacon->callsign);
if (digiRepeatedPacket == "X") {
Serial.println("Packet from " + aprsPacket.sender + " won't be repeated (missing WIDE1-X)");
} else {
Serial.println(digiRepeatedPacket);
}
/// this is the place where the validated and reformated packet will be Tx through LoRa
if (aprsPacket.sender!=currentBeacon->callsign) {
BLUETOOTH_Utils::sendPacket(packetReceived.substring(3));
}
if (digirepeaterActive) {
String digiRepeatedPacket = APRSPacketLib::generateDigiRepeatedPacket(aprsPacket, currentBeacon->callsign);
if (digiRepeatedPacket == "X") {
logger.log(logging::LoggerLevel::LOGGER_LEVEL_WARN, "Main", "%s", "Packet won't be Repeated (Missing WIDE1-X)");
} else {
delay(500);
LoRa_Utils::sendNewPacket(digiRepeatedPacket);
}
}
if (aprsPacket.type=="message" && aprsPacket.sender!=currentBeacon->callsign && aprsPacket.addressee==currentBeacon->callsign) {
if (aprsPacket.message.indexOf("{")>0) {
String ackMessage = "ack" + aprsPacket.message.substring(aprsPacket.message.indexOf("{")+1);
ackMessage.trim();
delay(4000);
sendMessage(aprsPacket.sender, ackMessage);
aprsPacket.message = aprsPacket.message.substring(aprsPacket.message.indexOf(":")+1, aprsPacket.message.indexOf("{"));
} else {
aprsPacket.message = aprsPacket.message.substring(aprsPacket.message.indexOf(":")+1);
}
if (Config.notification.buzzerActive && Config.notification.messageRxBeep) {
NOTIFICATION_Utils::messageBeep();
}
if (aprsPacket.message.indexOf("ping")==0 || aprsPacket.message.indexOf("Ping")==0 || aprsPacket.message.indexOf("PING")==0) {
delay(4000);
sendMessage(aprsPacket.sender, "pong, 73!");
}
if (aprsPacket.sender == "CD2RXU-15" && aprsPacket.message.indexOf("WX")==0) { // WX = WeatherReport
Serial.println("Weather Report Received");
String wxCleaning = aprsPacket.message.substring(aprsPacket.message.indexOf("WX ")+3);
String place = wxCleaning.substring(0,wxCleaning.indexOf(","));
String placeCleaning = wxCleaning.substring(wxCleaning.indexOf(",")+1);
String summary = placeCleaning.substring(0,placeCleaning.indexOf(","));
String sumCleaning = placeCleaning.substring(placeCleaning.indexOf(",")+2);
String temperature = sumCleaning.substring(0,sumCleaning.indexOf("P"));
String tempCleaning = sumCleaning.substring(sumCleaning.indexOf("P")+1);
String pressure = tempCleaning.substring(0,tempCleaning.indexOf("H"));
String presCleaning = tempCleaning.substring(tempCleaning.indexOf("H")+1);
String humidity = presCleaning.substring(0,presCleaning.indexOf("W"));
String humCleaning = presCleaning.substring(presCleaning.indexOf("W")+1);
String windSpeed = humCleaning.substring(0,humCleaning.indexOf(","));
String windCleaning = humCleaning.substring(humCleaning.indexOf(",")+1);
String windDegrees = windCleaning.substring(windCleaning.indexOf(",")+1,windCleaning.indexOf("\n"));
String fifthLineWR = temperature + "C " + pressure + "hPa " + humidity +"%";
String sixthLineWR = "(wind " + windSpeed + "m/s " + windDegrees + "deg)";
show_display("<WEATHER>", "From --> " + aprsPacket.sender, place, summary, fifthLineWR, sixthLineWR);
menuDisplay = 40;
menuTime = millis();
} else {
show_display("< MSG Rx >", "From --> " + aprsPacket.sender, "", aprsPacket.message , 3000);
if (aprsPacket.type==0) {
lastHeardTracker = aprsPacket.sender;
if (!Config.simplifiedTrackerMode) {
saveNewMessage("APRS", aprsPacket.sender, aprsPacket.message);
GPS_Utils::calculateDistanceCourse(aprsPacket.sender, aprsPacket.latitude, aprsPacket.longitude);
if (Config.notification.buzzerActive && Config.notification.stationBeep && !digirepeaterActive) {
NOTIFICATION_Utils::stationHeardBeep();
}
}
}
} else if (aprsPacket.type == "gps") {
lastHeardTracker = aprsPacket.sender;
if (!Config.simplifiedTrackerMode) {
GPS_Utils::calculateDistanceCourse(aprsPacket.sender, aprsPacket.latitude, aprsPacket.longitude);
if (Config.notification.buzzerActive && Config.notification.stationBeep) {
NOTIFICATION_Utils::stationHeardBeep();
} else if (aprsPacket.type==1 && aprsPacket.addressee==currentBeacon->callsign) {
if (aprsPacket.message.indexOf("{")>0) {
String ackMessage = "ack" + aprsPacket.message.substring(aprsPacket.message.indexOf("{")+1);
ackMessage.trim();
delay(4000);
sendMessage(aprsPacket.sender, ackMessage);
aprsPacket.message = aprsPacket.message.substring(aprsPacket.message.indexOf(":")+1, aprsPacket.message.indexOf("{"));
} else {
aprsPacket.message = aprsPacket.message.substring(aprsPacket.message.indexOf(":")+1);
}
if (Config.notification.buzzerActive && Config.notification.messageRxBeep) {
NOTIFICATION_Utils::messageBeep();
}
if (aprsPacket.message.indexOf("ping")==0 || aprsPacket.message.indexOf("Ping")==0 || aprsPacket.message.indexOf("PING")==0) {
delay(4000);
sendMessage(aprsPacket.sender, "pong, 73!");
}
if (aprsPacket.sender == "CD2RXU-15" && aprsPacket.message.indexOf("WX")==0) { // WX = WeatherReport
Serial.println("Weather Report Received");
String wxCleaning = aprsPacket.message.substring(aprsPacket.message.indexOf("WX ")+3);
String place = wxCleaning.substring(0,wxCleaning.indexOf(","));
String placeCleaning = wxCleaning.substring(wxCleaning.indexOf(",")+1);
String summary = placeCleaning.substring(0,placeCleaning.indexOf(","));
String sumCleaning = placeCleaning.substring(placeCleaning.indexOf(",")+2);
String temperature = sumCleaning.substring(0,sumCleaning.indexOf("P"));
String tempCleaning = sumCleaning.substring(sumCleaning.indexOf("P")+1);
String pressure = tempCleaning.substring(0,tempCleaning.indexOf("H"));
String presCleaning = tempCleaning.substring(tempCleaning.indexOf("H")+1);
String humidity = presCleaning.substring(0,presCleaning.indexOf("W"));
String humCleaning = presCleaning.substring(presCleaning.indexOf("W")+1);
String windSpeed = humCleaning.substring(0,humCleaning.indexOf(","));
String windCleaning = humCleaning.substring(humCleaning.indexOf(",")+1);
String windDegrees = windCleaning.substring(windCleaning.indexOf(",")+1,windCleaning.indexOf("\n"));
String fifthLineWR = temperature + "C " + pressure + "hPa " + humidity +"%";
String sixthLineWR = "(wind " + windSpeed + "m/s " + windDegrees + "deg)";
show_display("<WEATHER>", "From --> " + aprsPacket.sender, place, summary, fifthLineWR, sixthLineWR);
menuDisplay = 40;
menuTime = millis();
} else {
show_display("< MSG Rx >", "From --> " + aprsPacket.sender, "", aprsPacket.message , 3000);
if (!Config.simplifiedTrackerMode) {
saveNewMessage("APRS", aprsPacket.sender, aprsPacket.message);
}
}
}
}
}

View File

@ -12,6 +12,7 @@ int startUpSoundDuration[] = {100, 100, 100, 200};
//int shutDownSoundDuration[] = {60, 60, 200};
extern Configuration Config;
extern bool digirepeaterActive;
namespace NOTIFICATION_Utils {
@ -27,6 +28,9 @@ namespace NOTIFICATION_Utils {
void beaconTxBeep() {
digitalWrite(Config.notification.buzzerPinVcc, HIGH);
playTone(1320,100);
if (digirepeaterActive) {
playTone(1560,100);
}
digitalWrite(Config.notification.buzzerPinVcc, LOW);
}

View File

@ -183,7 +183,7 @@ namespace STATION_Utils {
} else {
if (callsign == firstNearTrackerCallsign) {
if (distance != firstDistance) {
Serial.print("Distance Updated for : "); Serial.println(callsign);
//Serial.print("Distance Updated for : "); Serial.println(callsign);
if (distance > secondDistance) {
firstNearTracker = secondNearTracker;
secondNearTracker = newTrackerInfo;
@ -193,7 +193,7 @@ namespace STATION_Utils {
}
} else if (callsign == secondNearTrackerCallsign) {
if (distance != secondDistance) {
Serial.print("Distance Updated for : "); Serial.println(callsign);
//Serial.print("Distance Updated for : "); Serial.println(callsign);
if (distance < firstDistance) {
secondNearTracker = firstNearTracker;
firstNearTracker = newTrackerInfo;
@ -223,7 +223,7 @@ namespace STATION_Utils {
} else {
if (callsign == firstNearTrackerCallsign) {
if (distance != firstDistance) {
Serial.print("Distance Updated for : "); Serial.println(callsign);
//Serial.print("Distance Updated for : "); Serial.println(callsign);
if (distance > thirdDistance) {
firstNearTracker = secondNearTracker;
secondNearTracker = thirdNearTracker;
@ -237,7 +237,7 @@ namespace STATION_Utils {
}
} else if (callsign == secondNearTrackerCallsign) {
if (distance != secondDistance) {
Serial.print("Distance Updated for : "); Serial.println(callsign);
//Serial.print("Distance Updated for : "); Serial.println(callsign);
if (distance > thirdDistance) {
secondNearTracker = thirdNearTracker;
thirdNearTracker = newTrackerInfo;
@ -250,7 +250,7 @@ namespace STATION_Utils {
}
} else if (callsign == thirdNearTrackerCallsign) {
if (distance != thirdDistance) {
Serial.print("Distance Updated for : "); Serial.println(callsign);
//Serial.print("Distance Updated for : "); Serial.println(callsign);
if (distance <= firstDistance) {
thirdNearTracker = secondNearTracker;
secondNearTracker = firstNearTracker;
@ -285,7 +285,7 @@ namespace STATION_Utils {
} else {
if (callsign == firstNearTrackerCallsign) {
if (distance != firstDistance) {
Serial.print("Distance Updated for : "); Serial.println(callsign);
//Serial.print("Distance Updated for : "); Serial.println(callsign);
if (distance > fourthDistance) {
firstNearTracker = secondNearTracker;
secondNearTracker = thirdNearTracker;
@ -304,7 +304,7 @@ namespace STATION_Utils {
}
} else if (callsign == secondNearTrackerCallsign) {
if (distance != secondDistance) {
Serial.print("Distance Updated for : "); Serial.println(callsign);
//Serial.print("Distance Updated for : "); Serial.println(callsign);
if (distance > fourthDistance) {
secondNearTracker = thirdNearTracker;
thirdNearTracker = fourthNearTracker;
@ -321,7 +321,7 @@ namespace STATION_Utils {
}
} else if (callsign == thirdNearTrackerCallsign) {
if (distance != thirdDistance) {
Serial.print("Distance Updated for : "); Serial.println(callsign);
//Serial.print("Distance Updated for : "); Serial.println(callsign);
if (distance > fourthDistance) {
thirdNearTracker = fourthNearTracker;
fourthNearTracker = newTrackerInfo;
@ -338,7 +338,7 @@ namespace STATION_Utils {
}
} else if (callsign == fourthNearTrackerCallsign) {
if (distance != fourthDistance) {
Serial.print("Distance Updated for : "); Serial.println(callsign);
//Serial.print("Distance Updated for : "); Serial.println(callsign);
if (distance > thirdDistance) {
fourthNearTracker = newTrackerInfo;
} else if (distance > secondDistance && distance <= thirdDistance) {