diff options
Diffstat (limited to 'altoslib/AltosPreferences.java')
| -rw-r--r-- | altoslib/AltosPreferences.java | 83 | 
1 files changed, 82 insertions, 1 deletions
| diff --git a/altoslib/AltosPreferences.java b/altoslib/AltosPreferences.java index d299f27b..dba57dcb 100644 --- a/altoslib/AltosPreferences.java +++ b/altoslib/AltosPreferences.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_4; +package org.altusmetrum.altoslib_5;  import java.io.*;  import java.util.*; @@ -35,6 +35,12 @@ public class AltosPreferences {  	/* telemetry format preference name */  	public final static String telemetryPreferenceFormat = "TELEMETRY-%d"; +	/* 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"; @@ -50,6 +56,9 @@ public class AltosPreferences {  	/* scanning telemetry preferences name */  	public final static String scanningTelemetryPreference = "SCANNING-TELEMETRY"; +	/* scanning telemetry rate preferences name */ +	public final static String scanningTelemetryRatePreference = "SCANNING-RATE"; +  	/* Launcher serial preference name */  	public final static String launcherSerialPreference = "LAUNCHER-SERIAL"; @@ -74,6 +83,12 @@ public class AltosPreferences {  	/* Telemetry (map serial to telemetry format) */  	public static Hashtable<Integer, Integer> telemetries; +	/* 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; @@ -86,6 +101,8 @@ public class AltosPreferences {  	/* Scanning telemetry */  	public static int scanning_telemetry; +	public static int scanning_telemetry_rate; +  	/* List of frequencies */  	public final static String common_frequencies_node_name = "COMMON-FREQUENCIES";  	public static AltosFrequency[] common_frequencies; @@ -140,6 +157,10 @@ public class AltosPreferences {  	public static int launcher_channel;  	public static void init(AltosPreferencesBackend in_backend) { + +		if (backend != null) +			return; +  		backend = in_backend;  		/* Initialize logdir from preferences */ @@ -159,12 +180,18 @@ public class AltosPreferences {  		telemetries = new Hashtable<Integer,Integer>(); +		telemetry_rates = new Hashtable<Integer,Integer>(); + +		logfiles = new Hashtable<Integer,File>(); +  		voice = backend.getBoolean(voicePreference, true);  		callsign = backend.getString(callsignPreference,"N0CALL");  		scanning_telemetry = backend.getInt(scanningTelemetryPreference,(1 << AltosLib.ao_telemetry_standard)); +		scanning_telemetry_rate = backend.getInt(scanningTelemetryRatePreference,(1 << AltosLib.ao_telemetry_rate_38400)); +  		launcher_serial = backend.getInt(launcherSerialPreference, 0);  		launcher_channel = backend.getInt(launcherChannelPreference, 0); @@ -266,6 +293,46 @@ public class AltosPreferences {  		}  	} +	public static void set_telemetry_rate(int serial, int new_telemetry_rate) { +		synchronized (backend) { +			telemetry_rates.put(serial, new_telemetry_rate); +			backend.putInt(String.format(telemetryRatePreferenceFormat, serial), new_telemetry_rate); +			flush_preferences(); +		} +	} + +	public static int telemetry_rate(int serial) { +		synchronized (backend) { +			if (telemetry_rates.containsKey(serial)) +				return telemetry_rates.get(serial); +			int telemetry_rate = backend.getInt(String.format(telemetryRatePreferenceFormat, serial), +							    AltosLib.ao_telemetry_rate_38400); +			telemetry_rates.put(serial, telemetry_rate); +			return telemetry_rate; +		} +	} + +	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; @@ -280,6 +347,20 @@ public class AltosPreferences {  		}  	} +	public static void set_scanning_telemetry_rate(int new_scanning_telemetry_rate) { +		synchronized (backend) { +			scanning_telemetry_rate = new_scanning_telemetry_rate; +			backend.putInt(scanningTelemetryRatePreference, scanning_telemetry_rate); +			flush_preferences(); +		} +	} + +	public static int scanning_telemetry_rate() { +		synchronized(backend) { +			return scanning_telemetry_rate; +		} +	} +  	public static void set_voice(boolean new_voice) {  		synchronized (backend) {  			voice = new_voice; | 
