/* telemetry rate format preference name */
public final static String telemetryRatePreferenceFormat = "RATE-%d";
+ /* 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";
/* 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;
public static int launcher_channel;
public static void init(AltosPreferencesBackend in_backend) {
+
+ if (backend != null)
+ return;
+
backend = in_backend;
/* Initialize logdir from preferences */
telemetry_rates = new Hashtable<Integer,Integer>();
+ logfiles = new Hashtable<Integer,File>();
+
voice = backend.getBoolean(voicePreference, true);
callsign = backend.getString(callsignPreference,"N0CALL");
}
}
+ 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_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;