diff options
| author | Bdale Garbee <bdale@gag.com> | 2014-06-15 17:47:41 -0600 | 
|---|---|---|
| committer | Bdale Garbee <bdale@gag.com> | 2014-06-15 17:47:41 -0600 | 
| commit | c5cfc0d6e507d093987741b6ffaf69ebb24caa4b (patch) | |
| tree | a75b83343939e96592ac07178f2011d82ea6ded8 /altoslib/AltosConvert.java | |
| parent | 1b3d07ede530fa40cb7257fb1725c969ba60e0f0 (diff) | |
| parent | 9ab3a1de95b705783c31a7e16447f52c10b6b480 (diff) | |
Merge branch 'branch-1.4' into debian
Diffstat (limited to 'altoslib/AltosConvert.java')
| -rw-r--r-- | altoslib/AltosConvert.java | 71 | 
1 files changed, 66 insertions, 5 deletions
| diff --git a/altoslib/AltosConvert.java b/altoslib/AltosConvert.java index 8f214c8b..dc0fbb62 100644 --- a/altoslib/AltosConvert.java +++ b/altoslib/AltosConvert.java @@ -18,7 +18,7 @@  /*   * Sensor data conversion functions   */ -package org.altusmetrum.altoslib_3; +package org.altusmetrum.altoslib_4;  public class AltosConvert {  	/* @@ -208,7 +208,7 @@ public class AltosConvert {  	static public double mega_battery_voltage(int v_batt) {  		if (v_batt != AltosLib.MISSING) -			return 3.3 * mega_adc(v_batt) * (15.0 + 27.0) / 27.0; +			return 3.3 * mega_adc(v_batt) * (5.6 + 10.0) / 10.0;  		return AltosLib.MISSING;  	} @@ -224,10 +224,27 @@ public class AltosConvert {  		return sensor / 32767.0 * supply * 127/27;  	} -	static double easy_mini_voltage(int sensor) { -		double	supply = 3.0; +	static double tele_gps_voltage(int sensor) { +		double	supply = 3.3; -		return sensor / 32767.0 * supply * 127/27; +		return sensor / 32767.0 * supply * (5.6 + 10.0) / 10.0; +	} + +	static double easy_mini_voltage(int sensor, int serial) { +		double	supply = 3.3; +		double	diode_offset = 0.0; + +		/* early prototypes had a 3.0V regulator */ +		if (serial < 1000) +			supply = 3.0; + +		/* Purple v1.0 boards had the sensor after the +		 * blocking diode, which drops about 150mV +		 */ +		if (serial < 1665) +			diode_offset = 0.150; + +		return sensor / 32767.0 * supply * 127/27 + diode_offset;  	}  	public static double radio_to_frequency(int freq, int setting, int cal, int channel) { @@ -332,6 +349,12 @@ public class AltosConvert {  	public static AltosOrient orient = new AltosOrient(); +	public static AltosVoltage voltage = new AltosVoltage(); + +	public static AltosLatitude latitude = new AltosLatitude(); + +	public static AltosLongitude longitude = new AltosLongitude(); +  	public static String show_gs(String format, double a) {  		a = meters_to_g(a);  		format = format.concat(" g"); @@ -348,4 +371,42 @@ public class AltosConvert {  			csum += data[i + start];  		return csum & 0xff;  	} + +	public static double beep_value_to_freq(int value) { +		if (value == 0) +			return 4000; +		return 1.0/2.0 * (24.0e6/32.0) / (double) value; +	} + +	public static int beep_freq_to_value(double freq) { +		if (freq == 0) +			return 94; +		return (int) Math.floor (1.0/2.0 * (24.0e6/32.0) / freq + 0.5); +	} + +	public static final int BEARING_LONG = 0; +	public static final int BEARING_SHORT = 1; +	public static final int BEARING_VOICE = 2; + +	public static String bearing_to_words(int length, double bearing) { +		String [][] bearing_string = { +			{ +				"North", "North North East", "North East", "East North East", +				"East", "East South East", "South East", "South South East", +				"South", "South South West", "South West", "West South West", +				"West", "West North West", "North West", "North North West" +			}, { +				"N", "NNE", "NE", "ENE", +				"E", "ESE", "SE", "SSE", +				"S", "SSW", "SW", "WSW", +				"W", "WNW", "NW", "NNW" +			}, { +				"north", "nor nor east", "north east", "east nor east", +				"east", "east sow east", "south east", "sow sow east", +				"south", "sow sow west", "south west", "west sow west", +				"west", "west nor west", "north west", "nor nor west " +			} +		}; +		return bearing_string[length][(int)((bearing / 90 * 8 + 1) / 2)%16]; +	}  } | 
