Skip to content

Commit c89fd41

Browse files
committed
Switch FMS/MCP altitudes to signed ints.
These altitudes can be negative in DO-260A (v1) Target State and Status messages; previously we'd accidentally cast those to unsigned, producing a bogus large positive altitude.
1 parent 2b5f937 commit c89fd41

File tree

4 files changed

+12
-12
lines changed

4 files changed

+12
-12
lines changed

dump1090.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -628,8 +628,8 @@ struct modesMessage {
628628

629629
float heading; // heading, degrees (0-359) (could be magnetic or true heading; magnetic recommended)
630630
heading_type_t heading_type;
631-
unsigned fms_altitude; // FMS selected altitude
632-
unsigned mcp_altitude; // MCP/FCU selected altitude
631+
int fms_altitude; // FMS selected altitude
632+
int mcp_altitude; // MCP/FCU selected altitude
633633
float qnh; // altimeter setting (QFE or QNH/QNE), millibars
634634

635635
nav_altitude_source_t altitude_source;

mode_s.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -2212,9 +2212,9 @@ void displayModesMessage(struct modesMessage *mm) {
22122212
if (mm->nav.heading_valid)
22132213
printf(" Selected heading: %.1f\n", mm->nav.heading);
22142214
if (mm->nav.fms_altitude_valid)
2215-
printf(" FMS selected altitude: %u ft\n", mm->nav.fms_altitude);
2215+
printf(" FMS selected altitude: %d ft\n", mm->nav.fms_altitude);
22162216
if (mm->nav.mcp_altitude_valid)
2217-
printf(" MCP selected altitude: %u ft\n", mm->nav.mcp_altitude);
2217+
printf(" MCP selected altitude: %d ft\n", mm->nav.mcp_altitude);
22182218
if (mm->nav.qnh_valid)
22192219
printf(" QNH: %.1f millibars\n", mm->nav.qnh);
22202220
if (mm->nav.altitude_source != NAV_ALT_INVALID) {

net_io.c

+4-4
Original file line numberDiff line numberDiff line change
@@ -2706,8 +2706,8 @@ static void writeFATSV()
27062706
(trackDataValid(&a->mach_valid) && fabs(a->mach - a->fatsv_emitted_mach) >= 0.02);
27072707

27082708
int immediate =
2709-
(trackDataValid(&a->nav_altitude_mcp_valid) && unsigned_difference(a->nav_altitude_mcp, a->fatsv_emitted_nav_altitude_mcp) > 50) ||
2710-
(trackDataValid(&a->nav_altitude_fms_valid) && unsigned_difference(a->nav_altitude_fms, a->fatsv_emitted_nav_altitude_fms) > 50) ||
2709+
(trackDataValid(&a->nav_altitude_mcp_valid) && abs(a->nav_altitude_mcp - a->fatsv_emitted_nav_altitude_mcp) > 50) ||
2710+
(trackDataValid(&a->nav_altitude_fms_valid) && abs(a->nav_altitude_fms - a->fatsv_emitted_nav_altitude_fms) > 50) ||
27112711
(trackDataValid(&a->nav_altitude_src_valid) && a->nav_altitude_src != a->fatsv_emitted_nav_altitude_src) ||
27122712
(trackDataValid(&a->nav_heading_valid) && heading_difference(a->nav_heading, a->fatsv_emitted_nav_heading) > 2) ||
27132713
(trackDataValid(&a->nav_modes_valid) && a->nav_modes != a->fatsv_emitted_nav_modes) ||
@@ -2821,8 +2821,8 @@ static void writeFATSV()
28212821
p = appendFATSVMeta(p, end, "roll", a, &a->roll_valid, "%.1f", a->roll);
28222822
p = appendFATSVMeta(p, end, "heading_magnetic", a, &a->mag_heading_valid, "%.1f", a->mag_heading);
28232823
p = appendFATSVMeta(p, end, "heading_true", a, &a->true_heading_valid, "%.1f", a->true_heading);
2824-
p = appendFATSVMeta(p, end, "nav_alt_mcp", a, &a->nav_altitude_mcp_valid, "%u", a->nav_altitude_mcp);
2825-
p = appendFATSVMeta(p, end, "nav_alt_fms", a, &a->nav_altitude_fms_valid, "%u", a->nav_altitude_fms);
2824+
p = appendFATSVMeta(p, end, "nav_alt_mcp", a, &a->nav_altitude_mcp_valid, "%d", a->nav_altitude_mcp);
2825+
p = appendFATSVMeta(p, end, "nav_alt_fms", a, &a->nav_altitude_fms_valid, "%d", a->nav_altitude_fms);
28262826
p = appendFATSVMeta(p, end, "nav_alt_src", a, &a->nav_altitude_src_valid, "%s", nav_altitude_source_enum_string(a->nav_altitude_src));
28272827
p = appendFATSVMeta(p, end, "nav_heading", a, &a->nav_heading_valid, "%.1f", a->nav_heading);
28282828
p = appendFATSVMeta(p, end, "nav_modes", a, &a->nav_modes_valid, "{%s}", nav_modes_flags_string(a->nav_modes));

track.h

+4-4
Original file line numberDiff line numberDiff line change
@@ -167,10 +167,10 @@ struct aircraft {
167167
float nav_qnh; // Altimeter setting (QNH/QFE), millibars
168168

169169
data_validity nav_altitude_mcp_valid;
170-
unsigned nav_altitude_mcp; // FCU/MCP selected altitude
170+
int nav_altitude_mcp; // FCU/MCP selected altitude
171171

172172
data_validity nav_altitude_fms_valid;
173-
unsigned nav_altitude_fms; // FMS selected altitude
173+
int nav_altitude_fms; // FMS selected altitude
174174

175175
data_validity nav_altitude_src_valid;
176176
nav_altitude_source_t nav_altitude_src; // source of altitude used by automation
@@ -259,8 +259,8 @@ struct aircraft {
259259
unsigned fatsv_emitted_tas; // -"- TAS
260260
float fatsv_emitted_mach; // -"- Mach number
261261
airground_t fatsv_emitted_airground; // -"- air/ground state
262-
unsigned fatsv_emitted_nav_altitude_mcp; // -"- MCP altitude
263-
unsigned fatsv_emitted_nav_altitude_fms; // -"- FMS altitude
262+
int fatsv_emitted_nav_altitude_mcp; // -"- MCP altitude
263+
int fatsv_emitted_nav_altitude_fms; // -"- FMS altitude
264264
nav_altitude_source_t fatsv_emitted_nav_altitude_src; // -"- automation altitude source
265265
float fatsv_emitted_nav_heading; // -"- target heading
266266
nav_modes_t fatsv_emitted_nav_modes; // -"- enabled navigation modes

0 commit comments

Comments
 (0)