X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=altosui%2FAltosConfigFCUI.java;h=278d3fea167f076bf0dac50f886f5b94d2040dfd;hp=75b294d9b2c01d5acdd440d80a64350420580045;hb=HEAD;hpb=b140da92536d7c48ba37868f1c2afce7bb86dfdb diff --git a/altosui/AltosConfigFCUI.java b/altosui/AltosConfigFCUI.java index 75b294d9..9d39cda1 100644 --- a/altosui/AltosConfigFCUI.java +++ b/altosui/AltosConfigFCUI.java @@ -43,6 +43,8 @@ public class AltosConfigFCUI JLabel radio_frequency_label; JLabel radio_enable_label; JLabel radio_10mw_label; + JLabel report_feet_label; + JLabel gps_receiver_label; JLabel rate_label; JLabel aprs_interval_label; JLabel aprs_ssid_label; @@ -71,6 +73,8 @@ public class AltosConfigFCUI JLabel radio_calibration_value; JRadioButton radio_enable_value; JRadioButton radio_10mw_value; + JComboBox report_feet_value; + JComboBox gps_receiver_value; AltosUIRateList rate_value; JComboBox aprs_interval_value; JComboBox aprs_ssid_value; @@ -119,13 +123,6 @@ public class AltosConfigFCUI "0", "5", "10", "15", "20" }; - static String[] ignite_mode_values = { - "Dual Deploy", - "Redundant Apogee", - "Redundant Main", - "Separation & Apogee", - }; - static String[] aprs_interval_values = { "Disabled", "2", @@ -150,16 +147,6 @@ public class AltosConfigFCUI "4250", }; - static String[] pad_orientation_values_radio = { - "Antenna Up", - "Antenna Down", - }; - - static String[] pad_orientation_values_no_radio = { - "Beeper Up", - "Beeper Down", - }; - String[] pad_orientation_values; static String[] tracker_motion_values_m = { @@ -183,6 +170,11 @@ public class AltosConfigFCUI "10" }; + static String[] report_feet_values = { + "Meters", + "Feet", + }; + /* A window listener to catch closing events and tell the config code */ class ConfigListener extends WindowAdapter { AltosConfigFCUI ui; @@ -233,7 +225,7 @@ public class AltosConfigFCUI return product != null && product.startsWith("EasyTimer"); } - boolean has_radio() { + public boolean has_radio() { return is_telemega() || is_telemetrum() || is_telemini(); } @@ -319,11 +311,7 @@ public class AltosConfigFCUI } void set_pad_orientation_values() { - String [] new_values; - if (has_radio()) - new_values = pad_orientation_values_radio; - else - new_values = pad_orientation_values_no_radio; + String [] new_values = AltosLib.pad_orientation_values(has_radio()); if (new_values != pad_orientation_values) { int id = pad_orientation_value.getSelectedIndex(); pad_orientation_value.removeAllItems(); @@ -346,7 +334,7 @@ public class AltosConfigFCUI void set_beep_tool_tip() { if (beep_value.isVisible()) - beep_value.setToolTipText("What frequency the beeper will sound at"); + beep_value.setToolTipText("What frequency the beeper will sound at (0 for off)"); else beep_value.setToolTipText("Older firmware could not select beeper frequency"); } @@ -358,6 +346,20 @@ public class AltosConfigFCUI radio_10mw_value.setToolTipText("Older firmware could not limit radio power"); } + void set_report_feet_tool_tip() { + if (report_feet_value.isVisible()) + report_feet_value.setToolTipText("Units used after landing to beep max height"); + else + report_feet_value.setToolTipText("Older firmware always beeps max height in meters"); + } + + void set_gps_receiver_tool_tip() { + if (gps_receiver_value.isVisible()) + gps_receiver_value.setToolTipText("GPS receiver selection"); + else + gps_receiver_value.setToolTipText("Only TeleMega with new firmware supports alternate GPS receivers"); + } + /* Build the UI using a grid bag */ public AltosConfigFCUI(JFrame in_owner, boolean remote) { super (in_owner, title, false); @@ -616,6 +618,58 @@ public class AltosConfigFCUI set_radio_10mw_tool_tip(); row++; + /* Report feet */ + 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; + report_feet_label = new JLabel("Beep max height in:"); + pane.add(report_feet_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; + report_feet_value = new JComboBox(report_feet_values); + report_feet_value.setEditable(false); + report_feet_value.addItemListener(this); + pane.add(report_feet_value, c); + set_report_feet_tool_tip(); + row++; + + /* GPS Receiver */ + 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; + gps_receiver_label = new JLabel("GPS Receiver:"); + pane.add(gps_receiver_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; + gps_receiver_value = new JComboBox(AltosLib.gps_receiver_names); + gps_receiver_value.setEditable(false); + gps_receiver_value.addItemListener(this); + pane.add(gps_receiver_value, c); + set_gps_receiver_tool_tip(); + row++; + /* Telemetry Rate */ c = new GridBagConstraints(); c.gridx = 0; c.gridy = row; @@ -818,7 +872,7 @@ public class AltosConfigFCUI c.anchor = GridBagConstraints.LINE_START; c.insets = ir; c.ipady = 5; - ignite_mode_value = new JComboBox(ignite_mode_values); + ignite_mode_value = new JComboBox(AltosLib.ignite_mode_values); ignite_mode_value.setEditable(false); ignite_mode_value.addItemListener(this); pane.add(ignite_mode_value, c); @@ -844,7 +898,7 @@ public class AltosConfigFCUI c.anchor = GridBagConstraints.LINE_START; c.insets = ir; c.ipady = 5; - pad_orientation_values = pad_orientation_values_no_radio; + pad_orientation_values = AltosLib.pad_orientation_values(false); pad_orientation_value = new JComboBox(pad_orientation_values); pad_orientation_value.setEditable(false); @@ -1378,7 +1432,7 @@ public class AltosConfigFCUI public void set_ignite_mode(int new_ignite_mode) { if (new_ignite_mode != AltosLib.MISSING) { - if (new_ignite_mode >= ignite_mode_values.length) + if (new_ignite_mode >= AltosLib.ignite_mode_values.length) new_ignite_mode = 0; if (new_ignite_mode < 0) { ignite_mode_value.setEnabled(false); @@ -1488,6 +1542,57 @@ public class AltosConfigFCUI return AltosLib.MISSING; } + public void set_report_feet(int new_report_feet) { + if (new_report_feet != AltosLib.MISSING) { + if (new_report_feet >= report_feet_values.length) + new_report_feet = 0; + if (new_report_feet < 0) { + report_feet_value.setEnabled(false); + new_report_feet = 0; + } else { + report_feet_value.setEnabled(true); + } + report_feet_value.setSelectedIndex(new_report_feet); + } + report_feet_value.setVisible(new_report_feet != AltosLib.MISSING); + report_feet_label.setVisible(new_report_feet != AltosLib.MISSING); + + set_report_feet_tool_tip(); + } + + public int report_feet() { + if (report_feet_value.isVisible()) + return report_feet_value.getSelectedIndex(); + else + return AltosLib.MISSING; + } + + public void set_gps_receiver(int new_gps_receiver) { + System.out.printf("set_gps_receiver %d\n", new_gps_receiver); + if (new_gps_receiver != AltosLib.MISSING) { + if (new_gps_receiver >= AltosLib.gps_receiver_names.length) + new_gps_receiver = 0; + if (new_gps_receiver < 0) { + gps_receiver_value.setEnabled(false); + new_gps_receiver = 0; + } else { + gps_receiver_value.setEnabled(true); + } + gps_receiver_value.setSelectedIndex(new_gps_receiver); + } + gps_receiver_value.setVisible(new_gps_receiver != AltosLib.MISSING); + gps_receiver_label.setVisible(new_gps_receiver != AltosLib.MISSING); + + set_gps_receiver_tool_tip(); + } + + public int gps_receiver() { + if (gps_receiver_value.isVisible()) + return gps_receiver_value.getSelectedIndex(); + else + return AltosLib.MISSING; + } + String[] tracker_motion_values() { if (AltosConvert.imperial_units) return tracker_motion_values_ft;