Move Mode C altitude calc into mode A/C message decoding.
If SPI is set, it cannot be mode C.
This commit is contained in:
parent
85aa200947
commit
7a58e3cdc5
|
@ -93,6 +93,15 @@ void decodeModeAMessage(struct modesMessage *mm, int ModeA)
|
|||
// Flag ident in flight status
|
||||
mm->fs = ModeA & 0x0080;
|
||||
|
||||
// Decode an altitude if this looks like a possible mode C
|
||||
if (!mm->fs) {
|
||||
int modeC = ModeAToModeC(ModeA);
|
||||
if (modeC >= -12) {
|
||||
mm->altitude = modeC * 100;
|
||||
mm->bFlags |= MODES_ACFLAGS_ALTITUDE_VALID;
|
||||
}
|
||||
}
|
||||
|
||||
// Not much else we can tell from a Mode A/C reply.
|
||||
// Just fudge up a few bits to keep other code happy
|
||||
mm->correctedbits = 0;
|
||||
|
|
6
track.c
6
track.c
|
@ -73,13 +73,9 @@ struct aircraft *trackCreateAircraft(struct modesMessage *mm) {
|
|||
// set them once here during initialisation, and don't bother to set them every
|
||||
// time this ModeA/C is received again in the future
|
||||
if (mm->msgtype == 32) {
|
||||
int modeC = ModeAToModeC(mm->modeA | mm->fs);
|
||||
a->modeACflags = MODEAC_MSG_FLAG;
|
||||
if (modeC < -12) {
|
||||
if (!(mm->bFlags & MODES_ACFLAGS_ALTITUDE_VALID)) {
|
||||
a->modeACflags |= MODEAC_MSG_MODEA_ONLY;
|
||||
} else {
|
||||
mm->altitude = modeC * 100;
|
||||
mm->bFlags |= MODES_ACFLAGS_ALTITUDE_VALID;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue