From e444d2eb5c9bd1b0c51b55ed0e3f734bbd3937f8 Mon Sep 17 00:00:00 2001 From: Oliver Jowett Date: Thu, 6 Jun 2019 14:14:46 +0800 Subject: [PATCH] Fix reversed sense of Track Angle / Heading bit in surface opstatus messages. --- mode_s.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/mode_s.c b/mode_s.c index 3767167..b0c67ab 100644 --- a/mode_s.c +++ b/mode_s.c @@ -1280,7 +1280,10 @@ static void decodeESOperationalStatus(struct modesMessage *mm, int check_imf) mm->accuracy.nic_baro_valid = 1; mm->accuracy.nic_baro = getbit(me, 53); } else { - mm->opstatus.tah = getbit(me, 53) ? HEADING_GROUND_TRACK : mm->opstatus.hrd; + // see DO=260B §2.2.3.2.7.2.12 + // TAH=0 : surface movement reports ground track + // TAH=1 : surface movement reports aircraft heading + mm->opstatus.tah = getbit(me, 53) ? mm->opstatus.hrd : HEADING_GROUND_TRACK; } break; @@ -1330,7 +1333,10 @@ static void decodeESOperationalStatus(struct modesMessage *mm, int check_imf) mm->accuracy.nic_baro_valid = 1; mm->accuracy.nic_baro = getbit(me, 53); } else { - mm->opstatus.tah = getbit(me, 53) ? HEADING_GROUND_TRACK : mm->opstatus.hrd; + // see DO=260B §2.2.3.2.7.2.12 + // TAH=0 : surface movement reports ground track + // TAH=1 : surface movement reports aircraft heading + mm->opstatus.tah = getbit(me, 53) ? mm->opstatus.hrd : HEADING_GROUND_TRACK; } break; }