X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=altoslib%2FAltosLink.java;h=159ebfe19c234b34b423a6619e56d18f7ca6f433;hb=cef4e3ee95037050ae859fb2fdc0a57373764bd8;hp=2b5909aa26b377cd86b5c3ae309e506709ff37d5;hpb=8d1d8d2a3c129cdbd55427bcda0f26715b02f1ee;p=fw%2Faltos diff --git a/altoslib/AltosLink.java b/altoslib/AltosLink.java index 2b5909aa..159ebfe1 100644 --- a/altoslib/AltosLink.java +++ b/altoslib/AltosLink.java @@ -249,6 +249,7 @@ public abstract class AltosLink implements Runnable { public boolean monitor_mode = false; public int telemetry = AltosLib.ao_telemetry_standard; public double frequency; + public String callsign; AltosConfigData config_data; private int telemetry_len() { @@ -330,6 +331,7 @@ public abstract class AltosLink implements Runnable { } public void set_callsign(String callsign) { + this.callsign = callsign; printf ("c c %s\n", callsign); flush_output(); } @@ -362,6 +364,64 @@ public abstract class AltosLink implements Runnable { remote = false; } + public int rssi() throws TimeoutException, InterruptedException { + if (remote) + return 0; + printf("s\n"); + String line = get_reply_no_dialog(5000); + if (line == null) + throw new TimeoutException(); + String[] items = line.split("\\s+"); + if (items.length < 2) + return 0; + if (!items[0].equals("RSSI:")) + return 0; + int rssi = Integer.parseInt(items[1]); + return rssi; + } + + public String[] adc() throws TimeoutException, InterruptedException { + printf("a\n"); + for (;;) { + String line = get_reply_no_dialog(5000); + if (line == null) { + throw new TimeoutException(); + } + if (!line.startsWith("tick:")) + continue; + String[] items = line.split("\\s+"); + return items; + } + } + + public boolean has_monitor_battery() { + return config_data.has_monitor_battery(); + } + + public double monitor_battery() { + int monitor_batt = AltosRecord.MISSING; + + 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; + } + i++; + } + } catch (InterruptedException ie) { + } catch (TimeoutException te) { + } + } + if (monitor_batt == AltosRecord.MISSING) + return AltosRecord.MISSING; + return AltosConvert.cc_battery_to_voltage(monitor_batt); + } + public AltosLink() { + callsign = ""; } }