[hamradio-commits] [dump1090] 134/389: Additional Timestamps for Lat Lon

Matthew Ernisse mernisse-guest at moszumanska.debian.org
Wed Nov 5 00:19:48 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 71ace95fd48cf549cca9421dfb8620157e31d8a8
Author: Malcolm Robb <Support at ATTAvionics.com>
Date:   Tue May 7 21:52:54 2013 +0100

    Additional Timestamps for Lat Lon
    
    1) Implement additional timestamps to remember when a new Lat/Lon value
    is generated.
    
    2) Increase callsign[] character array to 16 chars  to make it long word
    aligned.
    
    3) Change some more comments from /* to //
---
 dump1090.c | 98 +++++++++++++++++++++++++++++++++-----------------------------
 1 file changed, 53 insertions(+), 45 deletions(-)

diff --git a/dump1090.c b/dump1090.c
index 5f0bb48..ce07cca 100644
--- a/dump1090.c
+++ b/dump1090.c
@@ -56,7 +56,7 @@
 // MinorVer changes when additional features are added, but not for bug fixes (range 00-99)
 // DayDate & Year changes for all changes, including for bug fixes. It represent the release date of the update
 //
-#define MODES_DUMP1090_VERSION     "1.04.0205.13"
+#define MODES_DUMP1090_VERSION     "1.04.0705.13"
 
 #define MODES_DEFAULT_RATE         2000000
 #define MODES_DEFAULT_FREQ         1090000000
@@ -140,12 +140,15 @@ struct client {
 // Structure used to describe an aircraft in iteractive mode
 struct aircraft {
     uint32_t addr;                // ICAO address
-    char flight[9];               // Flight number
+    char flight[16];              // Flight number
     unsigned char signalLevel[8]; // Last 8 Signal Amplitudes
     int altitude;                 // Altitude
     int speed;                    // Velocity computed from EW and NS components
     int track;                    // Angle of flight
     time_t seen;                  // Time at which the last packet was received
+    time_t seenLatLon;            // Time at which the last lat long was calculated
+    uint64_t timestamp;           // Timestamp at which the last packet was received
+    uint64_t timestampLatLon;     // Timestamp at which the last lat long was calculated
     long messages;                // Number of Mode S messages received
     int  modeA;                   // Squawk
     int  modeC;                   // Altitude
@@ -247,50 +250,50 @@ struct {
     unsigned int stat_ModeAC;
 } Modes;
 
-/* The struct we use to store information about a decoded message. */
+// The struct we use to store information about a decoded message.
 struct modesMessage {
-    /* Generic fields */
-    unsigned char msg[MODES_LONG_MSG_BYTES]; /* Binary message. */
-    int msgbits;                /* Number of bits in message */
-    int msgtype;                /* Downlink format # */
-    int crcok;                  /* True if CRC was valid */
-    uint32_t crc;               /* Message CRC */
-    int errorbit;               /* Bit corrected. -1 if no bit corrected. */
-    uint32_t addr;              /* ICAO Address from bytes 1 2 and 3 */
-    int phase_corrected;        /* True if phase correction was applied. */
-    uint64_t timestampMsg;      /* Timestamp of the message. */  
-    unsigned char signalLevel;  /* Signal Amplitude */
-
-    /* DF 11 */
-    int ca;                     /* Responder capabilities. */
+    // Generic fields
+    unsigned char msg[MODES_LONG_MSG_BYTES]; // Binary message.
+    int msgbits;                             // Number of bits in message 
+    int msgtype;                             // Downlink format #
+    int crcok;                               // True if CRC was valid
+    uint32_t crc;                            // Message CRC
+    int errorbit;                            // Bit corrected. -1 if no bit corrected
+    uint32_t addr;                           // ICAO Address from bytes 1 2 and 3
+    int phase_corrected;                     // True if phase correction was applied
+    uint64_t timestampMsg;                   // Timestamp of the message
+    unsigned char signalLevel;               // Signal Amplitude
+
+    // DF 11
+    int ca;                     // Responder capabilities
     int iid;
 
-    /* DF 17 */
-    int metype;                 /* Extended squitter message type. */
-    int mesub;                  /* Extended squitter message subtype. */
+    // DF 17
+    int metype;                 // Extended squitter message type.
+    int mesub;                  // Extended squitter message subtype.
     int heading_is_valid;
     int heading;
-    int fflag;                  /* 1 = Odd, 0 = Even CPR message. */
-    int tflag;                  /* UTC synchronized? */
-    int raw_latitude;           /* Non decoded latitude */
-    int raw_longitude;          /* Non decoded longitude */
-    char flight[9];             /* 8 chars flight number. */
-    int ew_dir;                 /* 0 = East, 1 = West. */
-    int ew_velocity;            /* E/W velocity. */
-    int ns_dir;                 /* 0 = North, 1 = South. */
-    int ns_velocity;            /* N/S velocity. */
-    int vert_rate_source;       /* Vertical rate source. */
-    int vert_rate_sign;         /* Vertical rate sign. */
-    int vert_rate;              /* Vertical rate. */
-    int velocity;               /* Computed from EW and NS velocity. */
-
-    /* DF4, DF5, DF20, DF21 */
-    int fs;                     /* Flight status for DF4,5,20,21 */
-    int dr;                     /* Request extraction of downlink request. */
-    int um;                     /* Request extraction of downlink request. */
-    int modeA;                  /* 13 bits identity (Squawk). */
-
-    /* Fields used by multiple message types. */
+    int fflag;                  // 1 = Odd, 0 = Even CPR message.
+    int tflag;                  // UTC synchronized?
+    int raw_latitude;           // Non decoded latitude.
+    int raw_longitude;          // Non decoded longitude.
+    char flight[16];            // 8 chars flight number.
+    int ew_dir;                 // 0 = East, 1 = West.
+    int ew_velocity;            // E/W velocity.
+    int ns_dir;                 // 0 = North, 1 = South.
+    int ns_velocity;            // N/S velocity.
+    int vert_rate_source;       // Vertical rate source.
+    int vert_rate_sign;         // Vertical rate sign.
+    int vert_rate;              // Vertical rate.
+    int velocity;               // Computed from EW and NS velocity.
+
+    // DF4, DF5, DF20, DF21
+    int fs;                     // Flight status for DF4,5,20,21
+    int dr;                     // Request extraction of downlink request.
+    int um;                     // Request extraction of downlink request.
+    int modeA;                  // 13 bits identity (Squawk).
+
+    // Fields used by multiple message types.
     int altitude, unit; 
 };
 
