Merge branch 'master' of ssh://git.gag.com/scm/git/fw/altos
[fw/altos] / altosui / AltosConfigUI.java
index 2c3435c18a47494834663d00c1626c9041399dc8..599ed0512bca0c869d1dc38c48ec3e98d48e8022 100644 (file)
@@ -22,9 +22,10 @@ import java.awt.event.*;
 import javax.swing.*;
 import javax.swing.event.*;
 import org.altusmetrum.AltosLib.*;
+import org.altusmetrum.altosuilib.*;
 
 public class AltosConfigUI
-       extends AltosDialog
+       extends AltosUIDialog
        implements ActionListener, ItemListener, DocumentListener, AltosConfigValues
 {
 
@@ -39,6 +40,7 @@ public class AltosConfigUI
        JLabel          radio_calibration_label;
        JLabel          radio_frequency_label;
        JLabel          radio_enable_label;
+       JLabel          aprs_interval_label;
        JLabel          flight_log_max_label;
        JLabel          ignite_mode_label;
        JLabel          pad_orientation_label;
@@ -56,6 +58,7 @@ public class AltosConfigUI
        AltosFreqList   radio_frequency_value;
        JTextField      radio_calibration_value;
        JRadioButton    radio_enable_value;
+       JComboBox       aprs_interval_value;
        JComboBox       flight_log_max_value;
        JComboBox       ignite_mode_value;
        JComboBox       pad_orientation_value;
@@ -97,6 +100,13 @@ public class AltosConfigUI
                "Redundant Main",
        };
 
+       static String[] aprs_interval_values = {
+               "Disabled",
+               "2",
+               "5",
+               "10"
+       };
+
        static String[] pad_orientation_values = {
                "Antenna Up",
                "Antenna Down",
@@ -141,6 +151,13 @@ public class AltosConfigUI
                        radio_enable_value.setToolTipText("Firmware version does not support disabling radio");
        }
 
+       void set_aprs_interval_tool_tip() {
+               if (aprs_interval_value.isEnabled())
+                       aprs_interval_value.setToolTipText("Enable APRS and set the interval between APRS reports");
+               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)");
@@ -393,7 +410,7 @@ public class AltosConfigUI
                c.anchor = GridBagConstraints.LINE_START;
                c.insets = il;
                c.ipady = 5;
-               radio_enable_label = new JLabel("Telemetry/RDF Enable:");
+               radio_enable_label = new JLabel("Telemetry/RDF/APRS Enable:");
                pane.add(radio_enable_label, c);
 
                c = new GridBagConstraints();
@@ -410,6 +427,32 @@ public class AltosConfigUI
                set_radio_enable_tool_tip();
                row++;
 
+               /* APRS interval */
+               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_interval_label = new JLabel("APRS Interval(s):");
+               pane.add(aprs_interval_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_interval_value = new JComboBox(aprs_interval_values);
+               aprs_interval_value.setEditable(true);
+               aprs_interval_value.addItemListener(this);
+               pane.add(aprs_interval_value, c);
+               set_aprs_interval_tool_tip();
+               row++;
+
                /* Callsign */
                c = new GridBagConstraints();
                c.gridx = 0; c.gridy = row;
@@ -843,4 +886,24 @@ public class AltosConfigUI
                        pyros = pyro_ui.get_pyros();
                return pyros;
        }
+
+       public void set_aprs_interval(int new_aprs_interval) {
+               String  s;
+
+               if (new_aprs_interval <= 0)
+                       s = "Disabled";
+               else
+                       s = Integer.toString(new_aprs_interval);
+               aprs_interval_value.setSelectedItem(s);
+               aprs_interval_value.setEnabled(new_aprs_interval >= 0);
+               set_aprs_interval_tool_tip();
+       }
+
+       public int aprs_interval() {
+               String  s = aprs_interval_value.getSelectedItem().toString();
+
+               if (s.equals("Disabled"))
+                       return 0;
+               return Integer.parseInt(s);
+       }
 }