X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=altoslib%2FAltosLink.java;h=5a802ef180230bdfb969d01212a0197781bb366d;hp=c0031cadbf059ce3ea38c6e102901dac1be79e9d;hb=dd72c9144b207b12150eb6a7ffb012f217f37374;hpb=88df7cd314269fa1debe226b49b7e4e9dc238d8e diff --git a/altoslib/AltosLink.java b/altoslib/AltosLink.java index c0031cad..5a802ef1 100644 --- a/altoslib/AltosLink.java +++ b/altoslib/AltosLink.java @@ -3,7 +3,8 @@ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of @@ -15,7 +16,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_5; +package org.altusmetrum.altoslib_12; import java.io.*; import java.util.concurrent.*; @@ -86,10 +87,17 @@ public abstract class AltosLink implements Runnable { public boolean reply_abort; public int in_reply; + boolean cancel_enable = true; + + public void set_cancel_enable(boolean e) { + cancel_enable = e; + } boolean reply_timeout_shown = false; private boolean check_reply_timeout() { + if (!cancel_enable) + return false; if (!reply_timeout_shown) reply_timeout_shown = show_reply_timeout(); return reply_abort; @@ -163,8 +171,8 @@ public abstract class AltosLink implements Runnable { boolean can_cancel = can_cancel_reply(); String reply = null; - if (!can_cancel && remote) - System.out.printf("Uh-oh, reading remote serial device from swing thread\n"); +// if (!can_cancel && remote) +// System.out.printf("Uh-oh, reading remote serial device from swing thread\n"); if (remote && can_cancel) { timeout = 500; @@ -354,7 +362,7 @@ public abstract class AltosLink implements Runnable { if (frequency == 0) return; if (has_frequency) - set_radio_freq((int) Math.floor (frequency * 1000)); + set_radio_freq((int) Math.floor (frequency * 1000 + 0.5)); else if (has_setting) set_radio_setting(AltosConvert.radio_frequency_to_setting(frequency, cal)); else @@ -386,7 +394,7 @@ public abstract class AltosLink implements Runnable { flush_output(); } - public void set_monitor(boolean monitor) { + public synchronized void set_monitor(boolean monitor) { monitor_mode = monitor; if (monitor) printf("m %x\n", telemetry_len()); @@ -395,6 +403,10 @@ public abstract class AltosLink implements Runnable { flush_output(); } + public synchronized boolean get_monitor() { + return monitor_mode; + } + private void set_channel(int channel) { if (monitor_mode) printf("m 0\nc r %d\nm %x\n", @@ -427,8 +439,10 @@ public abstract class AltosLink implements Runnable { public void set_callsign(String callsign) { this.callsign = callsign; - printf ("c c %s\n", callsign); - flush_output(); + if (callsign != null) { + printf ("c c %s\n", callsign); + flush_output(); + } } public boolean is_loader() throws InterruptedException { @@ -467,7 +481,7 @@ public abstract class AltosLink implements Runnable { if (telemetry_rate < 0) telemetry_rate = AltosPreferences.telemetry_rate(serial); set_telemetry_rate(telemetry_rate); - if (callsign.equals("")) + if (callsign == null || callsign.equals("")) callsign = AltosPreferences.callsign(); set_callsign(callsign); printf("p\nE 0\n"); @@ -526,21 +540,29 @@ public abstract class AltosLink implements Runnable { if (config_data.has_monitor_battery()) { try { - String[] items = adc(); - for (int i = 0; i < items.length;) { - if (items[i].equals("batt")) { - monitor_batt = Integer.parseInt(items[i+1]); - i += 2; - continue; + String[] items = adc(); + for (int i = 0; i < items.length;) { + if (items[i].equals("batt")) { + monitor_batt = Integer.parseInt(items[i+1]); + i += 2; + continue; + } + i++; } - i++; - } } catch (TimeoutException te) { } } if (monitor_batt == AltosLib.MISSING) return AltosLib.MISSING; - return AltosConvert.cc_battery_to_voltage(monitor_batt); + + double volts = AltosLib.MISSING; + if (config_data.product.startsWith("TeleBT-v3") || config_data.product.startsWith("TeleBT-v4")) { + volts = AltosConvert.tele_bt_3_battery(monitor_batt); + } else { + volts = AltosConvert.cc_battery_to_voltage(monitor_batt); + } + + return volts; } public AltosLink() {