diff --git a/src/menu_utils.cpp b/src/menu_utils.cpp index fc87396..29b60f8 100644 --- a/src/menu_utils.cpp +++ b/src/menu_utils.cpp @@ -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