telegps: Get telegps application working again
[fw/altos] / telegps / TeleGPSDisplayThread.java
index a9c80dc00d537cd60cb87c892e72abfad257583f..c311dd7e01b03fa8fc37d835b62895f062f9cca3 100644 (file)
@@ -31,7 +31,9 @@ public class TeleGPSDisplayThread extends Thread {
        IdleThread              idle_thread;
        AltosVoice              voice;
        AltosFlightReader       reader;
-       AltosState              old_state, state;
+       AltosState              state;
+       int                     old_state = AltosLib.ao_flight_invalid;
+       boolean                 old_gps_ready = false;
        AltosListenerState      listener_state;
        AltosFlightDisplay      display;
 
@@ -130,11 +132,12 @@ public class TeleGPSDisplayThread extends Thread {
                }
 
                public synchronized void notice(boolean spoken) {
-                       if (old_state != null && old_state.state() != state.state()) {
+                       if (old_state != state.state()) {
                                report_time = now();
                                this.notify();
                        } else if (spoken)
                                set_report_time();
+                       old_state = state.state();
                }
 
                public IdleThread() {
@@ -144,17 +147,17 @@ public class TeleGPSDisplayThread extends Thread {
 
        synchronized boolean tell() {
                boolean ret = false;
-               if (old_state == null || old_state.gps_ready != state.gps_ready) {
+               if (old_gps_ready != state.gps_ready) {
                        if (state.gps_ready) {
                                voice.speak("GPS ready");
                                ret = true;
                        }
-                       else if (old_state != null) {
+                       else if (old_gps_ready) {
                                voice.speak("GPS lost");
                                ret = true;
                        }
+                       old_gps_ready = state.gps_ready;
                }
-               old_state = state;
                return ret;
        }
 
@@ -173,7 +176,6 @@ public class TeleGPSDisplayThread extends Thread {
                                                listener_state.running = false;
                                                break;
                                        }
-                                       reader.update(state);
                                        show_safely();
                                        told = tell();
                                        idle_thread.notice(told);