Rework heading/track to include HRD/TAH.

Clean up TIS-B flag output.
This commit is contained in:
Oliver Jowett 2017-06-15 21:07:53 +01:00
parent 05e9601903
commit 1ec32903ba
6 changed files with 169 additions and 61 deletions

View file

@ -177,11 +177,6 @@ typedef enum {
AG_UNCERTAIN
} airground_t;
typedef enum {
HEADING_TRUE,
HEADING_MAGNETIC
} heading_source_t;
typedef enum {
SIL_PER_SAMPLE, SIL_PER_HOUR
} sil_type_t;
@ -190,6 +185,14 @@ typedef enum {
CPR_SURFACE, CPR_AIRBORNE, CPR_COARSE
} cpr_type_t;
typedef enum {
HEADING_GROUND_TRACK, // Direction of track over ground, degrees clockwise from true north
HEADING_TRUE, // Heading, degrees clockwise from true north
HEADING_MAGNETIC, // Heading, degrees clockwise from magnetic north
HEADING_MAGNETIC_OR_TRUE, // HEADING_MAGNETIC or HEADING_TRUE depending on the HRD bit in opstatus
HEADING_TRACK_OR_HEADING // HEADING_GROUND_TRACK or HEADING_REF_DIR depending on the TAH bit in opstatus
} heading_type_t;
typedef enum {
COMMB_UNKNOWN,
COMMB_EMPTY_RESPONSE,
@ -414,7 +417,7 @@ struct modesMessage {
unsigned altitude_valid : 1;
unsigned track_valid : 1;
unsigned track_rate_valid : 1;
unsigned mag_heading_valid : 1;
unsigned heading_valid : 1;
unsigned roll_valid : 1;
unsigned gs_valid : 1;
unsigned ias_valid : 1;
@ -449,9 +452,9 @@ struct modesMessage {
// following fields are valid if the corresponding _valid field is set:
int geom_delta; // Difference between geometric and baro alt
float track; // True ground track, degrees (0-359). Reported directly or computed from from EW and NS velocity
float heading; // ground track or heading, degrees (0-359). Reported directly or computed from from EW and NS velocity
heading_type_t heading_type;// how to interpret 'track_or_heading'
float track_rate; // Rate of change of track, degrees/second
float mag_heading; // Magnetic heading, degrees (0-359)
float roll; // Roll, degrees, negative is left roll
unsigned gs; // Groundspeed, kts, reported directly or computed from from EW and NS velocity
unsigned ias; // Indicated airspeed, kts
@ -506,8 +509,8 @@ struct modesMessage {
unsigned nic_baro : 1;
sil_type_t sil_type;
enum { ANGLE_HEADING, ANGLE_TRACK } track_angle;
heading_source_t hrd;
heading_type_t tah;
heading_type_t hrd;
unsigned cc_lw;
unsigned cc_antenna_offset;