summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2014-06-22 21:06:24 -0700
committerKeith Packard <keithp@keithp.com>2014-06-22 21:06:24 -0700
commit6cc2d671c0e335fbedb0e97699f8f273502c6807 (patch)
treed940a8054ff9c4266b11ea8dfc3e927780f5775a
parent3f3382126bf1122b1a78abe8458af5ec112a1f95 (diff)
altosui/telegps: Expose configurable APRS SSID
Signed-off-by: Keith Packard <keithp@keithp.com>
-rw-r--r--altoslib/AltosConfigData.java8
-rw-r--r--altoslib/AltosConfigValues.java4
-rw-r--r--altosui/AltosConfigUI.java53
-rw-r--r--telegps/TeleGPSConfigUI.java53
4 files changed, 118 insertions, 0 deletions
diff --git a/altoslib/AltosConfigData.java b/altoslib/AltosConfigData.java
index d8b0b081..3bf8ea43 100644
--- a/altoslib/AltosConfigData.java
+++ b/altoslib/AltosConfigData.java
@@ -71,6 +71,7 @@ public class AltosConfigData implements Iterable<String> {
/* HAS_APRS */
public int aprs_interval;
+ public int aprs_ssid;
/* HAS_BEEP */
public int beep;
@@ -250,6 +251,7 @@ public class AltosConfigData implements Iterable<String> {
pyro_firing_time = -1;
aprs_interval = -1;
+ aprs_ssid = -1;
beep = -1;
@@ -333,6 +335,7 @@ public class AltosConfigData implements Iterable<String> {
/* HAS_APRS */
try { aprs_interval = get_int(line, "APRS interval:"); } catch (Exception e) {}
+ try { aprs_ssid = get_int(line, "APRS SSID:"); } catch (Exception e) {}
/* HAS_BEEP */
try { beep = get_int(line, "Beeper setting:"); } catch (Exception e) {}
@@ -459,6 +462,8 @@ public class AltosConfigData implements Iterable<String> {
/* HAS_APRS */
if (aprs_interval >= 0)
aprs_interval = source.aprs_interval();
+ if (aprs_ssid >= 0)
+ aprs_ssid = source.aprs_ssid();
/* HAS_BEEP */
if (beep >= 0)
@@ -507,6 +512,7 @@ public class AltosConfigData implements Iterable<String> {
dest.set_pyros(null);
dest.set_pyro_firing_time(pyro_firing_time);
dest.set_aprs_interval(aprs_interval);
+ dest.set_aprs_ssid(aprs_ssid);
dest.set_beep(beep);
dest.set_tracker_motion(tracker_motion);
dest.set_tracker_interval(tracker_interval);
@@ -577,6 +583,8 @@ public class AltosConfigData implements Iterable<String> {
/* HAS_APRS */
if (aprs_interval >= 0)
link.printf("c A %d\n", aprs_interval);
+ if (aprs_ssid >= 0)
+ link.printf("c S %d\n", aprs_ssid);
/* HAS_BEEP */
if (beep >= 0)
diff --git a/altoslib/AltosConfigValues.java b/altoslib/AltosConfigValues.java
index dcb4d48f..b0c49e98 100644
--- a/altoslib/AltosConfigValues.java
+++ b/altoslib/AltosConfigValues.java
@@ -81,6 +81,10 @@ public interface AltosConfigValues {
public abstract void set_aprs_interval(int new_aprs_interval);
+ public abstract int aprs_ssid() throws AltosConfigDataException;
+
+ public abstract void set_aprs_ssid(int new_aprs_ssid);
+
public abstract int beep() throws AltosConfigDataException;
public abstract void set_beep(int new_beep);
diff --git a/altosui/AltosConfigUI.java b/altosui/AltosConfigUI.java
index a4e7aca6..6e1b47c2 100644
--- a/altosui/AltosConfigUI.java
+++ b/altosui/AltosConfigUI.java
@@ -41,6 +41,7 @@ public class AltosConfigUI
JLabel radio_frequency_label;
JLabel radio_enable_label;
JLabel aprs_interval_label;
+ JLabel aprs_ssid_label;
JLabel flight_log_max_label;
JLabel ignite_mode_label;
JLabel pad_orientation_label;
@@ -62,6 +63,7 @@ public class AltosConfigUI
JTextField radio_calibration_value;
JRadioButton radio_enable_value;
JComboBox<String> aprs_interval_value;
+ JComboBox<Integer> aprs_ssid_value;
JComboBox<String> flight_log_max_value;
JComboBox<String> ignite_mode_value;
JComboBox<String> pad_orientation_value;
@@ -113,6 +115,10 @@ public class AltosConfigUI
"10"
};
+ static Integer[] aprs_ssid_values = {
+ 0, 1, 2 ,3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
+ };
+
static String[] beep_values = {
"3750",
"4000",
@@ -201,6 +207,15 @@ public class AltosConfigUI
aprs_interval_value.setToolTipText("Hardware doesn't support APRS");
}
+ void set_aprs_ssid_tool_tip() {
+ if (aprs_ssid_value.isEnabled())
+ aprs_interval_value.setToolTipText("Set the APRS SSID (secondary station identifier)");
+ else if (aprs_interval_value.isEnabled())
+ aprs_interval_value.setToolTipText("Software version doesn't support setting the APRS SSID");
+ else
+ aprs_interval_value.setToolTipText("Hardware doesn't support APRS");
+ }
+
void set_flight_log_max_tool_tip() {
if (flight_log_max_value.isEnabled())
flight_log_max_value.setToolTipText("Size reserved for each flight log (in kB)");
@@ -504,6 +519,33 @@ public class AltosConfigUI
set_aprs_interval_tool_tip();
row++;
+ /* APRS SSID */
+ c = new GridBagConstraints();
+ c.gridx = 0; c.gridy = row;
+ c.gridwidth = 4;
+ c.fill = GridBagConstraints.NONE;
+ c.anchor = GridBagConstraints.LINE_START;
+ c.insets = il;
+ c.ipady = 5;
+ aprs_ssid_label = new JLabel("APRS SSID:");
+ pane.add(aprs_ssid_label, c);
+
+ c = new GridBagConstraints();
+ c.gridx = 4; c.gridy = row;
+ c.gridwidth = 4;
+ c.fill = GridBagConstraints.HORIZONTAL;
+ c.weightx = 1;
+ c.anchor = GridBagConstraints.LINE_START;
+ c.insets = ir;
+ c.ipady = 5;
+ aprs_ssid_value = new JComboBox<Integer>(aprs_ssid_values);
+ aprs_ssid_value.setEditable(false);
+ aprs_ssid_value.addItemListener(this);
+ aprs_ssid_value.setMaximumRowCount(aprs_ssid_values.length);
+ pane.add(aprs_ssid_value, c);
+ set_aprs_ssid_tool_tip();
+ row++;
+
/* Callsign */
c = new GridBagConstraints();
c.gridx = 0; c.gridy = row;
@@ -1180,4 +1222,15 @@ public class AltosConfigUI
return 0;
return parse_int("aprs interval", s, false);
}
+
+ public void set_aprs_ssid(int new_aprs_ssid) {
+ aprs_ssid_value.setSelectedItem(Math.max(0,new_aprs_ssid));
+ aprs_ssid_value.setVisible(new_aprs_ssid >= 0);
+ set_aprs_ssid_tool_tip();
+ }
+
+ public int aprs_ssid() throws AltosConfigDataException {
+ Integer i = (Integer) aprs_ssid_value.getSelectedItem();
+ return i;
+ }
}
diff --git a/telegps/TeleGPSConfigUI.java b/telegps/TeleGPSConfigUI.java
index dfbff12d..1fdfd70c 100644
--- a/telegps/TeleGPSConfigUI.java
+++ b/telegps/TeleGPSConfigUI.java
@@ -38,6 +38,7 @@ public class TeleGPSConfigUI
JLabel radio_frequency_label;
JLabel radio_enable_label;
JLabel aprs_interval_label;
+ JLabel aprs_ssid_label;
JLabel flight_log_max_label;
JLabel callsign_label;
JLabel tracker_motion_label;
@@ -53,6 +54,7 @@ public class TeleGPSConfigUI
JTextField radio_calibration_value;
JRadioButton radio_enable_value;
JComboBox<String> aprs_interval_value;
+ JComboBox<Integer> aprs_ssid_value;
JComboBox<String> flight_log_max_value;
JTextField callsign_value;
JComboBox<String> tracker_motion_value;
@@ -72,6 +74,10 @@ public class TeleGPSConfigUI
"10"
};
+ static Integer[] aprs_ssid_values = {
+ 0, 1, 2 ,3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
+ };
+
static String[] tracker_motion_values_m = {
"2",
"5",
@@ -148,6 +154,15 @@ public class TeleGPSConfigUI
aprs_interval_value.setToolTipText("Hardware doesn't support APRS");
}
+ void set_aprs_ssid_tool_tip() {
+ if (aprs_ssid_value.isEnabled())
+ aprs_interval_value.setToolTipText("Set the APRS SSID (secondary station identifier)");
+ else if (aprs_interval_value.isEnabled())
+ aprs_interval_value.setToolTipText("Software version doesn't support setting the APRS SSID");
+ else
+ aprs_interval_value.setToolTipText("Hardware doesn't support APRS");
+ }
+
void set_flight_log_max_tool_tip() {
if (flight_log_max_value.isEnabled())
flight_log_max_value.setToolTipText("Size reserved for each flight log (in kB)");
@@ -341,6 +356,33 @@ public class TeleGPSConfigUI
set_aprs_interval_tool_tip();
row++;
+ /* APRS SSID */
+ c = new GridBagConstraints();
+ c.gridx = 0; c.gridy = row;
+ c.gridwidth = 4;
+ c.fill = GridBagConstraints.NONE;
+ c.anchor = GridBagConstraints.LINE_START;
+ c.insets = il;
+ c.ipady = 5;
+ aprs_ssid_label = new JLabel("APRS SSID:");
+ pane.add(aprs_ssid_label, c);
+
+ c = new GridBagConstraints();
+ c.gridx = 4; c.gridy = row;
+ c.gridwidth = 4;
+ c.fill = GridBagConstraints.HORIZONTAL;
+ c.weightx = 1;
+ c.anchor = GridBagConstraints.LINE_START;
+ c.insets = ir;
+ c.ipady = 5;
+ aprs_ssid_value = new JComboBox<Integer>(aprs_ssid_values);
+ aprs_ssid_value.setEditable(false);
+ aprs_ssid_value.addItemListener(this);
+ aprs_ssid_value.setMaximumRowCount(aprs_ssid_values.length);
+ pane.add(aprs_ssid_value, c);
+ set_aprs_ssid_tool_tip();
+ row++;
+
/* Callsign */
c = new GridBagConstraints();
c.gridx = 0; c.gridy = row;
@@ -786,4 +828,15 @@ public class TeleGPSConfigUI
return 0;
return parse_int("aprs interval", s, false);
}
+
+ public void set_aprs_ssid(int new_aprs_ssid) {
+ aprs_ssid_value.setSelectedItem(Math.max(0,new_aprs_ssid));
+ aprs_ssid_value.setVisible(new_aprs_ssid >= 0);
+ set_aprs_ssid_tool_tip();
+ }
+
+ public int aprs_ssid() throws AltosConfigDataException {
+ Integer i = (Integer) aprs_ssid_value.getSelectedItem();
+ return i;
+ }
}