altosui: AltosSerial and AltosLink both tried to provide frequency setting
[fw/altos] / altoslib / AltosLink.java
index 9b80e9166f473241855eaa28cbf56e0d373f4089..a39204ac3ba26e8892f6c79658625ca7f036067a 100644 (file)
@@ -141,6 +141,40 @@ public abstract class AltosLink {
                return AltosLib.telemetry_len(telemetry);
        }
 
+       private void set_radio_freq(int frequency) {
+               if (monitor_mode)
+                       printf("m 0\nc F %d\nm %x\n",
+                              frequency, telemetry_len());
+               else
+                       printf("c F %d\n", frequency);
+               flush_output();
+       }
+
+       public void set_radio_frequency(double frequency,
+                                       boolean has_frequency,
+                                       boolean has_setting,
+                                       int cal) {
+               if (debug)
+                       System.out.printf("set_radio_frequency %7.3f (freq %b) (set %b) %d\n", frequency, has_frequency, has_setting, cal);
+               if (frequency == 0)
+                       return;
+               if (has_frequency)
+                       set_radio_freq((int) Math.floor (frequency * 1000));
+               else if (has_setting)
+                       set_radio_setting(AltosConvert.radio_frequency_to_setting(frequency, cal));
+               else
+                       set_channel(AltosConvert.radio_frequency_to_channel(frequency));
+       }
+
+       public void set_radio_frequency(double in_frequency) throws InterruptedException, TimeoutException {
+               frequency = in_frequency;
+               config_data();
+               set_radio_frequency(frequency,
+                                   config_data.radio_frequency != 0,
+                                   config_data.radio_setting != 0,
+                                   config_data.radio_calibration);
+       }
+
        public void set_telemetry(int in_telemetry) {
                telemetry = in_telemetry;
                if (monitor_mode)
@@ -175,31 +209,12 @@ public abstract class AltosLink {
                flush_output();
        }
 
-       public void set_radio_frequency(double frequency,
-                                       boolean has_setting,
-                                       int cal) {
-               if (debug)
-                       System.out.printf("set_radio_frequency %7.3f %b %d\n", frequency, has_setting, cal);
-               if (has_setting)
-                       set_radio_setting(AltosConvert.radio_frequency_to_setting(frequency, cal));
-               else
-                       set_channel(AltosConvert.radio_frequency_to_channel(frequency));
-       }
-
        public AltosConfigData config_data() throws InterruptedException, TimeoutException {
                if (config_data == null)
                        config_data = new AltosConfigData(this);
                return config_data;
        }
 
-       public void set_radio_frequency(double in_frequency) throws InterruptedException, TimeoutException {
-               frequency = in_frequency;
-               config_data();
-               set_radio_frequency(frequency,
-                                   config_data.radio_setting != 0,
-                                   config_data.radio_calibration);
-       }
-
        public void set_callsign(String callsign) {
                printf ("c c %s\n", callsign);
                flush_output();