Merge branch 'master' of ssh://git.gag.com/scm/git/fw/altos
[fw/altos] / altoslib / AltosPreferences.java
index dba57dcb73d055f0509257e809346c721dacde92..5fe810d7e8160c6300765fa9390f5e7b155a59cb 100644 (file)
@@ -41,6 +41,9 @@ public class AltosPreferences {
        /* log file format preference name */
        public final static String logfilePreferenceFormat = "LOGFILE-%d";
 
+       /* state preference name */
+       public final static String statePreferenceFormat = "STATE-%d";
+
        /* voice preference name */
        public final static String voicePreference = "VOICE";
 
@@ -333,6 +336,48 @@ public class AltosPreferences {
                }
        }
 
+       public static void set_state(int serial, AltosState state, AltosListenerState listener_state) {
+
+               ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
+               try {
+                       ObjectOutputStream oos = new ObjectOutputStream(baos);
+
+                       AltosSavedState saved_state = new AltosSavedState(state, listener_state);
+                       oos.writeObject(saved_state);
+
+                       byte[] bytes = baos.toByteArray();
+
+                       synchronized(backend) {
+                               backend.putBytes(String.format(statePreferenceFormat, serial), bytes);
+                               flush_preferences();
+                       }
+               } catch (IOException ie) {
+               }
+       }
+
+       public static AltosSavedState state(int serial) {
+               byte[] bytes = null;
+
+               synchronized(backend) {
+                       bytes = backend.getBytes(String.format(statePreferenceFormat, serial), null);
+               }
+
+               if (bytes == null)
+                       return null;
+
+               ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
+
+               try {
+                       ObjectInputStream ois = new ObjectInputStream(bais);
+                       AltosSavedState saved_state = (AltosSavedState) ois.readObject();
+                       return saved_state;
+               } catch (IOException ie) {
+               } catch (ClassNotFoundException ce) {
+               }
+               return null;
+       }
+
        public static void set_scanning_telemetry(int new_scanning_telemetry) {
                synchronized (backend) {
                        scanning_telemetry = new_scanning_telemetry;