altosui: Remove another beep config debug printf
[fw/altos] / altosui / AltosConfigUI.java
index 9723e6600141549237244cac29c878787df9ae1a..6292f77870fd6c19a8cca0893572970dc111c9fb 100644 (file)
@@ -21,7 +21,7 @@ import java.awt.*;
 import java.awt.event.*;
 import javax.swing.*;
 import javax.swing.event.*;
-import org.altusmetrum.altoslib_1.*;
+import org.altusmetrum.altoslib_3.*;
 import org.altusmetrum.altosuilib_1.*;
 
 public class AltosConfigUI
@@ -45,6 +45,7 @@ public class AltosConfigUI
        JLabel          ignite_mode_label;
        JLabel          pad_orientation_label;
        JLabel          callsign_label;
+       JLabel          beep_label;
 
        public boolean          dirty;
 
@@ -63,6 +64,7 @@ public class AltosConfigUI
        JComboBox       ignite_mode_value;
        JComboBox       pad_orientation_value;
        JTextField      callsign_value;
+       JComboBox       beep_value;
 
        JButton         pyro;
 
@@ -112,6 +114,12 @@ public class AltosConfigUI
                "10"
        };
 
+       static String[] beep_values = {
+               "3750",
+               "4000",
+               "4250",
+       };
+
        static String[] pad_orientation_values = {
                "Antenna Up",
                "Antenna Down",
@@ -132,11 +140,21 @@ public class AltosConfigUI
                }
        }
 
+       boolean is_telemini_v1() {
+               String  product = product_value.getText();
+               return product != null && product.startsWith("TeleMini-v1");
+       }
+
        boolean is_telemini() {
                String  product = product_value.getText();
                return product != null && product.startsWith("TeleMini");
        }
 
+       boolean is_easymini() {
+               String  product = product_value.getText();
+               return product != null && product.startsWith("EasyMini");
+       }
+
        boolean is_telemetrum() {
                String  product = product_value.getText();
                return product != null && product.startsWith("TeleMetrum");
@@ -167,12 +185,10 @@ public class AltosConfigUI
                if (flight_log_max_value.isEnabled())
                        flight_log_max_value.setToolTipText("Size reserved for each flight log (in kB)");
                else {
-                       if (is_telemetrum())
-                               flight_log_max_value.setToolTipText("Cannot set max value with flight logs in memory");
-                       else if (is_telemini())
-                               flight_log_max_value.setToolTipText("TeleMini stores only one flight");
+                       if (is_telemini_v1())
+                               flight_log_max_value.setToolTipText("TeleMini-v1 stores only one flight");
                        else
-                               flight_log_max_value.setToolTipText("Cannot set max flight log value");
+                               flight_log_max_value.setToolTipText("Cannot set max value with flight logs in memory");
                }
        }
 
@@ -185,20 +201,27 @@ public class AltosConfigUI
 
        void set_pad_orientation_tool_tip() {
                if (pad_orientation_value.isEnabled())
-                       pad_orientation_value.setToolTipText("How will TeleMetrum be mounted in the airframe");
+                       pad_orientation_value.setToolTipText("How will the computer be mounted in the airframe");
                else {
                        if (is_telemetrum())
                                pad_orientation_value.setToolTipText("Older TeleMetrum firmware must fly antenna forward");
-                       else if (is_telemini())
-                               pad_orientation_value.setToolTipText("TeleMini doesn't care how it is mounted");
+                       else if (is_telemini() || is_easymini())
+                               pad_orientation_value.setToolTipText("TeleMini and EasyMini don't care how they are mounted");
                        else
                                pad_orientation_value.setToolTipText("Can't select orientation");
                }
        }
 
