altoslib: Store saved state in version-independent format
[fw/altos] / altoslib / AltosCompanion.java
index 47deb2a3dd1be6bb0212eb5ce767bd7d931ed8d2..6f18d93eba01acda5e7e55224eeadc38f97e24da 100644 (file)
  * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
  */
 
-package org.altusmetrum.altoslib_5;
+package org.altusmetrum.altoslib_11;
 
-public class AltosCompanion {
+import java.io.*;
+
+public class AltosCompanion implements AltosHashable {
        public final static int board_id_telescience = 0x0a;
        public final static int MAX_CHANNELS = 12;
 
@@ -35,4 +37,30 @@ public class AltosCompanion {
                        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);
+       }
 }