+ private void set_radio_setting(int setting) {
+ if (altos != null) {
+ if (monitor_mode)
+ printf("m 0\nc R %d\nm %x\n",
+ setting, telemetry_len());
+ else
+ printf("c R %d\n", setting);
+ flush_output();
+ }
+ }
+
+ private void set_radio_freq(int frequency) {
+ if (altos != null) {
+ 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;
+ if (frequency == 0.0)
+ frequency = AltosPreferences.frequency(device.getSerial());
+ config_data();
+ set_radio_frequency(frequency,
+ config_data.radio_frequency != 0,
+ config_data.radio_setting != 0,
+ config_data.radio_calibration);
+ }
+