summaryrefslogtreecommitdiff
path: root/altoslib/AltosLink.java
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2017-08-11 23:42:53 -0400
committerKeith Packard <keithp@keithp.com>2017-08-12 18:28:17 -0400
commit5de9496b103b495b7ff77c84e1047d207bc4259c (patch)
treef74f2bf436efc9513666cfa10eb997ad1fdbdad6 /altoslib/AltosLink.java
parent43e2275250d9c91560a770942f3c06a8f74ed501 (diff)
altosui: Initial accel calibration UIaccel-cal-ui
Almost working, needs further tweaking. Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'altoslib/AltosLink.java')
-rw-r--r--altoslib/AltosLink.java19
1 files changed, 19 insertions, 0 deletions
diff --git a/altoslib/AltosLink.java b/altoslib/AltosLink.java
index 5a802ef1..5413de9d 100644
--- a/altoslib/AltosLink.java
+++ b/altoslib/AltosLink.java
@@ -43,6 +43,8 @@ public abstract class AltosLink implements Runnable {
public LinkedBlockingQueue<AltosLine> reply_queue = new LinkedBlockingQueue<AltosLine>();
public LinkedBlockingQueue<byte[]> binary_queue = new LinkedBlockingQueue<byte[]>();
+ private String match_string = null;
+
public synchronized void add_monitor(LinkedBlockingQueue<AltosLine> q) {
set_monitor(true);
monitors.add(q);
@@ -112,6 +114,15 @@ public abstract class AltosLink implements Runnable {
private int len_read = 0;
+ private boolean match_bytes(byte[] bytes, int byte_count, String match) {
+ if (byte_count < match.length())
+ return false;
+ String line = new String(bytes, 0, byte_count, AltosLib.unicode_set);
+ if (line == null)
+ return false;
+ return line.indexOf(match) >= 0;
+ }
+
public void run () {
int c;
byte[] line_bytes = null;
@@ -159,6 +170,11 @@ public abstract class AltosLink implements Runnable {
line_count = 0;
len_read = 0;
}
+ if (match_string != null && match_bytes(line_bytes, line_count, match_string)) {
+ match_string = null;
+ add_bytes(line_bytes, line_count);
+ line_count = 0;
+ }
}
}
}
@@ -166,6 +182,9 @@ public abstract class AltosLink implements Runnable {
}
}
+ public void set_match(String match) {
+ match_string = match;
+ }
public String get_reply(int timeout) throws InterruptedException {
boolean can_cancel = can_cancel_reply();