From dd383b86b9a13d7af2d6b07f4fb85ccc666ed898 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Mon, 8 Aug 2011 18:45:36 -0700 Subject: [PATCH] altosui: Must set radio calibration before radio setting Setting the radio calibration erases any previous radio setting as the radio calibration change invalidates any previously computed radio setting for a specific frequency. Hence, the radio setting must be configured *after* the radio calibration value lest it be ignored. Signed-off-by: Keith Packard --- altosui/AltosConfig.java | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/altosui/AltosConfig.java b/altosui/AltosConfig.java index 694ef4db..d5d7d56a 100644 --- a/altosui/AltosConfig.java +++ b/altosui/AltosConfig.java @@ -132,13 +132,12 @@ public class AltosConfig implements ActionListener { config_ui.set_version(version.get()); config_ui.set_main_deploy(main_deploy.get()); config_ui.set_apogee_delay(apogee_delay.get()); - config_ui.set_radio_frequency(frequency()); config_ui.set_radio_calibration(radio_calibration.get()); + config_ui.set_radio_frequency(frequency()); config_ui.set_flight_log_max(flight_log_max.get()); config_ui.set_ignite_mode(ignite_mode.get()); config_ui.set_pad_orientation(pad_orientation.get()); config_ui.set_callsign(callsign.get()); - config_ui.set_radio_setting(radio_setting.get()); config_ui.set_clean(); config_ui.make_visible(); } @@ -218,10 +217,12 @@ public class AltosConfig implements ActionListener { void save_data() { try { double frequency = frequency(); - boolean has_setting = radio_setting.get() != 0; + boolean has_setting = radio_setting.get() > 0; start_serial(); serial_line.printf("c m %d\n", main_deploy.get()); serial_line.printf("c d %d\n", apogee_delay.get()); + if (!remote) + serial_line.printf("c f %d\n", radio_calibration.get()); serial_line.set_radio_frequency(frequency, has_setting, radio_calibration.get()); @@ -233,8 +234,6 @@ public class AltosConfig implements ActionListener { AltosPreferences.set_frequency(device.getSerial(), frequency); serial_line.start_remote(); } - if (!remote) - serial_line.printf("c f %d\n", radio_calibration.get()); serial_line.printf("c c %s\n", callsign.get()); if (flight_log_max.get() != 0) serial_line.printf("c l %d\n", flight_log_max.get()); @@ -321,18 +320,17 @@ public class AltosConfig implements ActionListener { } double frequency() { - int setting = radio_setting.get(); - - if (setting != 0) - return AltosConvert.radio_setting_to_frequency(setting, radio_calibration.get()); - else - return AltosConvert.radio_channel_to_frequency(radio_channel.get()); + System.out.printf("setting %d channel %d calibration %d\n", + radio_setting.get(), radio_channel.get(), radio_calibration.get()); + return AltosConvert.radio_to_frequency(radio_setting.get(), + radio_calibration.get(), + radio_channel.get()); } void set_frequency(double freq) { int setting = radio_setting.get(); - if (setting != 0) { + if (setting > 0) { radio_setting.set(AltosConvert.radio_frequency_to_setting(freq, radio_calibration.get())); radio_channel.set(0); -- 2.30.2