diff --git a/mlat/client/coordinator.py b/mlat/client/coordinator.py index c5c3a13..b6ccc9a 100644 --- a/mlat/client/coordinator.py +++ b/mlat/client/coordinator.py @@ -413,34 +413,33 @@ def received_df17(self, message, now): # not a position message return - ac.last_position_time = now + if message.even_cpr: + ac.even_message = message + else: + ac.odd_message = message + + if not ac.even_message or not ac.odd_message: + return + if abs(ac.even_message.timestamp - ac.odd_message.timestamp) > 5 * self.freq: + return if message.altitude is None: return # need an altitude + + ac.last_position_time = now + if message.nuc < 6: return # need NUCp >= 6 ac.recent_adsb_positions += 1 - if self.server.send_split_sync: - if not ac.requested: - return + if not ac.requested: + return + if self.server.send_split_sync: # this is a useful reference message self.server.send_split_sync(message) else: - if message.even_cpr: - ac.even_message = message - else: - ac.odd_message = message - - if not ac.requested: - return - if not ac.even_message or not ac.odd_message: - return - if abs(ac.even_message.timestamp - ac.odd_message.timestamp) > 5 * self.freq: - return - # this is a useful reference message pair self.server.send_sync(ac.even_message, ac.odd_message) diff --git a/mlat/client/version.py b/mlat/client/version.py index ce4758b..022aade 100644 --- a/mlat/client/version.py +++ b/mlat/client/version.py @@ -18,4 +18,4 @@ """Just a version constant!""" -CLIENT_VERSION = "0.2.14" +CLIENT_VERSION = "0.2.15" diff --git a/modes_message.c b/modes_message.c index 724fab8..29af1c8 100644 --- a/modes_message.c +++ b/modes_message.c @@ -456,6 +456,12 @@ static int decode(modesmessage *self) if (! (self->altitude = decode_ac12((self->data[5] << 4) | ((self->data[6] & 0xF0) >> 4)))) return -1; + + // crude check if there is any CPR data, if either cpr_lat or cpr_lon is mostly zeros, set invalid + if ((self->data[7] == 0 && (self->data[8] & 0x7F) == 0) || (self->data[9] == 0 && self->data[10] == 0)) { + self->valid = 0; + //fprintf(stderr, "%02x %02x %02x %02x\n", self->data[7], self->data[8], self->data[9], self->data[10]); + } } } break;