[hamradio-commits] [dump1090] 192/389: VK1ET : Use error corrected DF17

Matthew Ernisse mernisse-guest at moszumanska.debian.org
Wed Nov 5 00:19:54 UTC 2014


This is an automated email from the git hooks/post-receive script.

mernisse-guest pushed a commit to branch master
in repository dump1090.

commit be6cb6eaf001f6570f37e03395591e4a496063a0
Author: Malcolm Robb <Support at ATTAvionics.com>
Date:   Tue May 21 16:43:07 2013 +0100

    VK1ET : Use error corrected DF17
    
    Actually use the (DF17) messages where we do bit correction.
    
    Other changes to AVR message I/O.
    1) treat mlat timestamp of zero as invalid (easier to work with than
    (-1) and equally unlikely).
    2) If we don't have a valid timestamp send a without timestamp
    '*.......' message rather than '@.......' with invalid time.
    3) Drop interpretation of obsolete AVR ' #' & '$' formats - they
    wouldn't have worked anyway (wrong length).
---
 dump1090.c | 26 +++++++++++++-------------
 1 file changed, 13 insertions(+), 13 deletions(-)

diff --git a/dump1090.c b/dump1090.c
index f7fb858..49cf851 100644
--- a/dump1090.c
+++ b/dump1090.c
@@ -1974,7 +1974,7 @@ void displayModesMessage(struct modesMessage *mm) {
     }
 
     // Show the raw message.
-    if (Modes.mlat) {
+    if (Modes.mlat && mm->timestampMsg) {
         printf("@");
         pTimeStamp = (unsigned char *) &mm->timestampMsg;
         for (j=5; j>=0;j--) {
@@ -2465,7 +2465,7 @@ void detectModeS(uint16_t *m, uint32_t mlen) {
 
             // Update statistics
             if (Modes.stats) {
-                if (mm.crcok || use_correction) {
+                if (mm.crcok || use_correction || !mm.crc) {
                     if (errors == 0) Modes.stat_demodulated++;
                     if (mm.correctedbits == 0) {
                         if (mm.crcok) {Modes.stat_goodcrc++;}
@@ -2542,7 +2542,7 @@ void detectModeS(uint16_t *m, uint32_t mlen) {
 // processing and visualization
 //
 void useModesMessage(struct modesMessage *mm) {
-    if ((Modes.check_crc == 0) || (mm->crcok)) {
+    if ((Modes.check_crc == 0) || (mm->crcok) || (mm->crc == 0)) { // not checking, ok or fixed
 
         // Track aircrafts if...
         if ( (Modes.interactive)          //       in interactive mode
@@ -2916,7 +2916,9 @@ int decodeCPRrelative(struct aircraft *a, int fflag, int surface) {
 struct aircraft *interactiveReceiveData(struct modesMessage *mm) {
     struct aircraft *a, *aux;
 
-    if (Modes.check_crc && mm->crcok == 0) return NULL;
+    // Return if (checking crc) AND (not crcok) AND (not fixed)
+    if (Modes.check_crc && (mm->crcok == 0) && mm->crc) 
+        return NULL;
 
     // Loookup our aircraft or create a new one
     a = interactiveFindAircraft(mm->addr);
@@ -3357,7 +3359,7 @@ void modesSendRawOutput(struct modesMessage *mm) {
     int j;
     unsigned char * pTimeStamp;
 
-    if (Modes.mlat) {
+    if (Modes.mlat && mm->timestampMsg) {
         *p++ = '@';
         pTimeStamp = (unsigned char *) &mm->timestampMsg;
         for (j = 5; j >= 0; j--) {
@@ -3429,7 +3431,7 @@ void modesSendSBSOutput(struct modesMessage *mm) {
     p += sprintf(p, "MSG,%d,111,11111,%06X,111111,", msgType, mm->addr); 
 
     // Fields 7 & 8 are the current time and date
-    if (mm->timestampMsg != (uint64_t)(-1)) {                     // Make sure the records' timestamp is valid before outputing it
+    if (mm->timestampMsg) {                                       // Make sure the records' timestamp is valid before outputing it
         epocTime = Modes.stSystemTimeBlk;                         // This is the time of the start of the Block we're processing
         offset   = (int) (mm->timestampMsg - Modes.timestampBlk); // This is the time (in 12Mhz ticks) into the Block
         offset   = offset / 12000;                                // convert to milliseconds
@@ -3559,7 +3561,7 @@ int decodeHexMessage(struct client *c) {
     // Mixing of data from two or more different receivers and publishing
     // as coming from one would lead to corrupt mlat data
     // Non timemarked internet data has indeterminate delay
-    mm.timestampMsg = -1;
+    mm.timestampMsg =  0;
     mm.signalLevel  = -1;
 
     // Remove spaces on the left and on the right
@@ -3572,7 +3574,7 @@ int decodeHexMessage(struct client *c) {
 
     // Turn the message into binary.
     // Accept *-AVR raw @-AVR/BEAST timeS+raw %-AVR timeS+raw (CRC good) <-BEAST timeS+sigL+raw
-    // and some AVR recorer that we can understand
+    // and some AVR records that we can understand
     if (hex[l-1] != ';') {return (0);} // not complete - abort
 
     switch(hex[0]) {
@@ -3581,11 +3583,9 @@ int decodeHexMessage(struct client *c) {
             hex += 15; l -= 16; // Skip <, timestamp and siglevel, and ;
             break;}
 
-        case '@':
-        case '%':
-        case '#':
-        case '$': {
-            hex += 13; l -= 14; // Skip @,%,#,$, and timestamp, and ;
+        case '@':     // No CRC check
+        case '%': {   // CRC is OK
+            hex += 13; l -= 14; // Skip @,%, and timestamp, and ;
             break;}
 
         case '*':

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-hamradio/dump1090.git



More information about the pkg-hamradio-commits mailing list