From 60edcfe410e7fa848813d6c1ed8dc9808887d041 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Sat, 15 Nov 2014 16:03:32 -0800 Subject: [PATCH] altoslib: Make AltosState serializable This involved making every class it references serializable as well Signed-off-by: Keith Packard --- altoslib/AltosAccel.java | 6 ++++-- altoslib/AltosCompanion.java | 4 +++- altoslib/AltosGPS.java | 3 ++- altoslib/AltosGreatCircle.java | 3 ++- altoslib/AltosIMU.java | 3 ++- altoslib/AltosListenerState.java | 4 +++- altoslib/AltosMag.java | 3 ++- altoslib/AltosMs5607.java | 3 ++- altoslib/AltosSavedState.java | 30 ++++++++++++++++++++++++++++++ altoslib/AltosState.java | 24 +++++++++++++----------- altoslib/Makefile.am | 1 + 11 files changed, 64 insertions(+), 20 deletions(-) create mode 100644 altoslib/AltosSavedState.java diff --git a/altoslib/AltosAccel.java b/altoslib/AltosAccel.java index d91da4da..e40a47b4 100644 --- a/altoslib/AltosAccel.java +++ b/altoslib/AltosAccel.java @@ -17,7 +17,9 @@ package org.altusmetrum.altoslib_5; -public class AltosAccel extends AltosUnits { +import java.io.*; + +public class AltosAccel extends AltosUnits implements Serializable { public double value(double v, boolean imperial_units) { if (imperial_units) @@ -46,4 +48,4 @@ public class AltosAccel extends AltosUnits { public int show_fraction(int width, boolean imperial_units) { return width / 9; } -} \ No newline at end of file +} diff --git a/altoslib/AltosCompanion.java b/altoslib/AltosCompanion.java index 47deb2a3..7e9ab2f1 100644 --- a/altoslib/AltosCompanion.java +++ b/altoslib/AltosCompanion.java @@ -17,7 +17,9 @@ package org.altusmetrum.altoslib_5; -public class AltosCompanion { +import java.io.*; + +public class AltosCompanion implements Serializable { public final static int board_id_telescience = 0x0a; public final static int MAX_CHANNELS = 12; diff --git a/altoslib/AltosGPS.java b/altoslib/AltosGPS.java index 0154e95d..285b5b45 100644 --- a/altoslib/AltosGPS.java +++ b/altoslib/AltosGPS.java @@ -19,8 +19,9 @@ package org.altusmetrum.altoslib_5; import java.text.*; import java.util.concurrent.*; +import java.io.*; -public class AltosGPS implements Cloneable { +public class AltosGPS implements Cloneable, Serializable { public final static int MISSING = AltosLib.MISSING; diff --git a/altoslib/AltosGreatCircle.java b/altoslib/AltosGreatCircle.java index 716eeef9..22a8e0e5 100644 --- a/altoslib/AltosGreatCircle.java +++ b/altoslib/AltosGreatCircle.java @@ -18,8 +18,9 @@ package org.altusmetrum.altoslib_5; import java.lang.Math; +import java.io.*; -public class AltosGreatCircle implements Cloneable { +public class AltosGreatCircle implements Cloneable, Serializable { public double distance; public double bearing; public double range; diff --git a/altoslib/AltosIMU.java b/altoslib/AltosIMU.java index d7373f3c..02b458b8 100644 --- a/altoslib/AltosIMU.java +++ b/altoslib/AltosIMU.java @@ -18,8 +18,9 @@ package org.altusmetrum.altoslib_5; import java.util.concurrent.*; +import java.io.*; -public class AltosIMU implements Cloneable { +public class AltosIMU implements Cloneable, Serializable { public int accel_along; public int accel_across; public int accel_through; diff --git a/altoslib/AltosListenerState.java b/altoslib/AltosListenerState.java index 054ff1d0..ed1f0f19 100644 --- a/altoslib/AltosListenerState.java +++ b/altoslib/AltosListenerState.java @@ -17,7 +17,9 @@ package org.altusmetrum.altoslib_5; -public class AltosListenerState { +import java.io.*; + +public class AltosListenerState implements Serializable { public int crc_errors; public double battery; diff --git a/altoslib/AltosMag.java b/altoslib/AltosMag.java index 1fa8877b..8784bb81 100644 --- a/altoslib/AltosMag.java +++ b/altoslib/AltosMag.java @@ -18,8 +18,9 @@ package org.altusmetrum.altoslib_5; import java.util.concurrent.*; +import java.io.*; -public class AltosMag implements Cloneable { +public class AltosMag implements Cloneable, Serializable { public int along; public int across; public int through; diff --git a/altoslib/AltosMs5607.java b/altoslib/AltosMs5607.java index 81e0641c..97e17164 100644 --- a/altoslib/AltosMs5607.java +++ b/altoslib/AltosMs5607.java @@ -18,8 +18,9 @@ package org.altusmetrum.altoslib_5; import java.util.concurrent.*; +import java.io.*; -public class AltosMs5607 { +public class AltosMs5607 implements Serializable { public int reserved; public int sens; public int off; diff --git a/altoslib/AltosSavedState.java b/altoslib/AltosSavedState.java new file mode 100644 index 00000000..4b010b31 --- /dev/null +++ b/altoslib/AltosSavedState.java @@ -0,0 +1,30 @@ +/* + * Copyright © 2014 Keith Packard + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + +package org.altusmetrum.altoslib_5; + +import java.io.*; + +public class AltosSavedState implements Serializable { + public AltosState state; + public AltosListenerState listener_state; + + public AltosSavedState(AltosState state, AltosListenerState listener_state) { + this.state = state; + this.listener_state = listener_state; + } +} diff --git a/altoslib/AltosState.java b/altoslib/AltosState.java index 830e95f3..5be008b7 100644 --- a/altoslib/AltosState.java +++ b/altoslib/AltosState.java @@ -21,7 +21,9 @@ package org.altusmetrum.altoslib_5; -public class AltosState implements Cloneable { +import java.io.*; + +public class AltosState implements Cloneable, Serializable { public static final int set_position = 1; public static final int set_gps = 2; @@ -43,7 +45,7 @@ public class AltosState implements Cloneable { private int prev_tick; public int boost_tick; - class AltosValue { + class AltosValue implements Serializable{ double value; double prev_value; private double max_value; @@ -179,9 +181,9 @@ public class AltosState implements Cloneable { } } - class AltosCValue { + class AltosCValue implements Serializable { - class AltosIValue extends AltosValue { + class AltosIValue extends AltosValue implements Serializable { boolean can_max() { return c_can_max(); } @@ -312,7 +314,7 @@ public class AltosState implements Cloneable { ground_altitude.set_measured(a, time); } - class AltosGpsGroundAltitude extends AltosValue { + class AltosGpsGroundAltitude extends AltosValue implements Serializable { void set(double a, double t) { super.set(a, t); pad_alt = value(); @@ -336,7 +338,7 @@ public class AltosState implements Cloneable { gps_ground_altitude.set(a, time); } - class AltosGroundPressure extends AltosCValue { + class AltosGroundPressure extends AltosCValue implements Serializable { void set_filtered(double p, double time) { computed.set_filtered(p, time); if (!is_measured()) @@ -359,7 +361,7 @@ public class AltosState implements Cloneable { ground_pressure.set_measured(pressure, time); } - class AltosAltitude extends AltosCValue { + class AltosAltitude extends AltosCValue implements Serializable { private void set_speed(AltosValue v) { if (!acceleration.is_measured() || !ascent) @@ -381,7 +383,7 @@ public class AltosState implements Cloneable { private AltosAltitude altitude; - class AltosGpsAltitude extends AltosValue { + class AltosGpsAltitude extends AltosValue implements Serializable { private void set_gps_height() { double a = value(); @@ -464,7 +466,7 @@ public class AltosState implements Cloneable { return gps_speed.max(); } - class AltosPressure extends AltosValue { + class AltosPressure extends AltosValue implements Serializable { void set(double p, double time) { super.set(p, time); if (state == AltosLib.ao_flight_pad) @@ -534,7 +536,7 @@ public class AltosState implements Cloneable { return AltosLib.MISSING; } - class AltosSpeed extends AltosCValue { + class AltosSpeed extends AltosCValue implements Serializable { boolean can_max() { return state < AltosLib.ao_flight_fast || state == AltosLib.ao_flight_stateless; @@ -588,7 +590,7 @@ public class AltosState implements Cloneable { return AltosLib.MISSING; } - class AltosAccel extends AltosCValue { + class AltosAccel extends AltosCValue implements Serializable { boolean can_max() { return state < AltosLib.ao_flight_fast || state == AltosLib.ao_flight_stateless; diff --git a/altoslib/Makefile.am b/altoslib/Makefile.am index 2805742e..8aff2767 100644 --- a/altoslib/Makefile.am +++ b/altoslib/Makefile.am @@ -82,6 +82,7 @@ altoslib_JAVA = \ AltosProgrammer.java \ AltosReplayReader.java \ AltosRomconfig.java \ + AltosSavedState.java \ AltosSelfFlash.java \ AltosSensorMM.java \ AltosSensorEMini.java \ -- 2.30.2