altoslib: Store saved state in version-independent format
[fw/altos] / altoslib / AltosCompanion.java
index 381b0a257193e5915ddd5795ddfee775f8baca22..6f18d93eba01acda5e7e55224eeadc38f97e24da 100644 (file)
@@ -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);
+       }
 }