altosui: Add ascent, descent and landed tabs
[fw/altos] / ao-tools / altosui / AltosDisplayThread.java
index b15472edf7393a5764b6066cc7ae8a124609249d..b5b2777e7885bbc79071faae7fd4238e0563a446 100644 (file)
@@ -36,8 +36,12 @@ public class AltosDisplayThread extends Thread {
        String                  name;
        AltosFlightReader       reader;
        int                     crc_errors;
-       AltosStatusTable        flightStatus;
-       AltosInfoTable          flightInfo;
+       AltosFlightDisplay      display;
+
+       synchronized void show(AltosState state, int crc_errors) {
+               if (state != null)
+                       display.show(state, crc_errors);
+       }
 
        class IdleThread extends Thread {
 
@@ -94,6 +98,10 @@ public class AltosDisplayThread extends Thread {
                                                    (int) (state.from_pad.bearing + 0.5),
                                                    (int) (state.from_pad.distance + 0.5));
                                ++reported_landing;
+                               if (state.state != Altos.ao_flight_landed) {
+                                       state.state = Altos.ao_flight_landed;
+                                       show(state, 0);
+                               }
                        }
                }
 
@@ -181,13 +189,6 @@ public class AltosDisplayThread extends Thread {
                return ret;
        }
 
-       void show(AltosState state, int crc_errors) {
-               if (state != null) {
-                       flightStatus.set(state);
-                       flightInfo.show(state, crc_errors);
-               }
-       }
-
        public void run() {
                boolean         interrupted = false;
                String          line;
@@ -197,7 +198,7 @@ public class AltosDisplayThread extends Thread {
 
                idle_thread = new IdleThread();
 
-               flightInfo.clear();
+               display.reset();
                try {
                        for (;;) {
                                try {
@@ -235,11 +236,10 @@ public class AltosDisplayThread extends Thread {
                }
        }
 
-       public AltosDisplayThread(Frame in_parent, AltosVoice in_voice, AltosStatusTable in_status, AltosInfoTable in_info, AltosFlightReader in_reader) {
+       public AltosDisplayThread(Frame in_parent, AltosVoice in_voice, AltosFlightDisplay in_display, AltosFlightReader in_reader) {
                parent = in_parent;
                voice = in_voice;
-               flightStatus = in_status;
-               flightInfo = in_info;
+               display = in_display;
                reader = in_reader;
        }
 }