summaryrefslogtreecommitdiff
path: root/altoslib/AltosIMU.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/AltosIMU.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/AltosIMU.java')
-rw-r--r--altoslib/AltosIMU.java37
1 files changed, 34 insertions, 3 deletions
diff --git a/altoslib/AltosIMU.java b/altoslib/AltosIMU.java
index 26d11591..df6c4ed3 100644
--- a/altoslib/AltosIMU.java
+++ b/altoslib/AltosIMU.java
@@ -20,7 +20,7 @@ package org.altusmetrum.altoslib_11;
import java.util.concurrent.*;
import java.io.*;
-public class AltosIMU implements Cloneable, Serializable {
+public class AltosIMU implements Cloneable, AltosHashable {
public int accel_along;
public int accel_across;
public int accel_through;
@@ -29,13 +29,13 @@ public class AltosIMU implements Cloneable, Serializable {
public int gyro_pitch;
public int gyro_yaw;
- public static double counts_per_g = 2048.0;
+ public static final double counts_per_g = 2048.0;
public static double convert_accel(double counts) {
return counts / counts_per_g * (-AltosConvert.GRAVITATIONAL_ACCELERATION);
}
- public static double counts_per_degsec = 16.4;
+ public static final double counts_per_degsec = 16.4;
public static double convert_gyro(double counts) {
return counts / counts_per_degsec;
@@ -115,4 +115,35 @@ public class AltosIMU implements Cloneable, Serializable {
break;
}
}
+
+ public AltosIMU (AltosHashSet h) {
+ this();
+
+ accel_along = h.getInt("accel_along", accel_along);
+ accel_across = h.getInt("accel_across", accel_across);
+ accel_through = h.getInt("accel_through", accel_through);
+
+ gyro_roll = h.getInt("gyro_roll", gyro_roll);
+ gyro_pitch = h.getInt("gyro_pitch", gyro_pitch);
+ gyro_yaw = h.getInt("gyro_yaw", gyro_yaw);
+ }
+
+ static public AltosIMU fromHashSet(AltosHashSet h, AltosIMU def) {
+ if (h == null)
+ return def;
+ return new AltosIMU(h);
+ }
+
+ public AltosHashSet hashSet() {
+ AltosHashSet h = new AltosHashSet();
+
+ h.putInt("accel_along", accel_along);
+ h.putInt("accel_across", accel_across);
+ h.putInt("accel_through", accel_through);
+
+ h.putInt("gyro_roll", gyro_roll);
+ h.putInt("gyro_pitch", gyro_pitch);
+ h.putInt("gyro_yaw", gyro_yaw);
+ return h;
+ }
}