diff options
Diffstat (limited to 'altoslib/AltosMs5607.java')
| -rw-r--r-- | altoslib/AltosMs5607.java | 48 | 
1 files changed, 40 insertions, 8 deletions
diff --git a/altoslib/AltosMs5607.java b/altoslib/AltosMs5607.java index 606916b7..2319d5b8 100644 --- a/altoslib/AltosMs5607.java +++ b/altoslib/AltosMs5607.java @@ -15,7 +15,9 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2; + +import java.util.concurrent.*;  public class AltosMs5607 {  	public int	reserved; @@ -85,8 +87,9 @@ public class AltosMs5607 {  	public boolean parse_line(String line) {  		String[] items = line.split("\\s+");  		if (line.startsWith("Pressure:")) { -			if (items.length >= 2) +			if (items.length >= 2) {  				raw_pres = Integer.parseInt(items[1]); +			}  		} else if (line.startsWith("Temperature:")) {  			if (items.length >= 2)  				raw_temp = Integer.parseInt(items[1]); @@ -94,8 +97,9 @@ public class AltosMs5607 {  			if (items.length >= 3)  				reserved = Integer.parseInt(items[2]);  		} else if (line.startsWith("ms5607 sens:")) { -			if (items.length >= 3) +			if (items.length >= 3) {  				sens = Integer.parseInt(items[2]); +			}  		} else if (line.startsWith("ms5607 off:")) {  			if (items.length >= 3)  				off = Integer.parseInt(items[2]); @@ -114,15 +118,43 @@ public class AltosMs5607 {  		} else if (line.startsWith("ms5607 crc:")) {  			if (items.length >= 3)  				crc = Integer.parseInt(items[2]); -		} else if (line.startsWith("Altitude")) +		} else if (line.startsWith("Altitude:")) {  			return false; +		}  		return true;  	} +	static public void update_state(AltosState state, AltosLink link, AltosConfigData config_data) throws InterruptedException { +		try { +			AltosMs5607	ms5607 = new AltosMs5607(link); + +			if (ms5607 != null) { +				state.set_ms5607(ms5607); +				return; +			} +		} catch (TimeoutException te) { +		} +	} +  	public AltosMs5607() { -		raw_pres = AltosRecord.MISSING; -		raw_temp = AltosRecord.MISSING; -		pa = AltosRecord.MISSING; -		cc = AltosRecord.MISSING; +		raw_pres = AltosLib.MISSING; +		raw_temp = AltosLib.MISSING; +		pa = AltosLib.MISSING; +		cc = AltosLib.MISSING; +	} + +	public AltosMs5607 (AltosLink link) throws InterruptedException, TimeoutException { +		this(); +		link.printf("c s\nB\n"); +		for (;;) { +			String line = link.get_reply_no_dialog(5000); +			if (line == null) { +				throw new TimeoutException(); +			} +			if (!parse_line(line)) { +				break; +			} +		} +		convert();  	}  }  | 
