X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=altosui%2FAltosConfigUI.java;h=3ec3cdb0f365a524895d342ddec9e19cc95f3934;hb=a7fd31842a602a8ac803d0e09efb4ffabf7a289b;hp=656b0b6f6baa321100bb71975d46534d1c0e037a;hpb=99c729495a8cc589718607ee35d22454c6af2994;p=fw%2Faltos diff --git a/altosui/AltosConfigUI.java b/altosui/AltosConfigUI.java index 656b0b6f..3ec3cdb0 100644 --- a/altosui/AltosConfigUI.java +++ b/altosui/AltosConfigUI.java @@ -21,98 +21,106 @@ import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; -import org.altusmetrum.altoslib_3.*; -import org.altusmetrum.altosuilib_1.*; +import org.altusmetrum.altoslib_4.*; +import org.altusmetrum.altosuilib_2.*; public class AltosConfigUI extends AltosUIDialog implements ActionListener, ItemListener, DocumentListener, AltosConfigValues, AltosUnitsListener { - Container pane; - JLabel product_label; - JLabel version_label; - JLabel serial_label; - JLabel main_deploy_label; - JLabel apogee_delay_label; - JLabel apogee_lockout_label; - JLabel frequency_label; - 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; - JLabel callsign_label; + Container pane; + JLabel product_label; + JLabel version_label; + JLabel serial_label; + JLabel main_deploy_label; + JLabel apogee_delay_label; + JLabel apogee_lockout_label; + JLabel frequency_label; + 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; + JLabel callsign_label; + JLabel beep_label; public boolean dirty; - JFrame owner; - JLabel product_value; - JLabel version_value; - JLabel serial_value; - JComboBox main_deploy_value; - JComboBox apogee_delay_value; - JComboBox apogee_lockout_value; - 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; - JTextField callsign_value; - - JButton pyro; - - JButton save; - JButton reset; - JButton reboot; - JButton close; - - AltosPyro[] pyros; - - ActionListener listener; - - static String[] main_deploy_values_m = { + JFrame owner; + JLabel product_value; + JLabel version_value; + JLabel serial_value; + JComboBox main_deploy_value; + JComboBox apogee_delay_value; + JComboBox apogee_lockout_value; + 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; + JTextField callsign_value; + JComboBox beep_value; + + JButton pyro; + + JButton save; + JButton reset; + JButton reboot; + JButton close; + + AltosPyro[] pyros; + + ActionListener listener; + + static String[] main_deploy_values_m = { "100", "150", "200", "250", "300", "350", "400", "450", "500" }; - static String[] main_deploy_values_ft = { + static String[] main_deploy_values_ft = { "250", "500", "750", "1000", "1250", "1500", "1750", "2000" }; - static String[] apogee_delay_values = { + static String[] apogee_delay_values = { "0", "1", "2", "3", "4", "5" }; - static String[] apogee_lockout_values = { + static String[] apogee_lockout_values = { "0", "5", "10", "15", "20" }; - static String[] flight_log_max_values = { + static String[] flight_log_max_values = { "64", "128", "192", "256", "320", "384", "448", "512", "576", "640", "704", "768", "832", "896", "960", }; - static String[] ignite_mode_values = { + static String[] ignite_mode_values = { "Dual Deploy", "Redundant Apogee", "Redundant Main", }; - static String[] aprs_interval_values = { + static String[] aprs_interval_values = { "Disabled", "2", "5", "10" }; - static String[] pad_orientation_values = { + static String[] beep_values = { + "3750", + "4000", + "4250", + }; + + static String[] pad_orientation_values = { "Antenna Up", "Antenna Down", }; @@ -204,6 +212,13 @@ public class AltosConfigUI } } + 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 Flight Computer", false); @@ -304,7 +319,7 @@ public class AltosConfigUI c.anchor = GridBagConstraints.LINE_START; c.insets = ir; c.ipady = 5; - main_deploy_value = new JComboBox(main_deploy_values()); + main_deploy_value = new JComboBox(main_deploy_values()); main_deploy_value.setEditable(true); main_deploy_value.addItemListener(this); pane.add(main_deploy_value, c); @@ -330,7 +345,7 @@ public class AltosConfigUI c.anchor = GridBagConstraints.LINE_START; c.insets = ir; c.ipady = 5; - apogee_delay_value = new JComboBox(apogee_delay_values); + apogee_delay_value = new JComboBox(apogee_delay_values); apogee_delay_value.setEditable(true); apogee_delay_value.addItemListener(this); pane.add(apogee_delay_value, c); @@ -356,7 +371,7 @@ public class AltosConfigUI c.anchor = GridBagConstraints.LINE_START; c.insets = ir; c.ipady = 5; - apogee_lockout_value = new JComboBox(apogee_lockout_values); + apogee_lockout_value = new JComboBox(apogee_lockout_values); apogee_lockout_value.setEditable(true); apogee_lockout_value.addItemListener(this); pane.add(apogee_lockout_value, c); @@ -459,7 +474,7 @@ public class AltosConfigUI c.anchor = GridBagConstraints.LINE_START; c.insets = ir; c.ipady = 5; - aprs_interval_value = new JComboBox(aprs_interval_values); + aprs_interval_value = new JComboBox(aprs_interval_values); aprs_interval_value.setEditable(true); aprs_interval_value.addItemListener(this); pane.add(aprs_interval_value, c); @@ -510,7 +525,7 @@ public class AltosConfigUI c.anchor = GridBagConstraints.LINE_START; c.insets = ir; c.ipady = 5; - flight_log_max_value = new JComboBox(flight_log_max_values); + flight_log_max_value = new JComboBox(flight_log_max_values); flight_log_max_value.setEditable(true); flight_log_max_value.addItemListener(this); pane.add(flight_log_max_value, c); @@ -536,7 +551,7 @@ public class AltosConfigUI c.anchor = GridBagConstraints.LINE_START; c.insets = ir; c.ipady = 5; - ignite_mode_value = new JComboBox(ignite_mode_values); + ignite_mode_value = new JComboBox(ignite_mode_values); ignite_mode_value.setEditable(false); ignite_mode_value.addItemListener(this); pane.add(ignite_mode_value, c); @@ -562,13 +577,39 @@ public class AltosConfigUI c.anchor = GridBagConstraints.LINE_START; c.insets = ir; c.ipady = 5; - pad_orientation_value = new JComboBox(pad_orientation_values); + pad_orientation_value = new JComboBox(pad_orientation_values); pad_orientation_value.setEditable(false); pad_orientation_value.addItemListener(this); pane.add(pad_orientation_value, c); 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; @@ -908,6 +949,26 @@ 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.setVisible(pyros != null);