From 9d3ab4c78f79d659ce800def77bc441c95fa15be Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Tue, 9 Sep 2014 09:02:51 -0700 Subject: [PATCH] altoslib: Fix idle monitor parsing of MMA655x state There's no ':' after 'MMA655X value' in the output, and the parser returns 'true' on success, not false. With this, 'Monitor Idle' now reports correct accelerometer readings. Signed-off-by: Keith Packard --- altoslib/AltosMma655x.java | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/altoslib/AltosMma655x.java b/altoslib/AltosMma655x.java index ea47cc9b..7f0dab98 100644 --- a/altoslib/AltosMma655x.java +++ b/altoslib/AltosMma655x.java @@ -23,14 +23,15 @@ public class AltosMma655x implements Cloneable { int accel; - public boolean parse_line(String line) { - String[] items = line.split("\\s+"); - if (line.startsWith("MMA655X value:")) { - if (items.length >= 3) - accel = Integer.parseInt(items[1]); - } else - return false; - return true; + public boolean parse_line(String line) throws NumberFormatException { + if (line.startsWith("MMA655X value")) { + String[] items = line.split("\\s+"); + if (items.length >= 3) { + accel = Integer.parseInt(items[2]); + return true; + } + } + return false; } public AltosMma655x() { @@ -51,17 +52,18 @@ public class AltosMma655x implements Cloneable { if (mma655x != null) state.set_accel(mma655x.accel); } catch (TimeoutException te) { + } catch (NumberFormatException ne) { } } - public AltosMma655x(AltosLink link) throws InterruptedException, TimeoutException { + public AltosMma655x(AltosLink link) throws InterruptedException, TimeoutException, NumberFormatException { this(); link.printf("A\n"); for (;;) { String line = link.get_reply_no_dialog(5000); if (line == null) throw new TimeoutException(); - if (!parse_line(line)) + if (parse_line(line)) break; } } -- 2.30.2