Skip to content

Commit 28f86c5

Browse files
committed
Fix ACAS RA active status
1 parent cb0199d commit 28f86c5

File tree

1 file changed

+13
-2
lines changed

1 file changed

+13
-2
lines changed

mode-s/src/main/java/aero/t2s/modes/decoder/df/df17/AircraftOperationalStatusMessage.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,13 @@ private void decodeSurface(Track track, short[] data) {
2828
// TODO Decode CC (C.2.3.10.3)
2929

3030
track.setLengthWidthCode(LengthWidthCode.from(data[6] & 0xF));
31-
track.getAcas().setActive(((data[7] >>> 5) & 0x1) == 1);
31+
32+
// Operational Mode Codes
33+
if ((data[7] & 0b11000000) != 0) {
34+
// Reserved OM Status
35+
return;
36+
}
37+
track.getAcas().getResolutionAdvisory().setActive(((data[7] >>> 5) & 0x1) == 1);
3238
track.setSpi(((data[7] >>> 4) & 0x1) == 1);
3339
track.setSingleAntenna(((data[7] >>> 2) & 0x1) == 1);
3440
track.setHeadingSource((data[10] >>> 3 & 0x1) == 1);
@@ -40,7 +46,12 @@ private void decodeSurface(Track track, short[] data) {
4046
private void decodeAirborne(Track track, short[] data) {
4147
// TODO Decode CC (C.2.3.10.3)
4248

43-
track.getAcas().setActive(((data[7] >>> 5) & 0x1) == 1);
49+
// Operational Mode Codes
50+
if ((data[7] & 0b11000000) != 0) {
51+
// Reserved OM Status
52+
return;
53+
}
54+
track.getAcas().getResolutionAdvisory().setActive(((data[7] >>> 5) & 0x1) == 1);
4455
track.setSpi(((data[7] >>> 4) & 0x1) == 1);
4556
track.setSingleAntenna(((data[7] >>> 2) & 0x1) == 1);
4657
track.setNICb(data[10] >>> 3 & 0x1);

0 commit comments

Comments
 (0)