altosui: Support telemetry data rates
[fw/altos] / altosui / AltosConfigTD.java
index 2976657c356be2743c356c1bb2b8956f0bd5da4d..397ed3db05b5e38a343353528e5a43dc8e784a85 100644 (file)
@@ -62,6 +62,7 @@ public class AltosConfigTD implements ActionListener {
        int_ref         radio_calibration;
        int_ref         radio_setting;
        int_ref         radio_frequency;
+       int_ref         telemetry_rate;
        string_ref      config_version;
        string_ref      version;
        string_ref      product;
@@ -105,6 +106,7 @@ public class AltosConfigTD implements ActionListener {
                config_ui.set_version(version.get());
                config_ui.set_radio_frequency(frequency());
                config_ui.set_radio_calibration(radio_calibration.get());
+               config_ui.set_telemetry_rate(telemetry_rate.get());
                config_ui.set_clean();
                if (!made_visible) {
                        made_visible = true;
@@ -140,6 +142,7 @@ public class AltosConfigTD implements ActionListener {
                        get_int(line, "Radio cal:", radio_calibration);
                        get_int(line, "Frequency:", radio_frequency);
                        get_int(line, "Radio setting:", radio_setting);
+                       get_int(line, "Telemetry rate:", telemetry_rate);
                        get_string(line,"software-version", version);
                        get_string(line,"product", product);
                }
@@ -151,6 +154,7 @@ public class AltosConfigTD implements ActionListener {
                radio_setting.set(0);
                radio_frequency.set(0);
                radio_calibration.set(1186611);
+               telemetry_rate.set(Altos.ao_telemetry_rate_38400);
                config_version.set("0.0");
                version.set("unknown");
                product.set("unknown");
@@ -178,6 +182,19 @@ public class AltosConfigTD implements ActionListener {
                }
        }
 
+       synchronized int telemetry_rate() {
+               System.out.printf("telemetry_rate: %d\n", telemetry_rate.get());
+               return telemetry_rate.get();
+       }
+
+       synchronized void set_telemetry_rate(int new_telemetry_rate){
+               int     rate = telemetry_rate.get();
+
+               System.out.printf("set_telemetry_rate %d\n", new_telemetry_rate);
+               if (rate >= 0)
+                       telemetry_rate.set(new_telemetry_rate);
+       }
+
        final static int        serial_mode_read = 0;
        final static int        serial_mode_save = 1;
        final static int        serial_mode_reboot = 2;
@@ -218,6 +235,7 @@ public class AltosConfigTD implements ActionListener {
                         * available firmware version might place on the actual frequency
                         */
                        config.set_frequency(AltosPreferences.frequency(serial.get()));
+                       config.set_telemetry_rate(AltosPreferences.telemetry_rate(serial.get()));
                        config.process_line("all finished");
                }
 
@@ -226,6 +244,8 @@ public class AltosConfigTD implements ActionListener {
                        if (frequency != 0)
                                AltosPreferences.set_frequency(serial.get(),
                                                               frequency);
+                       AltosPreferences.set_telemetry_rate(serial.get(),
+                                                           telemetry_rate());
                }
 
                public void run () {
@@ -279,6 +299,8 @@ public class AltosConfigTD implements ActionListener {
        void save_data() {
                double  freq = config_ui.radio_frequency();
                set_frequency(freq);
+               int telemetry_rate = config_ui.telemetry_rate();
+               set_telemetry_rate(telemetry_rate);
                run_serial_thread(serial_mode_save);
        }
 
@@ -311,6 +333,7 @@ public class AltosConfigTD implements ActionListener {
                radio_setting = new int_ref(0);
                radio_frequency = new int_ref(0);
                radio_calibration = new int_ref(1186611);
+               telemetry_rate = new int_ref(AltosLib.ao_telemetry_rate_38400);
                config_version = new string_ref("0.0");
                version = new string_ref("unknown");
                product = new string_ref("unknown");
@@ -340,4 +363,4 @@ public class AltosConfigTD implements ActionListener {
                        }
                }
        }
-}
\ No newline at end of file
+}