From c05aea65a4efc70c28595e5c40db57055ffe592b Mon Sep 17 00:00:00 2001 From: Oliver Jowett Date: Mon, 21 Jan 2019 20:11:12 +0000 Subject: [PATCH] Don't use DF18 when updating the known-Mode-S-address set. DF18 transponders don't necessarily do Mode S, so we shouldn't assume that Mode S messages from that address are valid merely because we heard a DF18. If it really is Mode S equipped, we should hear a DF11 at some point. --- mode_s.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mode_s.c b/mode_s.c index 606ddf7..e8387a1 100644 --- a/mode_s.c +++ b/mode_s.c @@ -681,12 +681,12 @@ int decodeModesMessage(struct modesMessage *mm, unsigned char *msg) mm->airground = AG_UNCERTAIN; } - if (!mm->correctedbits && (mm->msgtype == 17 || mm->msgtype == 18 || (mm->msgtype == 11 && mm->IID == 0))) { - // No CRC errors seen, and either it was an DF17/18 extended squitter + if (!mm->correctedbits && (mm->msgtype == 17 || (mm->msgtype == 11 && mm->IID == 0))) { + // No CRC errors seen, and either it was an DF17 extended squitter // or a DF11 acquisition squitter with II = 0. We probably have the right address. - // We wait until here to do this as we may have needed to decode an ES to note - // the type of address in DF18 messages. + // Don't do this for DF18, as a DF18 transmitter doesn't necessarily have a + // Mode S transponder. // NB this is the only place that adds addresses! icaoFilterAdd(mm->addr);