From 11502e9ec93ce40854e01653c42c77759904cc79 Mon Sep 17 00:00:00 2001 From: Malcolm Robb Date: Fri, 4 Oct 2013 18:33:49 +0100 Subject: [PATCH] Extra list decoding for DF-0 and DF-16 Extra list decoding for DF-0 and DF-16 Tidy up a few things Change version number --- Release/view1090.exe | Bin 86016 -> 90112 bytes dump1090.h | 2 +- mode_s.c | 22 ++++++++++++++++------ 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/Release/view1090.exe b/Release/view1090.exe index 83ec3a9e2e7561076bdb7b9859f8785ccf550206..9732dc21633a932ed668f2f494b709b24a2c090c 100644 GIT binary patch delta 25788 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 0) - printf("[%.3d] |%-66s %d\n", index, buf, magnitude); + printf("[%.3d] |%-66s 0x%04X\n", index, buf, magnitude); else - printf("[%.2d] |%-66s %d\n", index, buf, magnitude); + printf("[%.2d] |%-66s 0x%04X\n", index, buf, magnitude); } // //========================================================================= @@ -443,10 +443,10 @@ void dumpRawMessage(char *descr, unsigned char *msg, uint16_t *m, uint32_t offse char bitpos[MODES_MAX_BITERRORS]; for (j = 0; j < MODES_MAX_BITERRORS; j++) { - bitpos[j] = -1; + bitpos[j] = -1; } if (msgtype == 17) { - fixable = fixBitErrors(msg, MODES_LONG_MSG_BITS, MODES_MAX_BITERRORS, bitpos); + fixable = fixBitErrors(msg, MODES_LONG_MSG_BITS, MODES_MAX_BITERRORS, bitpos); } if (Modes.debug & MODES_DEBUG_JS) { @@ -625,8 +625,9 @@ int ICAOAddressWasRecentlySeen(uint32_t addr) { uint32_t h = ICAOCacheHashAddress(addr); uint32_t a = Modes.icao_cache[h*2]; uint32_t t = Modes.icao_cache[h*2+1]; + uint64_t tn = time(NULL); - return a && a == addr && time(NULL)-t <= MODES_ICAO_CACHE_TTL; + return ( (a) && (a == addr) && ( (tn - t) <= MODES_ICAO_CACHE_TTL) ); } // //========================================================================= @@ -750,7 +751,7 @@ char *ca_str[8] = { /* 2 */ "Level 3 (DF0,4,5,11,20,21)", /* 3 */ "Level 4 (DF0,4,5,11,20,21,24)", /* 4 */ "Level 2+3+4 (DF0,4,5,11,20,21,24,code7 - is on ground)", - /* 5 */ "Level 2+3+4 (DF0,4,5,11,20,21,24,code7 - is on airborne)", + /* 5 */ "Level 2+3+4 (DF0,4,5,11,20,21,24,code7 - is airborne)", /* 6 */ "Level 2+3+4 (DF0,4,5,11,20,21,24,code7)", /* 7 */ "Level 7 ???" }; @@ -1128,6 +1129,9 @@ void displayModesMessage(struct modesMessage *mm) { if (mm->msgtype == 0) { // DF 0 printf("DF 0: Short Air-Air Surveillance.\n"); + printf(" VS : %s\n", (mm->msg[0] & 0x04) ? "Ground" : "Airborne"); + printf(" CC : %d\n", ((mm->msg[0] & 0x02) >> 1)); + printf(" SL : %d\n", ((mm->msg[1] & 0xE0) >> 5)); printf(" Altitude : %d %s\n", mm->altitude, (mm->unit == MODES_UNIT_METERS) ? "meters" : "feet"); printf(" ICAO Address : %06x\n", mm->addr); @@ -1212,6 +1216,12 @@ void displayModesMessage(struct modesMessage *mm) { } else if (mm->msgtype == 16) { // DF 16 printf("DF 16: Long Air to Air ACAS\n"); + printf(" VS : %s\n", (mm->msg[0] & 0x04) ? "Ground" : "Airborne"); + printf(" CC : %d\n", ((mm->msg[0] & 0x02) >> 1)); + printf(" SL : %d\n", ((mm->msg[1] & 0xE0) >> 5)); + printf(" Altitude : %d %s\n", mm->altitude, + (mm->unit == MODES_UNIT_METERS) ? "meters" : "feet"); + printf(" ICAO Address : %06x\n", mm->addr); } else if (mm->msgtype == 17) { // DF 17 printf("DF 17: ADS-B message.\n");