diff --git a/src/main/java/de/serosystems/lib1090/StatefulModeSDecoder.java b/src/main/java/de/serosystems/lib1090/StatefulModeSDecoder.java index 30cf27f..000f619 100644 --- a/src/main/java/de/serosystems/lib1090/StatefulModeSDecoder.java +++ b/src/main/java/de/serosystems/lib1090/StatefulModeSDecoder.java @@ -173,9 +173,9 @@ public ModeSDownlinkMsg decode(ModeSDownlinkMsg modes, long timestamp) throws Ba if (ftc == 28) { // aircraft status message, check subtype int subtype = es1090.getMessage()[0] & 0x7; - if (subtype == 1) // emergency/priority status + if (subtype == 1) return new EmergencyOrPriorityStatusMsg(es1090); - if (subtype == 2) // TCAS resolution advisory report + if (subtype == 2 && dd.adsbVersion > 1) return new TCASResolutionAdvisoryMsg(es1090); } diff --git a/src/main/java/de/serosystems/lib1090/msgs/adsb/AirbornePositionV0Msg.java b/src/main/java/de/serosystems/lib1090/msgs/adsb/AirbornePositionV0Msg.java index d88e988..98b1a12 100644 --- a/src/main/java/de/serosystems/lib1090/msgs/adsb/AirbornePositionV0Msg.java +++ b/src/main/java/de/serosystems/lib1090/msgs/adsb/AirbornePositionV0Msg.java @@ -247,7 +247,7 @@ public Integer getAltitude() { @Override public Position.AltitudeType getAltitudeType () { - if (getFormatTypeCode() >= 9 && getFormatTypeCode() <= 18) + if (getFormatTypeCode() == 0 || (getFormatTypeCode() >= 9 && getFormatTypeCode() <= 18)) return Position.AltitudeType.BAROMETRIC_ALTITUDE; else if (getFormatTypeCode() >= 20 && getFormatTypeCode() <= 22) return Position.AltitudeType.ABOVE_WGS84_ELLIPSOID; diff --git a/src/main/java/de/serosystems/lib1090/msgs/adsr/AirbornePositionV0Msg.java b/src/main/java/de/serosystems/lib1090/msgs/adsr/AirbornePositionV0Msg.java index 8e17051..5428aab 100644 --- a/src/main/java/de/serosystems/lib1090/msgs/adsr/AirbornePositionV0Msg.java +++ b/src/main/java/de/serosystems/lib1090/msgs/adsr/AirbornePositionV0Msg.java @@ -229,7 +229,7 @@ public Integer getAltitude() { @Override public Position.AltitudeType getAltitudeType () { - if (getFormatTypeCode() >= 9 && getFormatTypeCode() <= 18) + if (getFormatTypeCode() == 0 || (getFormatTypeCode() >= 9 && getFormatTypeCode() <= 18)) return Position.AltitudeType.BAROMETRIC_ALTITUDE; else if (getFormatTypeCode() >= 20 && getFormatTypeCode() <= 22) return Position.AltitudeType.ABOVE_WGS84_ELLIPSOID;