altoslib: Parse TeleGPS state value from GPS telemetry packet
[fw/altos] / altoslib / AltosGPS.java
index 1d5b0755982a0d9a194d492dd6d22ec4322d7308..f28108334ade41b1f9400e3a61c31557c1037524 100644 (file)
@@ -15,7 +15,7 @@
  * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
  */
 
-package org.altusmetrum.altoslib_2;
+package org.altusmetrum.altoslib_4;
 
 import java.text.*;
 import java.util.concurrent.*;
@@ -45,6 +45,10 @@ public class AltosGPS implements Cloneable {
        public int      h_error;        /* m */
        public int      v_error;        /* m */
 
+       public int      state;          /* for TeleGPS */
+
+       static final int AO_GPS_STATE_VALID = 0x80;
+
        public AltosGPSSat[] cc_gps_sat;        /* tracking data */
 
        public void ParseGPSDate(String date) throws ParseException {
@@ -298,6 +302,7 @@ public class AltosGPS implements Cloneable {
                g.hdop = hdop;          /* unitless? */
                g.h_error = h_error;    /* m */
                g.v_error = v_error;    /* m */
+               g.state = state;
 
                if (cc_gps_sat != null) {
                        g.cc_gps_sat = new AltosGPSSat[cc_gps_sat.length];
@@ -330,6 +335,7 @@ public class AltosGPS implements Cloneable {
                        hdop = old.hdop;                /* unitless? */
                        h_error = old.h_error;  /* m */
                        v_error = old.v_error;  /* m */
+                       state = old.state;
 
                        if (old.cc_gps_sat != null) {
                                cc_gps_sat = new AltosGPSSat[old.cc_gps_sat.length];
@@ -345,10 +351,11 @@ public class AltosGPS implements Cloneable {
                        alt = AltosLib.MISSING;
                        ClearGPSTime();
                        cc_gps_sat = null;
+                       state = 0;
                }
        }
 
-       static public void update_state(AltosState state, AltosLink link, AltosConfigData config_data) {
+       static public void update_state(AltosState state, AltosLink link, AltosConfigData config_data) throws InterruptedException {
                try {
                        AltosGPS        gps = new AltosGPS(link, config_data);
 
@@ -357,7 +364,6 @@ public class AltosGPS implements Cloneable {
                                return;
                        }
                } catch (TimeoutException te) {
-               } catch (InterruptedException ie) {
                }
                state.set_gps(null, 0);
        }