/* HAS_APRS */
public int aprs_interval;
+ /* HAS_BEEP */
+ public int beep;
+
/* Storage info replies */
public int storage_size;
public int storage_erase_unit;
aprs_interval = -1;
+ beep = -1;
+
storage_size = -1;
storage_erase_unit = -1;
stored_flight = 0;
/* HAS_APRS */
try { aprs_interval = get_int(line, "APRS interval:"); } catch (Exception e) {}
+ /* HAS_BEEP */
+ try { beep = get_int(line, "Beeper setting:"); System.out.printf ("beeper now %d\n", beep); } catch (Exception e) {}
+
/* Storage info replies */
try { storage_size = get_int(line, "Storage size:"); } catch (Exception e) {}
try { storage_erase_unit = get_int(line, "Storage erase unit:"); } catch (Exception e) {}
if (npyro > 0)
pyros = source.pyros();
+ /* HAS_APRS */
if (aprs_interval >= 0)
aprs_interval = source.aprs_interval();
+
+ /* HAS_BEEP */
+ if (beep >= 0)
+ beep = source.beep();
}
public void set_values(AltosConfigValues dest) {
else
dest.set_pyros(null);
dest.set_aprs_interval(aprs_interval);
+ dest.set_beep(beep);
}
public void save(AltosLink link, boolean remote) throws InterruptedException, TimeoutException {
if (aprs_interval >= 0)
link.printf("c A %d\n", aprs_interval);
+ /* HAS_BEEP */
+ if (beep >= 0)
+ link.printf("c b %d\n", beep);
+
link.printf("c w\n");
link.flush_output();
}
JLabel ignite_mode_label;
JLabel pad_orientation_label;
JLabel callsign_label;
+ JLabel beep_label;
public boolean dirty;
JComboBox ignite_mode_value;
JComboBox pad_orientation_value;
JTextField callsign_value;
+ JComboBox beep_value;
JButton pyro;
"10"
};
+ static String[] beep_values = {
+ "3750",
+ "4000",
+ "4250",
+ };
+
static String[] pad_orientation_values = {
"Antenna Up",
"Antenna Down",
}
}
+ 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);
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;
return -1;
}
+ public void set_beep(int new_beep) {
+ int new_freq = (int) Math.floor (AltosConvert.beep_value_to_freq(new_beep) + 0.5);
+ System.out.printf("set_beep %d %d\n", new_beep, new_freq);
+ 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);