+       void set_beep_tool_tip() {
+               if (beep_value.isEnabled())
+                       beep_value.setToolTipText("What frequency the beeper will sound at");
+               else
+                       beep_value.setToolTipText("Older firmware could not select beeper frequency");
+       }
+
        /* Build the UI using a grid bag */
        public AltosConfigUI(JFrame in_owner, boolean remote) {
-               super (in_owner, "Configure TeleMetrum", false);
+               super (in_owner, "Configure Flight Computer", false);
 
                owner = in_owner;
                GridBagConstraints c;
@@ -561,6 +584,32 @@ public class AltosConfigUI
                set_pad_orientation_tool_tip();
                row++;
 
+               /* Beeper */
+               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;
+               beep_label = new JLabel("Beeper Frequency:");
+               pane.add(beep_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;
+               beep_value = new JComboBox(beep_values);
+               beep_value.setEditable(true);
+               beep_value.addItemListener(this);
+               pane.add(beep_value, c);
+               set_beep_tool_tip();
+               row++;
+
                /* Pyro channels */
                c = new GridBagConstraints();
                c.gridx = 4; c.gridy = row;
@@ -661,7 +710,10 @@ public class AltosConfigUI
        AltosConfigPyroUI       pyro_ui;
 
        public void dispose() {
+               if (pyro_ui != null)
+                       pyro_ui.dispose();
                AltosPreferences.unregister_units_listener(this);
+               super.dispose();
        }
 
        /* Listen for events from our buttons */
@@ -669,10 +721,10 @@ public class AltosConfigUI
                String  cmd = e.getActionCommand();
 
                if (cmd.equals("Pyro")) {
-                       if (pyro_ui == null && pyros != null) {
+                       if (pyro_ui == null && pyros != null)
                                pyro_ui = new AltosConfigPyroUI(this, pyros);
+                       if (pyro_ui != null)
                                pyro_ui.make_visible();
-                       }
                        return;
                }
 
@@ -739,14 +791,14 @@ public class AltosConfigUI
        String get_main_deploy_label() {
                return String.format("Main Deploy Altitude(%s):", AltosConvert.height.show_units());
        }
-       
+
        String[] main_deploy_values() {
                if (AltosConvert.imperial_units)
                        return main_deploy_values_ft;
                else
                        return main_deploy_values_m;
        }
-                       
+
        void set_main_deploy_values() {
                String[]        v = main_deploy_values();
                while (main_deploy_value.getItemCount() > 0)
@@ -755,11 +807,13 @@ public class AltosConfigUI
                        main_deploy_value.addItem(v[i]);
                main_deploy_value.setMaximumRowCount(v.length);
        }
-       
+
        public void units_changed(boolean imperial_units) {
+               String v = main_deploy_value.getSelectedItem().toString();
                main_deploy_label.setText(get_main_deploy_label());
                set_main_deploy_values();
-               listener.actionPerformed(new ActionEvent(this, 0, "Reset"));
+               int m = (int) (AltosConvert.height.parse(v, !imperial_units) + 0.5);
+               set_main_deploy(m);
        }
 
        public void set_apogee_delay(int new_apogee_delay) {
@@ -781,28 +835,7 @@ public class AltosConfigUI
        }
 
        public void set_radio_frequency(double new_radio_frequency) {
-               int i;
-               for (i = 0; i < radio_frequency_value.getItemCount(); i++) {
-                       AltosFrequency  f = (AltosFrequency) radio_frequency_value.getItemAt(i);
-                       
-                       if (f.close(new_radio_frequency)) {
-                               radio_frequency_value.setSelectedIndex(i);
-                               return;
-                       }
-               }
-               for (i = 0; i < radio_frequency_value.getItemCount(); i++) {
-                       AltosFrequency  f = (AltosFrequency) radio_frequency_value.getItemAt(i);
-                       
-                       if (new_radio_frequency < f.frequency)
-                               break;
-               }
-               String  description = String.format("%s serial %s",
-                                                   product_value.getText(),
-                                                   serial_value.getText());
-               AltosFrequency  new_frequency = new AltosFrequency(new_radio_frequency, description);
-               AltosUIPreferences.add_common_frequency(new_frequency);
-               radio_frequency_value.insertItemAt(new_frequency, i);
-               radio_frequency_value.setSelectedIndex(i);
+               radio_frequency_value.set_frequency(new_radio_frequency);
        }
 
        public double radio_frequency() {
@@ -810,7 +843,11 @@ public class AltosConfigUI
        }
 
        public void set_radio_calibration(int new_radio_calibration) {
-               radio_calibration_value.setText(String.format("%d", new_radio_calibration));
+               radio_calibration_value.setVisible(new_radio_calibration >= 0);
+               if (new_radio_calibration < 0)
+                       radio_calibration_value.setText("Disabled");
+               else
+                       radio_calibration_value.setText(String.format("%d", new_radio_calibration));
        }
 
        public int radio_calibration() {
@@ -823,6 +860,7 @@ public class AltosConfigUI
                        radio_enable_value.setEnabled(true);
                } else {
                        radio_enable_value.setSelected(true);
+                       radio_enable_value.setVisible(radio_frequency() > 0);
                        radio_enable_value.setEnabled(false);
                }
                set_radio_enable_tool_tip();
@@ -836,6 +874,7 @@ public class AltosConfigUI
        }
 
        public void set_callsign(String new_callsign) {
+               callsign_value.setVisible(new_callsign != null);
                callsign_value.setText(new_callsign);
        }
 
@@ -844,7 +883,6 @@ public class AltosConfigUI
        }
 
        public void set_flight_log_max(int new_flight_log_max) {
-               flight_log_max_value.setEnabled(new_flight_log_max > 0);
                flight_log_max_value.setSelectedItem(Integer.toString(new_flight_log_max));
                set_flight_log_max_tool_tip();
        }
