summaryrefslogtreecommitdiff
path: root/altoslib/AltosIdleMonitor.java
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2014-10-30 21:59:45 -0700
committerKeith Packard <keithp@keithp.com>2014-10-30 21:59:45 -0700
commitb0e903a76276e33f531eade42ac721c9490c6758 (patch)
treeafdb7cb33056227b57f738ce4c18c2cf6ad011e1 /altoslib/AltosIdleMonitor.java
parentef00182c79bd7a56fbc5d782cb8f4aa0079bb86f (diff)
altosui: Pop up 'Connecting' dialog during Monitor Idle
This was a bit harder than expected as I had to wire up a way to shut down the whole monitor idle window when you clicked on the cancel button. Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'altoslib/AltosIdleMonitor.java')
-rw-r--r--altoslib/AltosIdleMonitor.java32
1 files changed, 13 insertions, 19 deletions
diff --git a/altoslib/AltosIdleMonitor.java b/altoslib/AltosIdleMonitor.java
index 85bcff10..57c77c47 100644
--- a/altoslib/AltosIdleMonitor.java
+++ b/altoslib/AltosIdleMonitor.java
@@ -35,20 +35,6 @@ public class AltosIdleMonitor extends Thread {
AltosConfigData config_data;
AltosGPS gps;
- int AltosRSSI() throws TimeoutException, InterruptedException {
- link.printf("s\n");
- String line = link.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;
- }
-
void start_link() throws InterruptedException, TimeoutException {
if (remote) {
link.set_radio_frequency(frequency);
@@ -58,26 +44,30 @@ public class AltosIdleMonitor extends Thread {
link.flush_input();
}
- void stop_link() throws InterruptedException, TimeoutException {
+ boolean stop_link() throws InterruptedException, TimeoutException {
if (remote)
link.stop_remote();
+ return link.reply_abort;
}
- void update_state(AltosState state) throws InterruptedException, TimeoutException {
+ boolean update_state(AltosState state) throws InterruptedException, TimeoutException {
boolean worked = false;
+ boolean aborted = false;
try {
start_link();
fetch.update_state(state);
- worked = true;
+ if (!link.has_error && !link.reply_abort)
+ worked = true;
} finally {
- stop_link();
+ aborted = stop_link();
if (worked) {
if (remote)
state.set_rssi(link.rssi(), 0);
listener_state.battery = link.monitor_battery();
}
}
+ return aborted;
}
public void set_frequency(double in_frequency) {
@@ -102,13 +92,17 @@ public class AltosIdleMonitor extends Thread {
public void run() {
AltosState state = new AltosState();
try {
- while (!link.has_error) {
+ for (;;) {
try {
link.config_data();
update_state(state);
listener.update(state, listener_state);
} catch (TimeoutException te) {
}
+ if (link.has_error || link.reply_abort) {
+ listener.failed();
+ break;
+ }
Thread.sleep(1000);
}
} catch (InterruptedException ie) {