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-09-01 13:22:58 -0700
commit558a143315f0345b79cc4f22aa4b643fedcded9c (patch)
tree7a667970da65b40ab7136e7bb158b75cd0a49b79 /altoslib/AltosLink.java
parentc9a742db2497d07079f3d4bf383c6246cf80507c (diff)
altosui: Accel calibration UI
Provides a GUI for re-calibrating accelerometers 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();