diff options
| author | Bdale Garbee <bdale@gag.com> | 2013-12-19 01:38:40 -0700 | 
|---|---|---|
| committer | Bdale Garbee <bdale@gag.com> | 2013-12-19 01:38:40 -0700 | 
| commit | 575bbaf976c5840fd0e308549c45a466fdec1352 (patch) | |
| tree | 11bfb498348bf7687bffc24699c4b1a998988ee4 /altoslib/AltosMag.java | |
| parent | b825116df173b77e2cab217a7b76112c742f9279 (diff) | |
| parent | bc3610d8cecbfed40c62d4dcb93fc9a4d2a7c9e3 (diff) | |
Merge branch 'branch-1.3' into debian
Conflicts:
	ChangeLog
	altoslib/AltosRecordMM.java
	altosui/Makefile.am
	altosui/altos-windows.nsi.in
	configure.ac
	debian/changelog
	debian/control
	doc/Makefile
	doc/altusmetrum.xsl
	doc/release-notes-1.2.1.xsl
	doc/release-notes-1.2.xsl
Diffstat (limited to 'altoslib/AltosMag.java')
| -rw-r--r-- | altoslib/AltosMag.java | 63 | 
1 files changed, 61 insertions, 2 deletions
| diff --git a/altoslib/AltosMag.java b/altoslib/AltosMag.java index b3bbd92f..89e72bd6 100644 --- a/altoslib/AltosMag.java +++ b/altoslib/AltosMag.java @@ -15,11 +15,70 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2; -public class AltosMag { +import java.util.concurrent.*; + +public class AltosMag implements Cloneable {  	public int		x;  	public int		y;  	public int		z; + +	public boolean parse_string(String line) { +//		if (line.startsWith("Syntax error")) { +//			x = y = z = 0; +//			return true; +//		} + +		if (!line.startsWith("X:")) +			return false; + +		String[] items = line.split("\\s+"); + +		if (items.length >= 6) { +			x = Integer.parseInt(items[1]); +			y = Integer.parseInt(items[3]); +			z = Integer.parseInt(items[5]); +		} +		return true; +	} + +	public AltosMag clone() { +		AltosMag n = new AltosMag(); + +		n.x = x; +		n.y = y; +		n.z = z; +		return n; +	} + +	public AltosMag() { +		x = AltosLib.MISSING; +		y = AltosLib.MISSING; +		z = AltosLib.MISSING; +	} + +	static public void update_state(AltosState state, AltosLink link, AltosConfigData config_data) throws InterruptedException { +		try { +			AltosMag	mag = new AltosMag(link); + +			if (mag != null) +				state.set_mag(mag); +		} catch (TimeoutException te) { +		} +	} + +	public AltosMag(AltosLink link) throws InterruptedException, TimeoutException { +		this(); +		link.printf("M\n"); +		for (;;) { +			String line = link.get_reply_no_dialog(5000); +			if (line == null) { +				throw new TimeoutException(); +			} +			if (parse_string(line)) +				break; +		} +	}  }  	
\ No newline at end of file | 
