altosui: Make sure packet mode is turned off when the connection fails
[fw/altos] / ao-tools / altosui / AltosDisplayThread.java
index 957ac0d69581f00693b59104739a1d23c335943d..3e719130a6a7c67475f41d98a8740b9904e66e01 100644 (file)
@@ -38,6 +38,11 @@ public class AltosDisplayThread extends Thread {
        int                     crc_errors;
        AltosFlightDisplay      display;
 
+       synchronized void show(AltosState state, int crc_errors) {
+               if (state != null)
+                       display.show(state, crc_errors);
+       }
+
        class IdleThread extends Thread {
 
                boolean started;
@@ -64,8 +69,10 @@ public class AltosDisplayThread extends Thread {
                            state.state < Altos.ao_flight_landed &&
                            state.range >= 0)
                        {
-                               voice.speak("Height %d, bearing %d, elevation %d, range %d.\n",
+                               voice.speak("Height %d, bearing %s %d, elevation %d, range %d.\n",
                                            (int) (state.height + 0.5),
+                        state.from_pad.bearing_words(
+                            AltosGreatCircle.BEARING_VOICE),
                                            (int) (state.from_pad.bearing + 0.5),
                                            (int) (state.elevation + 0.5),
                                            (int) (state.range + 0.5));
@@ -93,6 +100,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);
+                               }
                        }
                }
 
@@ -105,10 +116,6 @@ public class AltosDisplayThread extends Thread {
                }
 
                public void run () {
-
-                       reported_landing = 0;
-                       state = null;
-                       report_interval = 10000;
                        try {
                                for (;;) {
                                        set_report_time();
@@ -148,6 +155,12 @@ public class AltosDisplayThread extends Thread {
                        } else if (spoken)
                                set_report_time();
                }
+
+               public IdleThread() {
+                       state = null;
+                       reported_landing = 0;
+                       report_interval = 10000;
+               }
        }
 
        boolean tell(AltosState state, AltosState old_state) {
@@ -180,11 +193,6 @@ public class AltosDisplayThread extends Thread {
                return ret;
        }
 
-       void show(AltosState state, int crc_errors) {
-               if (state != null)
-                       display.show(state, crc_errors);
-       }
-
        public void run() {
                boolean         interrupted = false;
                String          line;