X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=altoslib%2FAltosLink.java;h=eadab5dff6d3029b77c7e8b08e84c0444f6cba79;hp=8346d281f1e2a0be012f2b69fcef15fa302e04e8;hb=55e6558fa7cb23fb1363a86c83fbd6abf67ea324;hpb=b89fb51a963635e2effe3a31f803bfc29c2c46b7 diff --git a/altoslib/AltosLink.java b/altoslib/AltosLink.java index 8346d281..eadab5df 100644 --- a/altoslib/AltosLink.java +++ b/altoslib/AltosLink.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_3; +package org.altusmetrum.altoslib_5; import java.io.*; import java.util.concurrent.*; @@ -76,7 +76,7 @@ public abstract class AltosLink implements Runnable { return get_reply(5000); } - + public abstract boolean can_cancel_reply(); public abstract boolean show_reply_timeout(); public abstract void hide_reply_timeout(); @@ -215,7 +215,7 @@ public abstract class AltosLink implements Runnable { break; } } - + } finally { --in_reply; } @@ -251,13 +251,7 @@ public abstract class AltosLink implements Runnable { public void add_bytes(byte[] bytes, int len) throws InterruptedException { String line; - try { - line = new String(bytes, 0, len, "UTF-8"); - } catch (UnsupportedEncodingException ue) { - line = ""; - for (int i = 0; i < len; i++) - line = line + bytes[i]; - } + line = new String(bytes, 0, len, AltosLib.unicode_set); if (debug) System.out.printf("\t\t\t\t\t%s\n", line); add_string(line); @@ -280,6 +274,8 @@ public abstract class AltosLink implements Runnable { } public void flush_output() { + if (pending_output == null) + return; for (String s : pending_output) System.out.print(s); pending_output.clear(); @@ -311,6 +307,7 @@ public abstract class AltosLink implements Runnable { */ public boolean monitor_mode = false; public int telemetry = AltosLib.ao_telemetry_standard; + public int telemetry_rate = AltosLib.ao_telemetry_rate_38400; public double frequency; public String callsign; AltosConfigData config_data; @@ -362,6 +359,15 @@ public abstract class AltosLink implements Runnable { flush_output(); } + public void set_telemetry_rate(int in_telemetry_rate) { + telemetry_rate = in_telemetry_rate; + if (monitor_mode) + printf("m 0\nc T %d\nm %x\n", telemetry_rate, telemetry_len()); + else + printf("c T %d\n", telemetry_rate); + flush_output(); + } + public void set_monitor(boolean monitor) { monitor_mode = monitor; if (monitor) @@ -389,10 +395,14 @@ public abstract class AltosLink implements Runnable { flush_output(); } - public AltosConfigData config_data() throws InterruptedException, TimeoutException { + public AltosConfigData config_data() throws InterruptedException, TimeoutException { synchronized(config_data_lock) { - if (config_data == null) + if (config_data == null) { + printf("m 0\n"); config_data = new AltosConfigData(this); + if (monitor_mode) + set_monitor(true); + } return config_data; } }