diff options
Diffstat (limited to 'altoslib')
| -rw-r--r-- | altoslib/AltosIMU.java | 29 | ||||
| -rw-r--r-- | altoslib/AltosMag.java | 25 | ||||
| -rw-r--r-- | altoslib/AltosMs5607.java | 76 | ||||
| -rw-r--r-- | altoslib/Makefile.am | 5 | 
4 files changed, 134 insertions, 1 deletions
diff --git a/altoslib/AltosIMU.java b/altoslib/AltosIMU.java new file mode 100644 index 00000000..88e36544 --- /dev/null +++ b/altoslib/AltosIMU.java @@ -0,0 +1,29 @@ +/* + * Copyright © 2012 Keith Packard <keithp@keithp.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + +package altoslib; + +public class AltosIMU { +	public int		accel_x; +	public int		accel_y; +	public int		accel_z; + +	public int		gyro_x; +	public int		gyro_y; +	public int		gyro_z; +} +	
\ No newline at end of file diff --git a/altoslib/AltosMag.java b/altoslib/AltosMag.java new file mode 100644 index 00000000..45f1924c --- /dev/null +++ b/altoslib/AltosMag.java @@ -0,0 +1,25 @@ +/* + * Copyright © 2012 Keith Packard <keithp@keithp.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + +package altoslib; + +public class AltosMag { +	public int		x; +	public int		y; +	public int		z; +} +	
\ No newline at end of file diff --git a/altoslib/AltosMs5607.java b/altoslib/AltosMs5607.java new file mode 100644 index 00000000..253e2f9b --- /dev/null +++ b/altoslib/AltosMs5607.java @@ -0,0 +1,76 @@ +/* + * Copyright © 2012 Keith Packard <keithp@keithp.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + +package altoslib; + +public class AltosMs5607 { +	public int	reserved; +	public int	sens; +	public int	off; +	public int	tcs; +	public int	tco; +	public int	tref; +	public int	tempsens; +	public int	crc; + +	public int	raw_pres; +	public int	raw_temp; +	public int	pa; +	public int	cc; + +	void convert() { +		int	dT; +		int TEMP; +		long OFF; +		long SENS; +		int P; + +		dT = raw_temp - ((int) tref << 8); +	 +		TEMP = (int) (2000 + (((long) dT * tempsens) >> 23)); + +		OFF = ((long) off << 17) + (((long) tco * dT) >> 6); + +		SENS = ((long) sens << 16) + (((long) tcs * dT) >> 7); + +		if (TEMP < 2000) { +			int	T2 = (int) (((long) dT * (long) dT) >> 31); +			int TEMPM = TEMP - 2000; +			long OFF2 = (61 * (long) TEMPM * (long) TEMPM) >> 4; +			long SENS2 = 2 * (long) TEMPM * (long) TEMPM; +			if (TEMP < 1500) { +				int TEMPP = TEMP + 1500; +				long TEMPP2 = TEMPP * TEMPP; +				OFF2 = OFF2 + 15 * TEMPP2; +				SENS2 = SENS2 + 8 * TEMPP2; +			} +			TEMP -= T2; +			OFF -= OFF2; +			SENS -= SENS2; +		} + +		pa = (int) (((((long) raw_pres * SENS) >> 21) - OFF) >> 15); +		cc = TEMP; +	} + +	public int set(int in_pres, int in_temp) { +		raw_pres = in_pres; +		raw_temp = in_temp; +		convert(); +		return pa; +	} +} diff --git a/altoslib/Makefile.am b/altoslib/Makefile.am index 4262daca..2e4a795a 100644 --- a/altoslib/Makefile.am +++ b/altoslib/Makefile.am @@ -47,7 +47,10 @@ AltosLib_JAVA = \  	$(SRC)/AltosTelemetryRecordLocation.java \  	$(SRC)/AltosTelemetryRecordRaw.java \  	$(SRC)/AltosTelemetryRecordSatellite.java \ -	$(SRC)/AltosTelemetryRecordSensor.java +	$(SRC)/AltosTelemetryRecordSensor.java \ +	$(SRC)/AltosMs5607.java \ +	$(SRC)/AltosIMU.java \ +	$(SRC)/AltosMag.java  JAR=AltosLib.jar  | 