@@ -2122,7 +2125,6 @@ struct aircraft *interactiveCreateAircraft(struct modesMessage *mm) {
                                                 // to the first signal strength
     a->lat          = 0.0;
     a->lon          = 0.0;
-    a->seen         = time(NULL);
 
     // mm->msgtype 32 is used to represent Mode A/C. These values can never change, so 
     // set them once here during initialisation, and don't bother to set them every 
@@ -2347,7 +2349,9 @@ void decodeCPR(struct aircraft *a, int fflag, int surface) {
     }
     if (a->lon > 180) a->lon -= 360;
 
-    a->sbsflags |= MODES_SBS_LAT_LONG_FRESH;
+    a->seenLatLon      = a->seen;
+    a->timestampLatLon = a->timestamp;
+    a->sbsflags       |= MODES_SBS_LAT_LONG_FRESH;
 }
 
 /* This algorithm comes from:
@@ -2413,7 +2417,10 @@ int decodeCPRrelative(struct aircraft *a, int fflag, int surface, double latr, d
 
     a->lat = rlat;
     a->lon = rlon;
-    a->sbsflags |= MODES_SBS_LAT_LONG_FRESH;
+
+    a->seenLatLon      = a->seen;
+    a->timestampLatLon = a->timestamp;
+    a->sbsflags       |= MODES_SBS_LAT_LONG_FRESH;
 
     return (0);
 }
@@ -2450,7 +2457,8 @@ struct aircraft *interactiveReceiveData(struct modesMessage *mm) {
     }
 
     a->signalLevel[a->messages & 7] = mm->signalLevel;// replace the 8th oldest signal strength
-    a->seen = time(NULL);
+    a->seen      = time(NULL);
+    a->timestamp = mm->timestampMsg;
     a->messages++;
 
     if (mm->msgtype == 0 || mm->msgtype == 4 || mm->msgtype == 20) {

-- 
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