From b1a90adac9f6e2a609ce1ccd6749462bb5c9adbe Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Thu, 12 May 2016 23:33:53 -0700 Subject: 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 --- altoslib/AltosCompanion.java | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) (limited to 'altoslib/AltosCompanion.java') diff --git a/altoslib/AltosCompanion.java b/altoslib/AltosCompanion.java index 381b0a25..6f18d93e 100644 --- a/altoslib/AltosCompanion.java +++ b/altoslib/AltosCompanion.java @@ -19,7 +19,7 @@ package org.altusmetrum.altoslib_11; import java.io.*; -public class AltosCompanion implements Serializable { +public class AltosCompanion implements AltosHashable { public final static int board_id_telescience = 0x0a; public final static int MAX_CHANNELS = 12; @@ -37,4 +37,30 @@ public class AltosCompanion implements Serializable { channels = MAX_CHANNELS; companion_data = new int[channels]; } + + public AltosHashSet hashSet() { + AltosHashSet h = new AltosHashSet(); + + h.putInt("tick", tick); + h.putInt("board_id", board_id); + h.putInt("update_period", update_period); + h.putInt("channels", channels); + h.putIntArray("companion_data", companion_data); + return h; + } + + public AltosCompanion(AltosHashSet h) { + tick = h.getInt("tick", tick); + board_id = h.getInt("board_id", board_id); + update_period = h.getInt("update_period", update_period); + channels = h.getInt("channels", channels); + companion_data = h.getIntArray("companion_data", new int[channels]); + } + + public static AltosCompanion fromHashSet(AltosHashSet h, AltosCompanion def) { + if (h == null) + return def; + + return new AltosCompanion(h); + } } -- cgit v1.2.3