altoslib: create logfiles preference object. check link in existing_data
[fw/altos] / altoslib / AltosPreferences.java
index 72cfeb4bc5a47e81c63c2ba0582e0de3438b5263..af87b213ee575a9c0f7990cb1505cb5b9ecb521e 100644 (file)
@@ -38,6 +38,9 @@ public class AltosPreferences {
        /* telemetry rate format preference name */
        public final static String telemetryRatePreferenceFormat = "RATE-%d";
 
+       /* log file format preference name */
+       public final static String logfilePreferenceFormat = "LOGFILE-%d";
+
        /* voice preference name */
        public final static String voicePreference = "VOICE";
 
@@ -83,6 +86,9 @@ public class AltosPreferences {
        /* Telemetry rate (map serial to telemetry format) */
        public static Hashtable<Integer, Integer> telemetry_rates;
 
+       /* Log file (map serial to logfile name) */
+       public static Hashtable<Integer, File> logfiles;
+
        /* Voice preference */
        public static boolean voice;
 
@@ -172,6 +178,8 @@ public class AltosPreferences {
 
                telemetry_rates = new Hashtable<Integer,Integer>();
 
+               logfiles = new Hashtable<Integer,File>();
+
                voice = backend.getBoolean(voicePreference, true);
 
                callsign = backend.getString(callsignPreference,"N0CALL");
@@ -300,6 +308,27 @@ public class AltosPreferences {
                }
        }
 
+       public static void set_logfile(int serial, File new_logfile) {
+               synchronized(backend) {
+                       logfiles.put(serial, new_logfile);
+                       backend.putString(String.format(logfilePreferenceFormat, serial), new_logfile.getPath());
+                       flush_preferences();
+               }
+       }
+
+       public static File logfile(int serial) {
+               synchronized(backend) {
+                       if (logfiles.containsKey(serial))
+                               return logfiles.get(serial);
+                       String logfile_string = backend.getString(String.format(logfilePreferenceFormat, serial), null);
+                       if (logfile_string == null)
+                               return null;
+                       File logfile = new File(logfile_string);
+                       logfiles.put(serial, logfile);
+                       return logfile;
+               }
+       }
+
        public static void set_scanning_telemetry(int new_scanning_telemetry) {
                synchronized (backend) {
                        scanning_telemetry = new_scanning_telemetry;