summaryrefslogtreecommitdiff
path: root/altoslib/AltosGPS.java
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2016-05-12 23:33:53 -0700
committerKeith Packard <keithp@keithp.com>2016-05-12 23:41:55 -0700
commitb1a90adac9f6e2a609ce1ccd6749462bb5c9adbe (patch)
tree107b6491d8ffc507609f9923353d5454c0664323 /altoslib/AltosGPS.java
parentb13037fad0905c5933d1ff579122ba1357b02eea (diff)
altoslib: Store saved state in version-independent format
Use AltosHashSet for AltosState so that AltosDroid doesn't lose tracker information when the application is upgraded. Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'altoslib/AltosGPS.java')
-rw-r--r--altoslib/AltosGPS.java63
1 files changed, 62 insertions, 1 deletions
diff --git a/altoslib/AltosGPS.java b/altoslib/AltosGPS.java
index 6f7c40b7..371fd7bf 100644
--- a/altoslib/AltosGPS.java
+++ b/altoslib/AltosGPS.java
@@ -21,7 +21,7 @@ import java.text.*;
import java.util.concurrent.*;
import java.io.*;
-public class AltosGPS implements Cloneable, Serializable {
+public class AltosGPS implements Cloneable, AltosHashable {
public final static int MISSING = AltosLib.MISSING;
@@ -388,4 +388,65 @@ public class AltosGPS implements Cloneable, Serializable {
break;
}
}
+
+ public AltosHashSet hashSet() {
+ AltosHashSet h = new AltosHashSet();
+
+ h.putInt("nsat", nsat);
+ h.putBoolean("locked", locked);
+ h.putBoolean("connected", connected);
+ h.putDouble("lat", lat);
+ h.putDouble("lon", lon);
+ h.putDouble("alt", alt);
+ h.putInt("year", year);
+ h.putInt("month", month);
+ h.putInt("day", day);
+ h.putInt("hour", hour);
+ h.putInt("minute", minute);
+ h.putInt("second", second);
+
+ h.putDouble("ground_speed", ground_speed);
+ h.putInt("course", course);
+ h.putDouble("climb_rate", climb_rate);
+ h.putDouble("pdop", pdop);
+ h.putDouble("hdop", hdop);
+ h.putDouble("vdop", vdop);
+ h.putDouble("h_error", h_error);
+ h.putDouble("v_error", v_error);
+ h.putString("cc_gps_sat", AltosGPSSat.toString(cc_gps_sat));
+ return h;
+ }
+
+ public AltosGPS(AltosHashSet h) {
+ init();
+ nsat = h.getInt("nsat", nsat);
+ locked = h.getBoolean("locked", locked);
+ connected = h.getBoolean("connected", connected);
+ lat = h.getDouble("lat", lat);
+ lon = h.getDouble("lon", lon);
+ alt = h.getDouble("alt", alt);
+ year = h.getInt("year", year);
+ month = h.getInt("month", month);
+ day = h.getInt("day", day);
+ hour = h.getInt("hour", hour);
+ minute = h.getInt("minute", minute);
+ second = h.getInt("second", second);
+
+ ground_speed = h.getDouble("ground_speed", ground_speed);
+ course = h.getInt("course", course);
+ climb_rate = h.getDouble("climb_rate", climb_rate);
+ pdop = h.getDouble("pdop", pdop);
+ hdop = h.getDouble("hdop", hdop);
+ vdop = h.getDouble("vdop", vdop);
+ h_error = h.getDouble("h_error", h_error);
+ v_error = h.getDouble("v_error", v_error);
+ cc_gps_sat = AltosGPSSat.array(h.getString("cc_gps_sat", null));
+ }
+
+ public static AltosGPS fromHashSet(AltosHashSet h, AltosGPS def) {
+ if (h == null)
+ return def;
+
+ return new AltosGPS(h);
+ }
}