altoslib: Add debugging to AltosPreferences.state() etc
authorKeith Packard <keithp@keithp.com>
Wed, 20 Apr 2016 03:17:01 +0000 (23:17 -0400)
committerKeith Packard <keithp@keithp.com>
Wed, 20 Apr 2016 03:21:30 +0000 (23:21 -0400)
This let me find why AltosDroid was losing the last state information
for each target.

Signed-off-by: Keith Packard <keithp@keithp.com>
altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidPreferencesBackend.java
altoslib/AltosPreferences.java
altoslib/AltosPreferencesBackend.java
altosuilib/AltosUIPreferencesBackend.java

index 14e6ce73359ebbd099343ecf00d5bfaea339d991..eeccd0905241f7f311793f33eb5bdc234619935f 100644 (file)
@@ -120,4 +120,8 @@ public class AltosDroidPreferencesBackend implements AltosPreferencesBackend {
        public File homeDirectory() {
                return Environment.getExternalStorageDirectory();
        }
+
+       public void debug(String format, Object ... arguments) {
+               AltosDebug.debug(format, arguments);
+       }
 }
index 91cfc6b6fa76d5a8d0f5c891d7118e1166759a68..4de7e87f66f46579e835739def8a9f0667962c62 100644 (file)
@@ -351,6 +351,11 @@ public class AltosPreferences {
 
        public static void set_state(int serial, AltosState state, AltosListenerState listener_state) {
 
+               backend.debug("set_state for %d pos %g,%g\n",
+                             serial,
+                             state.gps != null ? state.gps.lat : 0.0,
+                             state.gps != null ? state.gps.lon : 0.0);
+
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
 
                try {
@@ -367,6 +372,7 @@ public class AltosPreferences {
                                flush_preferences();
                        }
                } catch (IOException ie) {
+                       backend.debug("set_state failed %s\n", ie.toString());
                }
        }
 
@@ -376,6 +382,7 @@ public class AltosPreferences {
 
                for (String key : keys) {
                        if (key.startsWith(statePreferenceHead)) {
+                               backend.debug("list_states %s\n", key);
                                try {
                                        int serial = AltosParse.parse_int(key.substring(statePreferenceHead.length()));
                                        states.add(serial);
@@ -403,21 +410,31 @@ public class AltosPreferences {
        public static AltosSavedState state(int serial) {
                byte[] bytes = null;
 
+               backend.debug("get state %d\n", serial);
+
                synchronized(backend) {
                        bytes = backend.getBytes(String.format(statePreferenceFormat, serial), null);
                }
 
-               if (bytes == null)
+               if (bytes == null) {
+                       backend.debug("no state for %d\n", serial);
                        return null;
+               }
 
                ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
 
                try {
                        ObjectInputStream ois = new ObjectInputStream(bais);
                        AltosSavedState saved_state = (AltosSavedState) ois.readObject();
+                       backend.debug("got saved state for %d: %g,%g\n",
+                                     serial,
+                                     saved_state.state.gps != null ? saved_state.state.gps.lat : 0.0,
+                                     saved_state.state.gps != null ? saved_state.state.gps.lon : 0.0);
                        return saved_state;
                } catch (IOException ie) {
+                       backend.debug("IO exception %s\n", ie.toString());
                } catch (ClassNotFoundException ce) {
+                       backend.debug("ClassNotFoundException %s\n", ce.toString());
                }
                return null;
        }
index f43c2ec9d68c269f9a6840d5bf29d6e3c7455100..5337527f09ba1a1a5437f4b129e4a4df49efba1b 100644 (file)
@@ -45,4 +45,6 @@ public interface AltosPreferencesBackend {
        public void    flush();
 
        public File homeDirectory();
+
+       public void debug(String format, Object ... arguments);
 }
index 6d7aa88bd75a09c6258ba90554daf50ff97abd73..0b01dea61f143a608554b69e68ca28de5b33ed9f 100644 (file)
@@ -106,4 +106,8 @@ public class AltosUIPreferencesBackend implements AltosPreferencesBackend {
                /* Use the file system view default directory */
                return FileSystemView.getFileSystemView().getDefaultDirectory();
        }
+
+       public void debug(String format, Object ... arguments) {
+               System.out.printf(format, arguments);
+       }
 }