diff options
| author | Bdale Garbee <bdale@gag.com> | 2015-02-07 22:39:54 -0700 | 
|---|---|---|
| committer | Bdale Garbee <bdale@gag.com> | 2015-02-07 22:39:54 -0700 | 
| commit | f766a457323268857b3f2dfc7f42427437b71cb7 (patch) | |
| tree | 8afc8a661d682fc34b16fc0b1b44f2844d34f336 /altoslib/AltosIdleMonitor.java | |
| parent | db51224af01731e7323f6f696a7397d64eb80b92 (diff) | |
| parent | e2cefd8593d269ce603aaf33f4a53a5c2dcb3350 (diff) | |
Merge branch 'branch-1.6' into debian
Conflicts:
	ChangeLog
	altoslib/AltosTelemetryReader.java
	configure.ac
Diffstat (limited to 'altoslib/AltosIdleMonitor.java')
| -rw-r--r-- | altoslib/AltosIdleMonitor.java | 34 | 
1 files changed, 14 insertions, 20 deletions
diff --git a/altoslib/AltosIdleMonitor.java b/altoslib/AltosIdleMonitor.java index 85bcff10..4d0968bf 100644 --- a/altoslib/AltosIdleMonitor.java +++ b/altoslib/AltosIdleMonitor.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_5; +package org.altusmetrum.altoslib_6;  import java.io.*;  import java.util.concurrent.*; @@ -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) {  | 
