JLabel serial_label;
JLabel main_deploy_label;
JLabel apogee_delay_label;
- JLabel radio_channel_label;
+ JLabel frequency_label;
JLabel radio_calibration_label;
+ JLabel radio_frequency_label;
+ JLabel flight_log_max_label;
+ JLabel ignite_mode_label;
+ JLabel pad_orientation_label;
JLabel callsign_label;
public boolean dirty;
JLabel serial_value;
JComboBox main_deploy_value;
JComboBox apogee_delay_value;
- JComboBox radio_channel_value;
+ AltosFreqList radio_frequency_value;
JTextField radio_calibration_value;
+ JComboBox flight_log_max_value;
+ JComboBox ignite_mode_value;
+ JComboBox pad_orientation_value;
JTextField callsign_value;
JButton save;
"0", "1", "2", "3", "4", "5"
};
- static String[] radio_channel_values = new String[10];
- {
- for (int i = 0; i <= 9; i++)
- radio_channel_values[i] = String.format("Channel %1d (%7.3fMHz)",
- i, 434.550 + i * 0.1);
- }
+ 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 = {
+ "Dual Deploy",
+ "Redundant Apogee",
+ "Redundant Main",
+ };
+
+ static String[] pad_orientation_values = {
+ "Antenna Up",
+ "Antenna Down",
+ };
/* A window listener to catch closing events and tell the config code */
class ConfigListener extends WindowAdapter {
apogee_delay_value.addItemListener(this);
pane.add(apogee_delay_value, c);
- /* Radio channel */
+ /* Frequency */
c = new GridBagConstraints();
c.gridx = 0; c.gridy = 5;
c.gridwidth = 4;
c.anchor = GridBagConstraints.LINE_START;
c.insets = il;
c.ipady = 5;
- radio_channel_label = new JLabel("Radio Channel:");
- pane.add(radio_channel_label, c);
+ radio_frequency_label = new JLabel("Frequency:");
+ pane.add(radio_frequency_label, c);
c = new GridBagConstraints();
c.gridx = 4; c.gridy = 5;
c.anchor = GridBagConstraints.LINE_START;
c.insets = ir;
c.ipady = 5;
- radio_channel_value = new JComboBox(radio_channel_values);
- radio_channel_value.setEditable(false);
- radio_channel_value.addItemListener(this);
- if (remote)
- radio_channel_value.setEnabled(false);
- pane.add(radio_channel_value, c);
+ radio_frequency_value = new AltosFreqList();
+ radio_frequency_value.addItemListener(this);
+ pane.add(radio_frequency_value, c);
/* Radio Calibration */
c = new GridBagConstraints();
callsign_value.getDocument().addDocumentListener(this);
pane.add(callsign_value, c);
- /* Buttons */
+ /* Flight log max */
c = new GridBagConstraints();
c.gridx = 0; c.gridy = 8;
+ c.gridwidth = 4;
+ c.fill = GridBagConstraints.NONE;
+ c.anchor = GridBagConstraints.LINE_START;
+ c.insets = il;
+ c.ipady = 5;
+ flight_log_max_label = new JLabel("Maximum Flight Log Size:");
+ pane.add(flight_log_max_label, c);
+
+ c = new GridBagConstraints();
+ c.gridx = 4; c.gridy = 8;
+ c.gridwidth = 4;
+ c.fill = GridBagConstraints.HORIZONTAL;
+ c.weightx = 1;
+ 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.setEditable(true);
+ flight_log_max_value.addItemListener(this);
+ pane.add(flight_log_max_value, c);
+
+ /* Ignite mode */
+ c = new GridBagConstraints();
+ c.gridx = 0; c.gridy = 9;
+ c.gridwidth = 4;
+ c.fill = GridBagConstraints.NONE;
+ c.anchor = GridBagConstraints.LINE_START;
+ c.insets = il;
+ c.ipady = 5;
+ ignite_mode_label = new JLabel("Igniter Firing Mode:");
+ pane.add(ignite_mode_label, c);
+
+ c = new GridBagConstraints();
+ c.gridx = 4; c.gridy = 9;
+ c.gridwidth = 4;
+ c.fill = GridBagConstraints.HORIZONTAL;
+ c.weightx = 1;
+ c.anchor = GridBagConstraints.LINE_START;
+ c.insets = ir;
+ c.ipady = 5;
+ ignite_mode_value = new JComboBox(ignite_mode_values);
+ ignite_mode_value.setEditable(false);
+ ignite_mode_value.addItemListener(this);
+ pane.add(ignite_mode_value, c);
+
+ /* Pad orientation */
+ c = new GridBagConstraints();
+ c.gridx = 0; c.gridy = 10;
+ c.gridwidth = 4;
+ c.fill = GridBagConstraints.NONE;
+ c.anchor = GridBagConstraints.LINE_START;
+ c.insets = il;
+ c.ipady = 5;
+ pad_orientation_label = new JLabel("Pad Orientation:");
+ pane.add(pad_orientation_label, c);
+
+ c = new GridBagConstraints();
+ c.gridx = 4; c.gridy = 10;
+ c.gridwidth = 4;
+ c.fill = GridBagConstraints.HORIZONTAL;
+ c.weightx = 1;
+ c.anchor = GridBagConstraints.LINE_START;
+ c.insets = ir;
+ c.ipady = 5;
+ pad_orientation_value = new JComboBox(pad_orientation_values);
+ pad_orientation_value.setEditable(false);
+ pad_orientation_value.addItemListener(this);
+ pane.add(pad_orientation_value, c);
+
+ /* Buttons */
+ c = new GridBagConstraints();
+ c.gridx = 0; c.gridy = 11;
c.gridwidth = 2;
c.fill = GridBagConstraints.NONE;
c.anchor = GridBagConstraints.LINE_START;
save.setActionCommand("Save");
c = new GridBagConstraints();
- c.gridx = 2; c.gridy = 8;
+ c.gridx = 2; c.gridy = 11;
c.gridwidth = 2;
c.fill = GridBagConstraints.NONE;
c.anchor = GridBagConstraints.CENTER;
reset.setActionCommand("Reset");
c = new GridBagConstraints();
- c.gridx = 4; c.gridy = 8;
+ c.gridx = 4; c.gridy = 11;
c.gridwidth = 2;
c.fill = GridBagConstraints.NONE;
c.anchor = GridBagConstraints.CENTER;
reboot.setActionCommand("Reboot");
c = new GridBagConstraints();
- c.gridx = 6; c.gridy = 8;
+ c.gridx = 6; c.gridy = 11;
c.gridwidth = 2;
c.fill = GridBagConstraints.NONE;
c.anchor = GridBagConstraints.LINE_END;
/* set and get all of the dialog values */
public void set_product(String product) {
+ radio_frequency_value.set_product(product);
product_value.setText(product);
}
}
public void set_serial(int serial) {
+ radio_frequency_value.set_serial(serial);
serial_value.setText(String.format("%d", serial));
}
return Integer.parseInt(apogee_delay_value.getSelectedItem().toString());
}
- public void set_radio_channel(int new_radio_channel) {
- radio_channel_value.setSelectedIndex(new_radio_channel);
+ 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);
+ AltosPreferences.add_common_frequency(new_frequency);
+ radio_frequency_value.insertItemAt(new_frequency, i);
}
- public int radio_channel() {
- return radio_channel_value.getSelectedIndex();
+ public double radio_frequency() {
+ return radio_frequency_value.frequency();
}
public void set_radio_calibration(int new_radio_calibration) {
return callsign_value.getText();
}
+ public void set_flight_log_max(int new_flight_log_max) {
+ if (new_flight_log_max == 0)
+ flight_log_max_value.setEnabled(false);
+ flight_log_max_value.setSelectedItem(Integer.toString(new_flight_log_max));
+ }
+
+ public int flight_log_max() {
+ return Integer.parseInt(flight_log_max_value.getSelectedItem().toString());
+ }
+
+ public void set_flight_log_max_limit(int flight_log_max_limit) {
+ boolean any_added = false;
+ flight_log_max_value.removeAllItems();
+ for (int i = 0; i < flight_log_max_values.length; i++) {
+ if (Integer.parseInt(flight_log_max_values[i]) < flight_log_max_limit){
+ flight_log_max_value.addItem(flight_log_max_values[i]);
+ any_added = true;
+ }
+ }
+ flight_log_max_value.addItem(String.format("%d", flight_log_max_limit));
+ }
+
+ public void set_ignite_mode(int new_ignite_mode) {
+ if (new_ignite_mode < 0) {
+ ignite_mode_value.setEnabled(false);
+ new_ignite_mode = 0;
+ } else {
+ ignite_mode_value.setEnabled(true);
+ }
+ ignite_mode_value.setSelectedIndex(new_ignite_mode);
+ }
+
+ public int ignite_mode() {
+ if (ignite_mode_value.isEnabled())
+ return ignite_mode_value.getSelectedIndex();
+ else
+ return -1;
+ }
+
+
+ public void set_pad_orientation(int new_pad_orientation) {
+ if (new_pad_orientation < 0) {
+ pad_orientation_value.setEnabled(false);
+ new_pad_orientation = 0;
+ } else {
+ pad_orientation_value.setEnabled(true);
+ }
+ pad_orientation_value.setSelectedIndex(new_pad_orientation);
+ }
+
+ public int pad_orientation() {
+ if (pad_orientation_value.isEnabled())
+ return pad_orientation_value.getSelectedIndex();
+ else
+ return -1;
+ }
+
public void set_clean() {
dirty = false;
}
-
- }
\ No newline at end of file
+}