From 14a003710e68be97e75fabf7e794fe718145da4a Mon Sep 17 00:00:00 2001 From: Oliver Jowett Date: Sat, 24 Sep 2016 16:09:38 +0100 Subject: [PATCH] faup1090: Track Comm-B ACAS RA separately to ES ACAS RA as it's useful to see both reported. Fix repeated reporting of ES ACAS RA reports. --- net_io.c | 4 ++-- track.c | 4 +++- track.h | 1 + 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/net_io.c b/net_io.c index d0e7359..51a9bec 100644 --- a/net_io.c +++ b/net_io.c @@ -1754,10 +1754,10 @@ static void writeFATSVEvent(struct modesMessage *mm, struct aircraft *a) case 17: case 18: // DF 17/18: extended squitter - if (mm->metype == 28 && mm->mesub == 2 && memcmp(&mm->ME[1], &a->fatsv_emitted_bds_30[1], 6) != 0) { + if (mm->metype == 28 && mm->mesub == 2 && memcmp(mm->ME, &a->fatsv_emitted_es_acas_ra, 7) != 0) { // type 28 subtype 2: ACAS RA report // first byte has the type/subtype, remaining bytes match the BDS 3,0 format - memcpy(a->fatsv_emitted_bds_30, &mm->ME[1], 6); + memcpy(a->fatsv_emitted_es_acas_ra, mm->ME, 7); writeFATSVEventMessage(mm, "es_acas_ra", mm->ME, 7); } else if (mm->metype == 31 && (mm->mesub == 0 || mm->mesub == 1) && memcmp(mm->ME, a->fatsv_emitted_es_status, 7) != 0) { // aircraft operational status diff --git a/track.c b/track.c index 7fff6f7..27172f8 100644 --- a/track.c +++ b/track.c @@ -71,8 +71,10 @@ struct aircraft *trackCreateAircraft(struct modesMessage *mm) { a->signalLevel[i] = 1e-5; a->signalNext = 0; - // start off with the "last emitted" ACAS RA being blank (just the BDS 3,0 code) + // start off with the "last emitted" ACAS RA being blank (just the BDS 3,0 + // or ES type code) a->fatsv_emitted_bds_30[0] = 0x30; + a->fatsv_emitted_es_acas_ra[0] = 0xE2; // 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 diff --git a/track.h b/track.h index 574c29f..9326f10 100644 --- a/track.h +++ b/track.h @@ -150,6 +150,7 @@ struct aircraft { unsigned char fatsv_emitted_bds_30[7]; // -"- BDS 3,0 message unsigned char fatsv_emitted_es_status[7]; // -"- ES operational status message unsigned char fatsv_emitted_es_target[7]; // -"- ES target status message + unsigned char fatsv_emitted_es_acas_ra[7]; // -"- ES ACAS RA report message uint64_t fatsv_last_emitted; // time (millis) aircraft was last FA emitted