@@ -895,10 +933,10 @@ public class AltosConfigUI
                if (new_pad_orientation >= pad_orientation_values.length)
                        new_pad_orientation = 0;
                if (new_pad_orientation < 0) {
-                       pad_orientation_value.setEnabled(false);
+                       pad_orientation_value.setVisible(false);
                        new_pad_orientation = 0;
                } else {
-                       pad_orientation_value.setEnabled(true);
+                       pad_orientation_value.setVisible(true);
                }
                pad_orientation_value.setSelectedIndex(new_pad_orientation);
                set_pad_orientation_tool_tip();
@@ -911,9 +949,29 @@ public class AltosConfigUI
                        return -1;
        }
 
+       public void set_beep(int new_beep) {
+               int new_freq = (int) Math.floor (AltosConvert.beep_value_to_freq(new_beep) + 0.5);
+               for (int i = 0; i < beep_values.length; i++)
+                       if (new_beep == AltosConvert.beep_freq_to_value(Integer.parseInt(beep_values[i]))) {
+                               beep_value.setSelectedIndex(i);
+                               set_beep_tool_tip();
+                               return;
+                       }
+               beep_value.setSelectedItem(String.format("%d", new_freq));
+               beep_value.setEnabled(new_beep >= 0);
+               set_beep_tool_tip();
+       }
+
+       public int beep() {
+               if (beep_value.isEnabled())
+                       return AltosConvert.beep_freq_to_value(Integer.parseInt(beep_value.getSelectedItem().toString()));
+               else
+                       return -1;
+       }
+
        public void set_pyros(AltosPyro[] new_pyros) {
                pyros = new_pyros;
-               pyro.setEnabled(pyros != null);
+               pyro.setVisible(pyros != null);
                if (pyros != null && pyro_ui != null)
                        pyro_ui.set_pyros(pyros);
        }
@@ -932,7 +990,7 @@ public class AltosConfigUI
                else
                        s = Integer.toString(new_aprs_interval);
                aprs_interval_value.setSelectedItem(s);
-               aprs_interval_value.setEnabled(new_aprs_interval >= 0);
+               aprs_interval_value.setVisible(new_aprs_interval >= 0);
                set_aprs_interval_tool_tip();
        }