X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=altosui%2FAltosConfig.java;h=40f7ebecb4c4635809dfdec7ebc9d068edca3af5;hp=92191564e395219270cb1cf1795aa078b664f36e;hb=5a51efd7f9b49ffadc91ccaf7a0d69566301c009;hpb=748e42ebf1dfb1efd5dec6ddd93f5c7aeedeb01d diff --git a/altosui/AltosConfig.java b/altosui/AltosConfig.java index 92191564..40f7ebec 100644 --- a/altosui/AltosConfig.java +++ b/altosui/AltosConfig.java @@ -21,8 +21,9 @@ import java.awt.event.*; import javax.swing.*; import java.io.*; import java.util.concurrent.*; -import org.altusmetrum.AltosLib.*; import java.text.*; +import org.altusmetrum.altoslib_5.*; +import org.altusmetrum.altosuilib_3.*; public class AltosConfig implements ActionListener { @@ -78,43 +79,8 @@ public class AltosConfig implements ActionListener { serial_line.stop_remote(); } - int log_limit() { - if (data.storage_size > 0 && data.storage_erase_unit > 0) { - int log_limit = data.storage_size - data.storage_erase_unit; - if (log_limit > 0) - return log_limit / 1024; - } - return 1024; - } - void update_ui() { - config_ui.set_serial(data.serial); - config_ui.set_product(data.product); - config_ui.set_version(data.version); - config_ui.set_main_deploy(data.main_deploy); - config_ui.set_apogee_delay(data.apogee_delay); - config_ui.set_apogee_lockout(data.apogee_lockout); - config_ui.set_radio_calibration(data.radio_calibration); - config_ui.set_radio_frequency(frequency()); - boolean max_enabled = true; - switch (data.log_format) { - case Altos.AO_LOG_FORMAT_TINY: - max_enabled = false; - break; - default: - if (data.stored_flight >= 0) - max_enabled = false; - break; - } - config_ui.set_flight_log_max_enabled(max_enabled); - config_ui.set_radio_enable(data.radio_enable); - config_ui.set_flight_log_max_limit(log_limit()); - config_ui.set_flight_log_max(data.flight_log_max); - config_ui.set_ignite_mode(data.ignite_mode); - config_ui.set_pad_orientation(data.pad_orientation); - config_ui.set_callsign(data.callsign); - config_ui.set_pyros(data.pyros); - config_ui.set_has_pyro(data.npyro > 0); + data.set_values(config_ui); config_ui.set_clean(); if (!made_visible) { made_visible = true; @@ -170,41 +136,11 @@ public class AltosConfig implements ActionListener { void save_data() { try { - double frequency = frequency(); - boolean has_frequency = data.radio_frequency > 0; - boolean has_setting = data.radio_setting > 0; start_serial(); - serial_line.printf("c m %d\n", data.main_deploy); - serial_line.printf("c d %d\n", data.apogee_delay); - serial_line.printf("c L %d\n", data.apogee_lockout); - if (!remote) - serial_line.printf("c f %d\n", data.radio_calibration); - serial_line.set_radio_frequency(frequency, - has_frequency, - has_setting, - data.radio_calibration); - if (remote) { - serial_line.stop_remote(); - serial_line.set_radio_frequency(frequency); - AltosUIPreferences.set_frequency(device.getSerial(), frequency); - serial_line.start_remote(); - } - serial_line.printf("c c %s\n", data.callsign); - if (data.flight_log_max != 0) - serial_line.printf("c l %d\n", data.flight_log_max); - if (data.radio_enable >= 0) - serial_line.printf("c e %d\n", data.radio_enable); - if (data.ignite_mode >= 0) - serial_line.printf("c i %d\n", data.ignite_mode); - if (data.pad_orientation >= 0) - serial_line.printf("c o %d\n", data.pad_orientation); - if (data.pyros.length > 0) { - for (int p = 0; p < data.pyros.length; p++) { - serial_line.printf("c P %s\n", - data.pyros[p].toString()); - } - } - serial_line.printf("c w\n"); + data.save(serial_line, remote); + if (remote) + AltosUIPreferences.set_frequency(device.getSerial(), + data.frequency()); } catch (InterruptedException ie) { } catch (TimeoutException te) { } finally { @@ -225,9 +161,9 @@ public class AltosConfig implements ActionListener { } finally { try { stop_serial(); + serial_line.close(); } catch (InterruptedException ie) { } - serial_line.close(); } } @@ -291,52 +227,30 @@ public class AltosConfig implements ActionListener { data.radio_channel); } - void set_frequency(double freq) { - int frequency = data.radio_frequency; - int setting = data.radio_setting; - - if (frequency > 0) { - data.radio_frequency = (int) Math.floor (freq * 1000 + 0.5); - data.radio_channel = 0; - } else if (setting > 0) { - data.radio_setting =AltosConvert.radio_frequency_to_setting(freq, - data.radio_calibration); - data.radio_channel = 0; - } else { - data.radio_channel = AltosConvert.radio_frequency_to_channel(freq); - } - } - void save_data() { - /* bounds check stuff */ - if (config_ui.flight_log_max() > log_limit()) { + try { + /* bounds check stuff */ + if (config_ui.flight_log_max() > data.log_space() / 1024) { + JOptionPane.showMessageDialog(owner, + String.format("Requested flight log, %dk, is larger than the available space, %dk.\n", + config_ui.flight_log_max(), + data.log_space() / 1024), + "Maximum Flight Log Too Large", + JOptionPane.ERROR_MESSAGE); + return; + } + + /* Pull data out of the UI and stuff back into our local data record */ + + data.get_values(config_ui); + run_serial_thread(serial_mode_save); + } catch (AltosConfigDataException ae) { JOptionPane.showMessageDialog(owner, - String.format("Requested flight log, %dk, is larger than the available space, %dk.\n", - config_ui.flight_log_max(), - log_limit()), - "Maximum Flight Log Too Large", + ae.getMessage(), + "Configuration Data Error", JOptionPane.ERROR_MESSAGE); - return; - } - - data.main_deploy = config_ui.main_deploy(); - data.apogee_delay = config_ui.apogee_delay(); - data.apogee_lockout = config_ui.apogee_lockout(); - data.radio_calibration = config_ui.radio_calibration(); - set_frequency(config_ui.radio_frequency()); - data.flight_log_max = config_ui.flight_log_max(); - if (data.radio_enable >= 0) - data.radio_enable = config_ui.radio_enable(); - if (data.ignite_mode >= 0) - data.ignite_mode = config_ui.ignite_mode(); - if (data.pad_orientation >= 0) - data.pad_orientation = config_ui.pad_orientation(); - data.callsign = config_ui.callsign(); - if (data.npyro > 0) { - data.pyros = config_ui.pyros(); } - run_serial_thread(serial_mode_save); } public void actionPerformed(ActionEvent e) { @@ -363,7 +277,7 @@ public class AltosConfig implements ActionListener { public AltosConfig(JFrame given_owner) { owner = given_owner; - device = AltosDeviceDialog.show(owner, Altos.product_any); + device = AltosDeviceUIDialog.show(owner, Altos.product_any); if (device != null) { try { serial_line = new AltosSerial(device); @@ -390,4 +304,4 @@ public class AltosConfig implements ActionListener { } } } -} \ No newline at end of file +}