Skip to content

Commit

Permalink
Improve Bds17/Bds45 detection
Browse files Browse the repository at this point in the history
  • Loading branch information
Douglasdc3 committed Oct 28, 2022
1 parent e21059f commit 17aab20
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 4 deletions.
25 changes: 25 additions & 0 deletions src/main/java/aero/t2s/modes/decoder/df/bds/Bds45.java
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,31 @@ public Bds45(short[] data) {
return;
}
}

if (statusTurbulence || statusWindShear || statusMicroBurst || statusIcing || statusWake) {
boolean nothing = true;

if (statusTurbulence && turbulence != Hazard.NIL) {
nothing = false;
}
if (statusWindShear && windShear != Hazard.NIL) {
nothing = false;
}
if (statusMicroBurst && microBurst != Hazard.NIL) {
nothing = false;
}
if (statusIcing && icing != Hazard.NIL) {
nothing = false;
}
if (statusWake && wake != Hazard.NIL) {
nothing = false;
}

if (nothing) {
invalidate();
return;
}
}
}


Expand Down
46 changes: 42 additions & 4 deletions src/test/java/aero/t2s/modes/decoder/df/DfRealMessageTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,7 @@
import aero.t2s.modes.database.ModeSDatabase;
import aero.t2s.modes.decoder.Decoder;
import aero.t2s.modes.decoder.UnknownDownlinkFormatException;
import aero.t2s.modes.decoder.df.bds.Bds10;
import aero.t2s.modes.decoder.df.bds.Bds40;
import aero.t2s.modes.decoder.df.bds.Bds50;
import aero.t2s.modes.decoder.df.bds.Bds60;
import aero.t2s.modes.decoder.df.bds.*;
import org.junit.jupiter.api.Test;

import java.util.HashMap;
Expand Down Expand Up @@ -392,6 +389,47 @@ public void test_df21_bds50_02A185() throws UnknownDownlinkFormatException {
assertEquals(210.9, bds.getTrueTrack(), 0.1);
}

@Test
public void test_df20_bds17_3D2C7C() throws UnknownDownlinkFormatException {
DownlinkFormat df = testMessage("A0280314020100000000004E25E8");

assertInstanceOf(DF20.class, df);
DF20 df20 = (DF20) df;
assertEquals("3D2C7C", df.getIcao()); // Military / corrupt transponder
assertEquals(3900, df20.getAltitude().getAltitude());

assertFalse(df20.isMultipleMatches());
assertTrue(df20.isValid());
assertEquals(Bds17.class, df20.getBds().getClass());

Bds17 bds = (Bds17) df20.getBds();
assertFalse(bds.isBds0A());
assertFalse(bds.isBds05());
assertFalse(bds.isBds06());
assertFalse(bds.isBds07());
assertFalse(bds.isBds08());
assertFalse(bds.isBds09());
assertFalse(bds.isBds0A());
assertTrue(bds.isBds20());
assertFalse(bds.isBds21());
assertFalse(bds.isBds40());
assertFalse(bds.isBds41());
assertFalse(bds.isBds42());
assertFalse(bds.isBds43());
assertFalse(bds.isBds44());
assertFalse(bds.isBds45());
assertFalse(bds.isBds48());
assertTrue(bds.isBds50());
assertFalse(bds.isBds51());
assertFalse(bds.isBds52());
assertFalse(bds.isBds53());
assertFalse(bds.isBds54());
assertFalse(bds.isBds55());
assertFalse(bds.isBds56());
assertFalse(bds.isBds5F());
assertFalse(bds.isBds60());
}

private DownlinkFormat testMessage(String message) throws UnknownDownlinkFormatException {
Decoder decoder = new Decoder(new HashMap<>(), 50, 2, ModeSDatabase.createDatabase());

Expand Down

0 comments on commit 17aab20

Please sign in to comment.