X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=altosui%2FAltosSerial.java;h=77c926b1f9629f9a9e171e6a4377e8ff84e1eba9;hb=d7ddfd4e6d75e50ca64a342181f5c52e9f4919af;hp=f0e25fa56dd110e697e34db7566e0816862ad55a;hpb=924d56a4d2d8b16530cd378b18cfc5d6e08420ed;p=fw%2Faltos diff --git a/altosui/AltosSerial.java b/altosui/AltosSerial.java index f0e25fa5..77c926b1 100644 --- a/altosui/AltosSerial.java +++ b/altosui/AltosSerial.java @@ -55,7 +55,7 @@ public class AltosSerial implements Runnable { boolean monitor_mode; int telemetry; double frequency; - static boolean debug; + public static boolean debug; boolean remote; LinkedList pending_output = new LinkedList(); Frame frame; @@ -323,8 +323,10 @@ public class AltosSerial implements Runnable { } altos = device.open(); if (altos == null) { + final String message = device.getErrorString(); close(); - throw new FileNotFoundException(device.toShortString()); + throw new FileNotFoundException(String.format("%s (%s)", + device.toShortString(), message)); } if (debug) System.out.printf("Open %s\n", device.getPath()); @@ -353,18 +355,36 @@ public class AltosSerial implements Runnable { private void set_radio_setting(int setting) { if (altos != null) { if (monitor_mode) - printf("m 0\nc R %d\nc r 0\nm %x\n", + printf("m 0\nc R %d\nm %x\n", setting, telemetry_len()); else - printf("c R %d\nc r 0\n", setting); + 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 (has_setting) + 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)); @@ -372,8 +392,11 @@ public class AltosSerial implements Runnable { 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); } @@ -413,7 +436,7 @@ public class AltosSerial implements Runnable { public void start_remote() throws TimeoutException, InterruptedException { if (debug) - System.out.printf("start remote\n"); + System.out.printf("start remote %7.3f\n", frequency); if (frequency == 0.0) frequency = AltosPreferences.frequency(device.getSerial()); set_radio_frequency(frequency);