PacketDecoding fix to avoid self digirepeated

This commit is contained in:
richonguzman 2024-07-05 15:40:06 -04:00
parent caff225a22
commit 6e294c6ce9
1 changed files with 44 additions and 43 deletions

View File

@ -282,51 +282,52 @@ namespace MENU_Utils {
break;
case 300: //3.Stations ---> Packet Decoder
firstLineDecoder = lastReceivedPacket.sender;
for(int i = firstLineDecoder.length(); i < 9; i++) {
firstLineDecoder += ' ';
}
firstLineDecoder += lastReceivedPacket.symbol;
if (lastReceivedPacket.sender != currentBeacon->callsign) {
firstLineDecoder = lastReceivedPacket.sender;
for(int i = firstLineDecoder.length(); i < 9; i++) {
firstLineDecoder += ' ';
}
firstLineDecoder += lastReceivedPacket.symbol;
if (lastReceivedPacket.type == 0 || lastReceivedPacket.type == 4) { // gps and Mic-E gps
courseSpeedAltitude = String(lastReceivedPacket.altitude);
for(int j = courseSpeedAltitude.length(); j < 4; j++) {
courseSpeedAltitude = '0' + courseSpeedAltitude;
}
courseSpeedAltitude = "A=" + courseSpeedAltitude + "m ";
speedPacketDec = String(lastReceivedPacket.speed);
for (int k = speedPacketDec.length(); k < 3; k++) {
speedPacketDec = ' ' + speedPacketDec;
}
courseSpeedAltitude += speedPacketDec + "km/h ";
for(int l = courseSpeedAltitude.length(); l < 17; l++) {
courseSpeedAltitude += ' ';
}
coursePacketDec = String(lastReceivedPacket.course);
for(int m = coursePacketDec.length(); m < 3; m++) {
coursePacketDec = ' ' + coursePacketDec;
}
courseSpeedAltitude += coursePacketDec;
double distanceKm = TinyGPSPlus::distanceBetween(gps.location.lat(), gps.location.lng(), lastReceivedPacket.latitude, lastReceivedPacket.longitude) / 1000.0;
double courseTo = TinyGPSPlus::courseTo(gps.location.lat(), gps.location.lng(), lastReceivedPacket.latitude, lastReceivedPacket.longitude);
if (lastReceivedPacket.path.length()>14) {
pathDec = "P:";
} else {
pathDec = "PATH: ";
}
pathDec += lastReceivedPacket.path;
if (lastReceivedPacket.type==0 || lastReceivedPacket.type==4) { // gps and Mic-E gps
courseSpeedAltitude = String(lastReceivedPacket.altitude);
for(int j = courseSpeedAltitude.length(); j < 4; j++) {
courseSpeedAltitude = '0' + courseSpeedAltitude;
show_display(firstLineDecoder, "GPS " + String(lastReceivedPacket.latitude,2) + " " + String(lastReceivedPacket.longitude,2), courseSpeedAltitude, "D:" + String(distanceKm) + "km " + String(courseTo,0), pathDec, "< RSSI:" + String(lastReceivedPacket.rssi) + " SNR:" + String(lastReceivedPacket.snr));
} else if (lastReceivedPacket.type == 1) { // message
show_display(firstLineDecoder, "ADDRESSEE: " + lastReceivedPacket.addressee, "MSG: " + lastReceivedPacket.message, "", "", "< RSSI:" + String(lastReceivedPacket.rssi) + " SNR:" + String(lastReceivedPacket.snr));
} else if (lastReceivedPacket.type == 2) { // status
show_display(firstLineDecoder, "-------STATUS-------", lastReceivedPacket.message, "", "", "< RSSI:" + String(lastReceivedPacket.rssi) + " SNR:" + String(lastReceivedPacket.snr));
} else if (lastReceivedPacket.type == 3) { // telemetry
show_display(firstLineDecoder, "------TELEMETRY------", "", "", "", "< RSSI:" + String(lastReceivedPacket.rssi) + " SNR:" + String(lastReceivedPacket.snr));
} else if (lastReceivedPacket.type == 5) { // object
show_display(firstLineDecoder, "-------OBJECT-------", "", "", "", "< RSSI:" + String(lastReceivedPacket.rssi) + " SNR:" + String(lastReceivedPacket.snr));
}
courseSpeedAltitude = "A=" + courseSpeedAltitude + "m ";
speedPacketDec = String(lastReceivedPacket.speed);
for (int k = speedPacketDec.length(); k < 3; k++) {
speedPacketDec = ' ' + speedPacketDec;
}
courseSpeedAltitude += speedPacketDec + "km/h ";
for(int l = courseSpeedAltitude.length(); l < 17; l++) {
courseSpeedAltitude += ' ';
}
coursePacketDec = String(lastReceivedPacket.course);
for(int m = coursePacketDec.length(); m < 3; m++) {
coursePacketDec = ' ' + coursePacketDec;
}
courseSpeedAltitude += coursePacketDec;
double distanceKm = TinyGPSPlus::distanceBetween(gps.location.lat(), gps.location.lng(), lastReceivedPacket.latitude, lastReceivedPacket.longitude) / 1000.0;
double courseTo = TinyGPSPlus::courseTo(gps.location.lat(), gps.location.lng(), lastReceivedPacket.latitude, lastReceivedPacket.longitude);
if (lastReceivedPacket.path.length()>14) {
pathDec = "P:";
} else {
pathDec = "PATH: ";
}
pathDec += lastReceivedPacket.path;
show_display(firstLineDecoder, "GPS " + String(lastReceivedPacket.latitude,2) + " " + String(lastReceivedPacket.longitude,2), courseSpeedAltitude, "D:" + String(distanceKm) + "km " + String(courseTo,0), pathDec, "< RSSI:" + String(lastReceivedPacket.rssi) + " SNR:" + String(lastReceivedPacket.snr));
} else if (lastReceivedPacket.type==1) { // message
show_display(firstLineDecoder, "ADDRESSEE: " + lastReceivedPacket.addressee, "MSG: " + lastReceivedPacket.message, "", "", "< RSSI:" + String(lastReceivedPacket.rssi) + " SNR:" + String(lastReceivedPacket.snr));
} else if (lastReceivedPacket.type==2) { // status
show_display(firstLineDecoder, "-------STATUS-------", lastReceivedPacket.message, "", "", "< RSSI:" + String(lastReceivedPacket.rssi) + " SNR:" + String(lastReceivedPacket.snr));
} else if (lastReceivedPacket.type==3) { // telemetry
show_display(firstLineDecoder, "------TELEMETRY------", "", "", "", "< RSSI:" + String(lastReceivedPacket.rssi) + " SNR:" + String(lastReceivedPacket.snr));
} else if (lastReceivedPacket.type==5) { // object
show_display(firstLineDecoder, "-------OBJECT-------", "", "", "", "< RSSI:" + String(lastReceivedPacket.rssi) + " SNR:" + String(lastReceivedPacket.snr));
}
break;
case 310: //3.Stations ---> Near By Stations