final static String logdirPreference = "LOGDIR";
/* channel preference name */
- final static String channelPreference = "CHANNEL";
+ final static String channelPreferenceFormat = "CHANNEL-%d";
/* voice preference name */
final static String voicePreference = "VOICE";
+ /* callsign preference name */
+ final static String callsignPreference = "CALLSIGN";
+
+ /* firmware directory preference name */
+ final static String firmwaredirPreference = "FIRMWARE";
+
/* Default logdir is ~/TeleMetrum */
final static String logdirName = "TeleMetrum";
/* Log directory */
static File logdir;
- /* Telemetry channel */
- static int channel;
+ /* Channel (map serial to channel) */
+ static Hashtable<Integer, Integer> channels;
/* Voice preference */
static boolean voice;
+ /* Callsign preference */
+ static String callsign;
+
+ /* Firmware directory */
+ static File firmwaredir;
+
public static void init(Component ui) {
preferences = Preferences.userRoot().node("/org/altusmetrum/altosui");
logdir.mkdirs();
}
- channel = preferences.getInt(channelPreference, 0);
+ channels = new Hashtable<Integer,Integer>();
voice = preferences.getBoolean(voicePreference, true);
+
+ callsign = preferences.get(callsignPreference,"N0CALL");
+
+ String firmwaredir_string = preferences.get(firmwaredirPreference, null);
+ if (firmwaredir_string != null)
+ firmwaredir = new File(firmwaredir_string);
+ else
+ firmwaredir = null;
}
static void flush_preferences() {
return logdir;
}
- public static void set_channel(int new_channel) {
- channel = new_channel;
+ public static void set_channel(int serial, int new_channel) {
+ channels.put(serial, new_channel);
synchronized (preferences) {
- preferences.putInt(channelPreference, channel);
+ preferences.putInt(String.format(channelPreferenceFormat, serial), new_channel);
flush_preferences();
}
}
- public static int channel() {
+ public static int channel(int serial) {
+ if (channels.containsKey(serial))
+ return channels.get(serial);
+ int channel = preferences.getInt(String.format(channelPreferenceFormat, serial), 0);
+ channels.put(serial, channel);
return channel;
}
public static boolean voice() {
return voice;
}
+
+ public static void set_callsign(String new_callsign) {
+ callsign = new_callsign;
+ synchronized(preferences) {
+ preferences.put(callsignPreference, callsign);
+ flush_preferences();
+ }
+ }
+
+ public static String callsign() {
+ return callsign;
+ }
+
+ public static void set_firmwaredir(File new_firmwaredir) {
+ firmwaredir = new_firmwaredir;
+ synchronized (preferences) {
+ preferences.put(firmwaredirPreference, firmwaredir.getPath());
+ flush_preferences();
+ }
+ }
+
+ public static File firmwaredir() {
+ return firmwaredir;
+ }
}