diff options
198 files changed, 1346 insertions, 1947 deletions
diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosBluetooth.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosBluetooth.java index 0aea06f1..0ed31437 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosBluetooth.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosBluetooth.java @@ -31,7 +31,7 @@ import android.os.Handler;  //import android.os.Message;  import android.util.Log; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  public class AltosBluetooth extends AltosLink { diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java index e10982f7..6f378777 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java @@ -49,7 +49,7 @@ import android.widget.Toast;  import android.app.AlertDialog;  import android.location.Location; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  public class AltosDroid extends FragmentActivity {  	// Debugging @@ -266,7 +266,7 @@ public class AltosDroid extends FragmentActivity {  	static String pos(double p, String pos, String neg) {  		String	h = pos; -		if (p == AltosRecord.MISSING) +		if (p == AltosLib.MISSING)  			return "";  		if (p < 0) {  			h = neg; @@ -278,13 +278,13 @@ public class AltosDroid extends FragmentActivity {  	}  	static String number(String format, double value) { -		if (value == AltosRecord.MISSING) +		if (value == AltosLib.MISSING)  			return "";  		return String.format(format, value);  	}  	static String integer(String format, int value) { -		if (value == AltosRecord.MISSING) +		if (value == AltosLib.MISSING)  			return "";  		return String.format(format, value);  	} diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidPreferences.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidPreferences.java index fd4b0768..59fef842 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidPreferences.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidPreferences.java @@ -23,7 +23,7 @@ import android.content.Context;  import android.content.SharedPreferences;  import android.os.Environment; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  public class AltosDroidPreferences implements AltosPreferencesBackend {  	public final static String        NAME    = "org.altusmetrum.AltosDroid"; diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidTab.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidTab.java index 6ebb47f7..c652a169 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidTab.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidTab.java @@ -17,7 +17,7 @@  package org.altusmetrum.AltosDroid; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  import android.location.Location;  public interface AltosDroidTab { diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosVoice.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosVoice.java index b3dba626..df7409c4 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosVoice.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosVoice.java @@ -21,7 +21,7 @@ package org.altusmetrum.AltosDroid;  import android.speech.tts.TextToSpeech;
  import android.speech.tts.TextToSpeech.OnInitListener;
 -import org.altusmetrum.altoslib_1.*;
 +import org.altusmetrum.altoslib_2.*;
  public class AltosVoice {
 diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TabAscent.java b/altosdroid/src/org/altusmetrum/AltosDroid/TabAscent.java index 0e141ae4..69bc68c9 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TabAscent.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TabAscent.java @@ -17,7 +17,7 @@  package org.altusmetrum.AltosDroid; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  import android.app.Activity;  import android.os.Bundle; @@ -103,10 +103,10 @@ public class TabAscent extends Fragment implements AltosDroidTab {  			}  			mApogeeVoltageView.setText(AltosDroid.number("%4.2f V", state.drogue_sense)); -			mApogeeLights.set(state.drogue_sense > 3.2, state.drogue_sense == AltosRecord.MISSING); +			mApogeeLights.set(state.drogue_sense > 3.2, state.drogue_sense == AltosLib.MISSING);  			mMainVoltageView.setText(AltosDroid.number("%4.2f V", state.main_sense)); -			mMainLights.set(state.main_sense > 3.2, state.main_sense == AltosRecord.MISSING); +			mMainLights.set(state.main_sense > 3.2, state.main_sense == AltosLib.MISSING);  		}  	}  } diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TabDescent.java b/altosdroid/src/org/altusmetrum/AltosDroid/TabDescent.java index 09e7169b..ee09ea88 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TabDescent.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TabDescent.java @@ -17,7 +17,7 @@  package org.altusmetrum.AltosDroid; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  import android.app.Activity;  import android.os.Bundle; @@ -112,10 +112,10 @@ public class TabDescent extends Fragment implements AltosDroidTab {  			}  			mApogeeVoltageView.setText(AltosDroid.number("%4.2f V", state.drogue_sense)); -			mApogeeLights.set(state.drogue_sense > 3.2, state.drogue_sense == AltosRecord.MISSING); +			mApogeeLights.set(state.drogue_sense > 3.2, state.drogue_sense == AltosLib.MISSING);  			mMainVoltageView.setText(AltosDroid.number("%4.2f V", state.main_sense)); -			mMainLights.set(state.main_sense > 3.2, state.main_sense == AltosRecord.MISSING); +			mMainLights.set(state.main_sense > 3.2, state.main_sense == AltosLib.MISSING);  		}  	} diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TabLanded.java b/altosdroid/src/org/altusmetrum/AltosDroid/TabLanded.java index f42b46b5..a57ae514 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TabLanded.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TabLanded.java @@ -17,7 +17,7 @@  package org.altusmetrum.AltosDroid; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  import android.app.Activity;  import android.os.Bundle; diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TabMap.java b/altosdroid/src/org/altusmetrum/AltosDroid/TabMap.java index d831f117..a4e224aa 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TabMap.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TabMap.java @@ -19,7 +19,7 @@ package org.altusmetrum.AltosDroid;  import java.util.Arrays; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  import com.google.android.gms.maps.CameraUpdateFactory;  import com.google.android.gms.maps.GoogleMap; diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TabPad.java b/altosdroid/src/org/altusmetrum/AltosDroid/TabPad.java index 066c1353..f9d30b34 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TabPad.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TabPad.java @@ -17,7 +17,7 @@  package org.altusmetrum.AltosDroid; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  import android.app.Activity;  import android.os.Bundle; @@ -104,13 +104,13 @@ public class TabPad extends Fragment implements AltosDroidTab {  	public void update_ui(AltosState state, AltosGreatCircle from_receiver, Location receiver) {  		if (state != null) {  			mBatteryVoltageView.setText(AltosDroid.number("%4.2f V", state.battery)); -			mBatteryLights.set(state.battery > 3.7, state.battery == AltosRecord.MISSING); +			mBatteryLights.set(state.battery > 3.7, state.battery == AltosLib.MISSING);  			mApogeeVoltageView.setText(AltosDroid.number("%4.2f V", state.drogue_sense)); -			mApogeeLights.set(state.drogue_sense > 3.2, state.drogue_sense == AltosRecord.MISSING); +			mApogeeLights.set(state.drogue_sense > 3.2, state.drogue_sense == AltosLib.MISSING);  			mMainVoltageView.setText(AltosDroid.number("%4.2f V", state.main_sense)); -			mMainLights.set(state.main_sense > 3.2, state.main_sense == AltosRecord.MISSING); +			mMainLights.set(state.main_sense > 3.2, state.main_sense == AltosLib.MISSING);  			if (state.data.flight != 0) {  				if (state.data.state <= AltosLib.ao_flight_pad) @@ -122,7 +122,7 @@ public class TabPad extends Fragment implements AltosDroidTab {  			} else {  				mDataLoggingView.setText("Storage full");  			} -			mDataLoggingLights.set(state.data.flight != 0, state.data.flight == AltosRecord.MISSING); +			mDataLoggingLights.set(state.data.flight != 0, state.data.flight == AltosLib.MISSING);  			if (state.gps != null) {  				mGPSLockedView.setText(AltosDroid.integer("%4d sats", state.gps.nsat)); diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryLogger.java b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryLogger.java index 3ece04ac..4d793413 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryLogger.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryLogger.java @@ -1,6 +1,6 @@  package org.altusmetrum.AltosDroid; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  import android.content.BroadcastReceiver;  import android.content.Context; diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryReader.java b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryReader.java index 716ec589..e37019fd 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryReader.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryReader.java @@ -25,7 +25,7 @@ import java.util.concurrent.*;  import android.util.Log;
  import android.os.Handler;
 -import org.altusmetrum.altoslib_1.*;
 +import org.altusmetrum.altoslib_2.*;
  public class TelemetryReader extends Thread {
 diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java index 940ad792..76efa749 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java @@ -44,7 +44,7 @@ import android.location.LocationManager;  import android.location.LocationListener;  import android.location.Criteria; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  public class TelemetryService extends Service implements LocationListener { diff --git a/altoslib/AltosAccel.java b/altoslib/AltosAccel.java index d02b3238..08eba359 100644 --- a/altoslib/AltosAccel.java +++ b/altoslib/AltosAccel.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  public class AltosAccel extends AltosUnits { diff --git a/altoslib/AltosCRCException.java b/altoslib/AltosCRCException.java index 76e79add..be2ec4fe 100644 --- a/altoslib/AltosCRCException.java +++ b/altoslib/AltosCRCException.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  public class AltosCRCException extends Exception {  	public int rssi; diff --git a/altoslib/AltosCompanion.java b/altoslib/AltosCompanion.java index 1572fdae..57bb21af 100644 --- a/altoslib/AltosCompanion.java +++ b/altoslib/AltosCompanion.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  public class AltosCompanion {  	public final static int	board_id_telescience = 0x0a; diff --git a/altoslib/AltosConfigData.java b/altoslib/AltosConfigData.java index 2ca5a7a5..d92f42c3 100644 --- a/altoslib/AltosConfigData.java +++ b/altoslib/AltosConfigData.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  import java.util.*;  import java.text.*; diff --git a/altoslib/AltosConfigValues.java b/altoslib/AltosConfigValues.java index 027d10f4..fd5584c2 100644 --- a/altoslib/AltosConfigValues.java +++ b/altoslib/AltosConfigValues.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  public interface AltosConfigValues {  	/* set and get all of the dialog values */ diff --git a/altoslib/AltosConvert.java b/altoslib/AltosConvert.java index cf2bc59f..760d9eb9 100644 --- a/altoslib/AltosConvert.java +++ b/altoslib/AltosConvert.java @@ -18,7 +18,7 @@  /*   * Sensor data conversion functions   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  public class AltosConvert {  	/* @@ -207,15 +207,27 @@ public class AltosConvert {  	}  	static public double mega_battery_voltage(int v_batt) { -		if (v_batt != AltosRecord.MISSING) +		if (v_batt != AltosLib.MISSING)  			return 3.3 * mega_adc(v_batt) * (15.0 + 27.0) / 27.0; -		return AltosRecord.MISSING; +		return AltosLib.MISSING;  	}  	static double mega_pyro_voltage(int raw) { -		if (raw != AltosRecord.MISSING) +		if (raw != AltosLib.MISSING)  			return 3.3 * mega_adc(raw) * (100.0 + 27.0) / 27.0; -		return AltosRecord.MISSING; +		return AltosLib.MISSING; +	} + +	static double tele_mini_voltage(int sensor) { +		double	supply = 3.3; + +		return sensor / 32767.0 * supply * 127/27; +	} + +	static double easy_mini_voltage(int sensor) { +		double	supply = 3.0; + +		return sensor / 32767.0 * supply * 127/27;  	}  	public static double radio_to_frequency(int freq, int setting, int cal, int channel) { diff --git a/altoslib/AltosDebug.java b/altoslib/AltosDebug.java index 4d8e3ae7..76c13d57 100644 --- a/altoslib/AltosDebug.java +++ b/altoslib/AltosDebug.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  import java.io.*; diff --git a/altoslib/AltosDistance.java b/altoslib/AltosDistance.java index 25028ac7..56257165 100644 --- a/altoslib/AltosDistance.java +++ b/altoslib/AltosDistance.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  public class AltosDistance extends AltosUnits { diff --git a/altoslib/AltosEeprom.java b/altoslib/AltosEeprom.java index 3a996ae0..dd5993c7 100644 --- a/altoslib/AltosEeprom.java +++ b/altoslib/AltosEeprom.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  import java.io.*;  import java.util.*; diff --git a/altoslib/AltosEepromBody.java b/altoslib/AltosEepromBody.java index 60aa8881..444102ce 100644 --- a/altoslib/AltosEepromBody.java +++ b/altoslib/AltosEepromBody.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  import java.io.*;  import java.util.*; diff --git a/altoslib/AltosEepromBodyIterable.java b/altoslib/AltosEepromBodyIterable.java index 33dc0ac8..4d32c66a 100644 --- a/altoslib/AltosEepromBodyIterable.java +++ b/altoslib/AltosEepromBodyIterable.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  import java.io.*;  import java.util.*; diff --git a/altoslib/AltosEepromChunk.java b/altoslib/AltosEepromChunk.java index 1709352b..918481fa 100644 --- a/altoslib/AltosEepromChunk.java +++ b/altoslib/AltosEepromChunk.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  import java.text.*;  import java.util.concurrent.*; diff --git a/altoslib/AltosEepromFile.java b/altoslib/AltosEepromFile.java index 082c23ca..f87bf916 100644 --- a/altoslib/AltosEepromFile.java +++ b/altoslib/AltosEepromFile.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  import java.io.*;  import java.util.*; @@ -100,6 +100,7 @@ public class AltosEepromFile extends AltosStateIterable {  		AltosState	state = start.clone();  		for (AltosEeprom eeprom : body) {  			eeprom.update_state(state); +			state.finish_update();  			if (state.state >= AltosLib.ao_flight_boost) {  				start.set_boost_tick(state.tick);  				break; @@ -111,8 +112,10 @@ public class AltosEepromFile extends AltosStateIterable {  		AltosState		state = start.clone();  		Iterator<AltosEeprom>	i = body.iterator(); -		while (i.hasNext() && !state.valid()) +		while (i.hasNext() && !state.valid()) {  			i.next().update_state(state); +			state.finish_update(); +		}  		return new AltosEepromIterator(state, i);  	}  }
\ No newline at end of file diff --git a/altoslib/AltosEepromGPS.java b/altoslib/AltosEepromGPS.java index f97fbbf9..43ed3392 100644 --- a/altoslib/AltosEepromGPS.java +++ b/altoslib/AltosEepromGPS.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  import java.io.*;  import java.util.*; diff --git a/altoslib/AltosEepromHeader.java b/altoslib/AltosEepromHeader.java index 35a03a12..0aeb78dd 100644 --- a/altoslib/AltosEepromHeader.java +++ b/altoslib/AltosEepromHeader.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  import java.io.*;  import java.util.*; diff --git a/altoslib/AltosEepromHeaderIterable.java b/altoslib/AltosEepromHeaderIterable.java index 01953f0e..920a4382 100644 --- a/altoslib/AltosEepromHeaderIterable.java +++ b/altoslib/AltosEepromHeaderIterable.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  import java.io.*;  import java.util.*; diff --git a/altoslib/AltosEepromIterable.java b/altoslib/AltosEepromIterable.java index 1e0f7f75..fc793579 100644 --- a/altoslib/AltosEepromIterable.java +++ b/altoslib/AltosEepromIterable.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  import java.io.*;  import java.util.*; diff --git a/altoslib/AltosEepromLog.java b/altoslib/AltosEepromLog.java index 20026c6d..95c0c3f6 100644 --- a/altoslib/AltosEepromLog.java +++ b/altoslib/AltosEepromLog.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  import java.text.*;  import java.util.concurrent.*; @@ -72,9 +72,9 @@ public class AltosEepromLog {  			for (block = in_start_block; block < in_end_block; block++) {  				AltosEepromChunk eechunk = new AltosEepromChunk(link, block, block == in_start_block); -				for (int i = 0; i < AltosEepromChunk.chunk_size; i += AltosEepromRecord.record_length) { +				for (int i = 0; i < AltosEepromChunk.chunk_size; i += AltosEepromTM.record_length) {  					try { -						AltosEepromRecord r = new AltosEepromRecord(eechunk, i); +						AltosEepromTM r = new AltosEepromTM(eechunk, i);  						if (r.cmd == AltosLib.AO_LOG_FLIGHT) {  							flight = r.b; diff --git a/altoslib/AltosEepromMega.java b/altoslib/AltosEepromMega.java index b85c04bf..7a4ee52d 100644 --- a/altoslib/AltosEepromMega.java +++ b/altoslib/AltosEepromMega.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  import java.io.*;  import java.util.*; diff --git a/altoslib/AltosEepromMegaIterable.java b/altoslib/AltosEepromMegaIterable.java index 5736f937..8243aa88 100644 --- a/altoslib/AltosEepromMegaIterable.java +++ b/altoslib/AltosEepromMegaIterable.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  import java.io.*;  import java.util.*; diff --git a/altoslib/AltosEepromMetrum.java b/altoslib/AltosEepromMetrum.java index e035e5fd..7b2fcb3c 100644 --- a/altoslib/AltosEepromMetrum.java +++ b/altoslib/AltosEepromMetrum.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  import java.text.*; diff --git a/altoslib/AltosEepromMetrum2.java b/altoslib/AltosEepromMetrum2.java index ea38edf2..c1d62c0c 100644 --- a/altoslib/AltosEepromMetrum2.java +++ b/altoslib/AltosEepromMetrum2.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  import java.io.*;  import java.util.*; diff --git a/altoslib/AltosEepromMetrumIterable.java b/altoslib/AltosEepromMetrumIterable.java index 0387319e..de4cc919 100644 --- a/altoslib/AltosEepromMetrumIterable.java +++ b/altoslib/AltosEepromMetrumIterable.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  import java.io.*;  import java.util.*; diff --git a/altoslib/AltosEepromMini.java b/altoslib/AltosEepromMini.java index e0eedb73..a09a62ce 100644 --- a/altoslib/AltosEepromMini.java +++ b/altoslib/AltosEepromMini.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  import java.io.*;  import java.util.*; @@ -42,13 +42,10 @@ public class AltosEepromMini extends AltosEeprom {  	public int v_batt() { return data16(10); }  	double voltage(AltosState state, int sensor) { -		double	supply; -  		if (state.log_format == AltosLib.AO_LOG_FORMAT_EASYMINI) -			supply = 3.0; +			return AltosConvert.easy_mini_voltage(sensor);  		else -			supply = 3.3; -		return sensor / 32767.0 * supply * 127/27; +			return AltosConvert.tele_mini_voltage(sensor);  	}  	public void update_state(AltosState state) { diff --git a/altoslib/AltosEepromMiniIterable.java b/altoslib/AltosEepromMiniIterable.java index 495495eb..31e667d8 100644 --- a/altoslib/AltosEepromMiniIterable.java +++ b/altoslib/AltosEepromMiniIterable.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  import java.io.*;  import java.util.*; diff --git a/altoslib/AltosEepromOldIterable.java b/altoslib/AltosEepromOldIterable.java index ef82828b..43b2362b 100644 --- a/altoslib/AltosEepromOldIterable.java +++ b/altoslib/AltosEepromOldIterable.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  import java.io.*;  import java.util.*; diff --git a/altoslib/AltosEepromRecord.java b/altoslib/AltosEepromRecord.java deleted file mode 100644 index 70ac1113..00000000 --- a/altoslib/AltosEepromRecord.java +++ /dev/null @@ -1,135 +0,0 @@ -/* - * Copyright © 2010 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 org.altusmetrum.altoslib_1; - -import java.text.*; - -public class AltosEepromRecord { -	public int	cmd; -	public int	tick; -	public int	a; -	public int	b; -	public String	data; -	public boolean	tick_valid; - -	public static final int	record_length = 8; - -	public AltosEepromRecord (AltosEepromChunk chunk, int start) throws ParseException { - -		cmd = chunk.data(start); -		tick_valid = true; - -		tick_valid = !chunk.erased(start, record_length); -		if (tick_valid) { -			if (AltosConvert.checksum(chunk.data, start, record_length) != 0) -				throw new ParseException(String.format("invalid checksum at 0x%x", -								       chunk.address + start), 0); -		} else { -			cmd = AltosLib.AO_LOG_INVALID; -		} - -		tick = chunk.data16(start + 2); -		a = chunk.data16(start + 4); -		b = chunk.data16(start + 6); - -		data = null; -	} - -	public AltosEepromRecord (String line) { -		tick_valid = false; -		tick = 0; -		a = 0; -		b = 0; -		data = null; -		if (line == null) { -			cmd = AltosLib.AO_LOG_INVALID; -			data = ""; -		} else { -			try { -				String[] tokens = line.split("\\s+"); - -				if (tokens[0].length() == 1) { -					if (tokens.length != 4) { -						cmd = AltosLib.AO_LOG_INVALID; -						data = line; -					} else { -						cmd = tokens[0].codePointAt(0); -						tick = Integer.parseInt(tokens[1],16); -						tick_valid = true; -						a = Integer.parseInt(tokens[2],16); -						b = Integer.parseInt(tokens[3],16); -					} -				} else if (tokens[0].equals("Config") && tokens[1].equals("version:")) { -					cmd = AltosLib.AO_LOG_CONFIG_VERSION; -					data = tokens[2]; -				} else if (tokens[0].equals("Main") && tokens[1].equals("deploy:")) { -					cmd = AltosLib.AO_LOG_MAIN_DEPLOY; -					a = Integer.parseInt(tokens[2]); -				} else if (tokens[0].equals("Apogee") && tokens[1].equals("delay:")) { -					cmd = AltosLib.AO_LOG_APOGEE_DELAY; -					a = Integer.parseInt(tokens[2]); -				} else if (tokens[0].equals("Radio") && tokens[1].equals("channel:")) { -					cmd = AltosLib.AO_LOG_RADIO_CHANNEL; -					a = Integer.parseInt(tokens[2]); -				} else if (tokens[0].equals("Callsign:")) { -					cmd = AltosLib.AO_LOG_CALLSIGN; -					data = tokens[1].replaceAll("\"",""); -				} else if (tokens[0].equals("Accel") && tokens[1].equals("cal")) { -					cmd = AltosLib.AO_LOG_ACCEL_CAL; -					a = Integer.parseInt(tokens[3]); -					b = Integer.parseInt(tokens[5]); -				} else if (tokens[0].equals("Radio") && tokens[1].equals("cal:")) { -					cmd = AltosLib.AO_LOG_RADIO_CAL; -					a = Integer.parseInt(tokens[2]); -				} else if (tokens[0].equals("Max") && tokens[1].equals("flight") && tokens[2].equals("log:")) { -					cmd = AltosLib.AO_LOG_MAX_FLIGHT_LOG; -					a = Integer.parseInt(tokens[3]); -				} else if (tokens[0].equals("manufacturer")) { -					cmd = AltosLib.AO_LOG_MANUFACTURER; -					data = tokens[1]; -				} else if (tokens[0].equals("product")) { -					cmd = AltosLib.AO_LOG_PRODUCT; -					data = tokens[1]; -				} else if (tokens[0].equals("serial-number")) { -					cmd = AltosLib.AO_LOG_SERIAL_NUMBER; -					a = Integer.parseInt(tokens[1]); -				} else if (tokens[0].equals("log-format")) { -					cmd = AltosLib.AO_LOG_LOG_FORMAT; -					a = Integer.parseInt(tokens[1]); -				} else if (tokens[0].equals("software-version")) { -					cmd = AltosLib.AO_LOG_SOFTWARE_VERSION; -					data = tokens[1]; -				} else { -					cmd = AltosLib.AO_LOG_INVALID; -					data = line; -				} -			} catch (NumberFormatException ne) { -				cmd = AltosLib.AO_LOG_INVALID; -				data = line; -			} -		} -	} - -	public AltosEepromRecord(int in_cmd, int in_tick, int in_a, int in_b) { -		tick_valid = true; -		cmd = in_cmd; -		tick = in_tick; -		a = in_a; -		b = in_b; -	} -} diff --git a/altoslib/AltosEepromTM.java b/altoslib/AltosEepromTM.java index 2bb9d974..a38c2dae 100644 --- a/altoslib/AltosEepromTM.java +++ b/altoslib/AltosEepromTM.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  import java.io.*;  import java.util.*; diff --git a/altoslib/AltosEepromTeleScience.java b/altoslib/AltosEepromTeleScience.java deleted file mode 100644 index bacd66b5..00000000 --- a/altoslib/AltosEepromTeleScience.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright © 2011 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 org.altusmetrum.altoslib_1; - -import java.text.*; - -public class AltosEepromTeleScience { -	public int	type; -	public int	tick; -	public int	tm_state; -	public int	tm_tick; -	public int[]	data; -	public boolean	valid; - -	public static final int AO_LOG_TELESCIENCE_START = 's'; -	public static final int AO_LOG_TELESCIENCE_DATA = 'd'; - -	static final int	max_data = 12; -	public static final int	record_length = 32; - -	public int record_length() { return record_length; } - -	public AltosEepromTeleScience (AltosEepromChunk chunk, int start) throws ParseException { -		type = chunk.data(start); - -		valid = !chunk.erased(start, record_length); -		if (valid) { -			if (AltosConvert.checksum(chunk.data, start, record_length) != 0) -				throw new ParseException(String.format("invalid checksum at 0x%x", -								       chunk.address + start), 0); -		} else { -			type = AltosLib.AO_LOG_INVALID; -		} - -		tick = chunk.data16(start+2); -		tm_tick = chunk.data16(start+4); -		tm_state = chunk.data(start+6); -		data = new int[max_data]; -		for (int i = 0; i < max_data; i++) -			data[i] = chunk.data16(start + 8 + i * 2); -	} -} diff --git a/altoslib/AltosFile.java b/altoslib/AltosFile.java index 54c54824..9802f883 100644 --- a/altoslib/AltosFile.java +++ b/altoslib/AltosFile.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1;  +package org.altusmetrum.altoslib_2;   import java.io.File;  import java.util.*; @@ -23,7 +23,7 @@ import java.util.*;  public class AltosFile extends File {  	static String number(int n) { -		if (n == AltosRecord.MISSING) +		if (n == AltosLib.MISSING)  			return "unk";  		else  			return String.format("%03d", n); diff --git a/altoslib/AltosFlash.java b/altoslib/AltosFlash.java index 010274b9..d8069157 100644 --- a/altoslib/AltosFlash.java +++ b/altoslib/AltosFlash.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  import java.io.*; diff --git a/altoslib/AltosFlashListener.java b/altoslib/AltosFlashListener.java index ab50b74a..777ae635 100644 --- a/altoslib/AltosFlashListener.java +++ b/altoslib/AltosFlashListener.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  public interface AltosFlashListener {  	public void position(String label, int percent); diff --git a/altoslib/AltosFlightReader.java b/altoslib/AltosFlightReader.java index 5a415274..4a722e42 100644 --- a/altoslib/AltosFlightReader.java +++ b/altoslib/AltosFlightReader.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  import java.text.*;  import java.io.*; @@ -48,5 +48,5 @@ public class AltosFlightReader {  	public boolean has_monitor_battery() { return false; } -	public double monitor_battery() { return AltosRecord.MISSING; } +	public double monitor_battery() { return AltosLib.MISSING; }  } diff --git a/altoslib/AltosFrequency.java b/altoslib/AltosFrequency.java index 484a2fd9..ece7525a 100644 --- a/altoslib/AltosFrequency.java +++ b/altoslib/AltosFrequency.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  public class AltosFrequency {  	public double	frequency; diff --git a/altoslib/AltosGPS.java b/altoslib/AltosGPS.java index a8c19e4a..1d5b0755 100644 --- a/altoslib/AltosGPS.java +++ b/altoslib/AltosGPS.java @@ -15,13 +15,14 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  import java.text.*; +import java.util.concurrent.*;  public class AltosGPS implements Cloneable { -	public final static int MISSING = AltosRecord.MISSING; +	public final static int MISSING = AltosLib.MISSING;  	public int	nsat;  	public boolean	locked; @@ -65,8 +66,8 @@ public class AltosGPS implements Cloneable {  	}  	public void ClearGPSTime() { -		year = month = day = AltosRecord.MISSING; -		hour = minute = second = AltosRecord.MISSING; +		year = month = day = AltosLib.MISSING; +		hour = minute = second = AltosLib.MISSING;  	}  	public AltosGPS(AltosTelemetryMap map) throws ParseException { @@ -91,9 +92,9 @@ public class AltosGPS implements Cloneable {  			second = map.get_int(AltosTelemetryLegacy.AO_TELEM_GPS_SECOND, 0);  			ground_speed = map.get_double(AltosTelemetryLegacy.AO_TELEM_GPS_HORIZONTAL_SPEED, -						      AltosRecord.MISSING, 1/100.0); +						      AltosLib.MISSING, 1/100.0);  			course = map.get_int(AltosTelemetryLegacy.AO_TELEM_GPS_COURSE, -					     AltosRecord.MISSING); +					     AltosLib.MISSING);  			hdop = map.get_double(AltosTelemetryLegacy.AO_TELEM_GPS_HDOP, MISSING, 1.0);  			vdop = map.get_double(AltosTelemetryLegacy.AO_TELEM_GPS_VDOP, MISSING, 1.0);  			h_error = map.get_int(AltosTelemetryLegacy.AO_TELEM_GPS_HERROR, MISSING); @@ -107,6 +108,62 @@ public class AltosGPS implements Cloneable {  		}  	} +	public boolean parse_string (String line, boolean says_done) { +		String[] bits = line.split("\\s+"); +		if (bits.length == 0) +			return false; +		if (line.startsWith("Date:")) { +			if (bits.length < 2) +				return false; +			String[] d = bits[1].split("/"); +			if (d.length < 3) +				return false; +			year = Integer.parseInt(d[0]) + 2000; +			month = Integer.parseInt(d[1]); +			day = Integer.parseInt(d[2]); +		} else if (line.startsWith("Time:")) { +			if (bits.length < 2) +				return false; +			String[] d = bits[1].split(":"); +			if (d.length < 3) +				return false; +			hour = Integer.parseInt(d[0]); +			minute = Integer.parseInt(d[1]); +			second = Integer.parseInt(d[2]); +		} else if (line.startsWith("Lat/Lon:")) { +			if (bits.length < 3) +				return false; +			lat = Integer.parseInt(bits[1]) * 1.0e-7; +			lon = Integer.parseInt(bits[2]) * 1.0e-7; +		} else if (line.startsWith("Alt:")) { +			if (bits.length < 2) +				return false; +			alt = Integer.parseInt(bits[1]); +		} else if (line.startsWith("Flags:")) { +			if (bits.length < 2) +				return false; +			int status = Integer.decode(bits[1]); +			connected = (status & AltosLib.AO_GPS_RUNNING) != 0; +			locked = (status & AltosLib.AO_GPS_VALID) != 0; +			if (!says_done) +				return false; +		} else if (line.startsWith("Sats:")) { +			if (bits.length < 2) +				return false; +			nsat = Integer.parseInt(bits[1]); +			cc_gps_sat = new AltosGPSSat[nsat]; +			for (int i = 0; i < nsat; i++) { +				int	svid = Integer.parseInt(bits[2+i*2]); +				int	cc_n0 = Integer.parseInt(bits[3+i*2]); +				cc_gps_sat[i] = new AltosGPSSat(svid, cc_n0); +			} +		} else if (line.startsWith("done")) { +			return false; +		} else +			return false; +		return true; +	} +  	public AltosGPS(String[] words, int i, int version) throws ParseException {  		AltosParse.word(words[i++], "GPS");  		nsat = AltosParse.parse_int(words[i++]); @@ -212,9 +269,9 @@ public class AltosGPS implements Cloneable {  	}  	public AltosGPS() { -		lat = AltosRecord.MISSING; -		lon = AltosRecord.MISSING; -		alt = AltosRecord.MISSING; +		lat = AltosLib.MISSING; +		lon = AltosLib.MISSING; +		alt = AltosLib.MISSING;  		ClearGPSTime();  		cc_gps_sat = null;  	} @@ -283,11 +340,37 @@ public class AltosGPS implements Cloneable {  				}  			}  		} else { -			lat = AltosRecord.MISSING; -			lon = AltosRecord.MISSING; -			alt = AltosRecord.MISSING; +			lat = AltosLib.MISSING; +			lon = AltosLib.MISSING; +			alt = AltosLib.MISSING;  			ClearGPSTime();  			cc_gps_sat = null;  		}  	} + +	static public void update_state(AltosState state, AltosLink link, AltosConfigData config_data) { +		try { +			AltosGPS	gps = new AltosGPS(link, config_data); + +			if (gps != null) { +				state.set_gps(gps, state.gps_sequence++); +				return; +			} +		} catch (TimeoutException te) { +		} catch (InterruptedException ie) { +		} +		state.set_gps(null, 0); +	} + +	public AltosGPS (AltosLink link, AltosConfigData config_data) throws TimeoutException, InterruptedException { +		boolean says_done = config_data.compare_version("1.0") >= 0; +		link.printf("g\n"); +		for (;;) { +			String line = link.get_reply_no_dialog(5000); +			if (line == null) +				throw new TimeoutException(); +			if (!parse_string(line, says_done)) +				break; +		} +	}  } diff --git a/altoslib/AltosGPSQuery.java b/altoslib/AltosGPSQuery.java deleted file mode 100644 index deb9d201..00000000 --- a/altoslib/AltosGPSQuery.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * 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 org.altusmetrum.altoslib_1; - -import java.util.concurrent.*; - -class AltosGPSQuery extends AltosGPS { -	public AltosGPSQuery (AltosLink link, AltosConfigData config_data) -		throws TimeoutException, InterruptedException { -		boolean says_done = config_data.compare_version("1.0") >= 0; -		link.printf("g\n"); -		for (;;) { -			String line = link.get_reply_no_dialog(5000); -			if (line == null) -				throw new TimeoutException(); -			String[] bits = line.split("\\s+"); -			if (bits.length == 0) -				continue; -			if (line.startsWith("Date:")) { -				if (bits.length < 2) -					continue; -				String[] d = bits[1].split(":"); -				if (d.length < 3) -					continue; -				year = Integer.parseInt(d[0]) + 2000; -				month = Integer.parseInt(d[1]); -				day = Integer.parseInt(d[2]); -				continue; -			} -			if (line.startsWith("Time:")) { -				if (bits.length < 2) -					continue; -				String[] d = bits[1].split("/"); -				if (d.length < 3) -					continue; -				hour = Integer.parseInt(d[0]); -				minute = Integer.parseInt(d[1]); -				second = Integer.parseInt(d[2]); -				continue; -			} -			if (line.startsWith("Lat/Lon:")) { -				if (bits.length < 3) -					continue; -				lat = Integer.parseInt(bits[1]) * 1.0e-7; -				lon = Integer.parseInt(bits[2]) * 1.0e-7; -				continue; -			} -			if (line.startsWith("Alt:")) { -				if (bits.length < 2) -					continue; -				alt = Integer.parseInt(bits[1]); -				continue; -			} -			if (line.startsWith("Flags:")) { -				if (bits.length < 2) -					continue; -				int status = Integer.decode(bits[1]); -				connected = (status & AltosLib.AO_GPS_RUNNING) != 0; -				locked = (status & AltosLib.AO_GPS_VALID) != 0; -				if (!says_done) -					break; -				continue; -			} -			if (line.startsWith("Sats:")) { -				if (bits.length < 2) -					continue; -				nsat = Integer.parseInt(bits[1]); -				cc_gps_sat = new AltosGPSSat[nsat]; -				for (int i = 0; i < nsat; i++) { -					int	svid = Integer.parseInt(bits[2+i*2]); -					int	cc_n0 = Integer.parseInt(bits[3+i*2]); -					cc_gps_sat[i] = new AltosGPSSat(svid, cc_n0); -				} -			} -			if (line.startsWith("done")) -				break; -			if (line.startsWith("Syntax error")) -				break; -		} -	} -} - diff --git a/altoslib/AltosGPSSat.java b/altoslib/AltosGPSSat.java index 8714dd8a..0e17d7f2 100644 --- a/altoslib/AltosGPSSat.java +++ b/altoslib/AltosGPSSat.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  public class AltosGPSSat {  	public int	svid; diff --git a/altoslib/AltosGreatCircle.java b/altoslib/AltosGreatCircle.java index 770c3c6c..2c84bf4a 100644 --- a/altoslib/AltosGreatCircle.java +++ b/altoslib/AltosGreatCircle.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  import java.lang.Math; diff --git a/altoslib/AltosHeight.java b/altoslib/AltosHeight.java index 96f5722b..1d2e4dbc 100644 --- a/altoslib/AltosHeight.java +++ b/altoslib/AltosHeight.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  public class AltosHeight extends AltosUnits { diff --git a/altoslib/AltosHexfile.java b/altoslib/AltosHexfile.java index 2140228a..90352927 100644 --- a/altoslib/AltosHexfile.java +++ b/altoslib/AltosHexfile.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  import java.io.*;  import java.util.LinkedList; diff --git a/altoslib/AltosIMU.java b/altoslib/AltosIMU.java index c5ebbb16..c231dda7 100644 --- a/altoslib/AltosIMU.java +++ b/altoslib/AltosIMU.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 AltosIMU implements Cloneable {  	public int		accel_x; @@ -26,6 +28,23 @@ public class AltosIMU implements Cloneable {  	public int		gyro_y;  	public int		gyro_z; +	public boolean parse_string(String line) { +		if (!line.startsWith("Accel:")) +			return false; + +		String[] items = line.split("\\s+"); + +		if (items.length >= 8) { +			accel_x = Integer.parseInt(items[1]); +			accel_y = Integer.parseInt(items[2]); +			accel_z = Integer.parseInt(items[3]); +			gyro_x = Integer.parseInt(items[5]); +			gyro_y = Integer.parseInt(items[6]); +			gyro_z = Integer.parseInt(items[7]); +		} +		return true; +	} +  	public AltosIMU clone() {  		AltosIMU	n = new AltosIMU(); @@ -38,5 +57,38 @@ public class AltosIMU implements Cloneable {  		n.gyro_z = gyro_z;  		return n;  	} + +	static public void update_state(AltosState state, AltosLink link, AltosConfigData config_data) { +		try { +			AltosIMU	imu = new AltosIMU(link); + +			if (imu != null) +				state.set_imu(imu); +		} catch (TimeoutException te) { +		} catch (InterruptedException ie) { +		} +	} + +	public AltosIMU() { +		accel_x = AltosLib.MISSING; +		accel_y = AltosLib.MISSING; +		accel_z = AltosLib.MISSING; + +		gyro_x = AltosLib.MISSING; +		gyro_y = AltosLib.MISSING; +		gyro_z = AltosLib.MISSING; +	} + +	public AltosIMU(AltosLink link) throws InterruptedException, TimeoutException { +		this(); +		link.printf("I\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 diff --git a/altoslib/AltosIMUQuery.java b/altoslib/AltosIMUQuery.java deleted file mode 100644 index 4ea5d963..00000000 --- a/altoslib/AltosIMUQuery.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * 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 org.altusmetrum.altoslib_1; - -import java.util.concurrent.TimeoutException; - -class AltosIMUQuery extends AltosIMU { - -	public AltosIMUQuery (AltosLink link) throws InterruptedException, TimeoutException { -		link.printf("I\n"); -		for (;;) { -			String line = link.get_reply_no_dialog(5000); -			if (line == null) { -				throw new TimeoutException(); -			} -			if (!line.startsWith("Accel:")) -				continue; -			String[] items = line.split("\\s+"); -			if (items.length >= 8) { -				accel_x = Integer.parseInt(items[1]); -				accel_y = Integer.parseInt(items[2]); -				accel_z = Integer.parseInt(items[3]); -				gyro_x = Integer.parseInt(items[5]); -				gyro_y = Integer.parseInt(items[6]); -				gyro_z = Integer.parseInt(items[7]); -			} -			break; -		} -	} -} - diff --git a/altoslib/AltosRecordIterable.java b/altoslib/AltosIdle.java index 62dbdfe3..456a9247 100644 --- a/altoslib/AltosRecordIterable.java +++ b/altoslib/AltosIdle.java @@ -1,5 +1,5 @@  /* - * Copyright © 2010 Keith Packard <keithp@keithp.com> + * Copyright © 2013 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 @@ -15,15 +15,25 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  import java.io.*;  import java.util.*; +import java.text.*; +import java.util.concurrent.*; -public abstract class AltosRecordIterable implements Iterable<AltosRecord> { -	public abstract Iterator<AltosRecord> iterator(); -	public void write_comments(PrintStream out) { } -	public boolean has_accel() { return false; } -	public boolean has_gps() { return false; } -	public boolean has_ignite() { return false; }; +public abstract class AltosIdle { +	AltosLink	link; +	AltosConfigData	config_data; + +	public void printf(String format, Object ... arguments) { +		link.printf(format, arguments); +	} + +	public abstract void update_state(AltosState state) throws InterruptedException, TimeoutException; + +	public AltosIdle(AltosLink link, AltosConfigData config_data) { +		this.link = link; +		this.config_data = config_data; +	}  } diff --git a/altoslib/AltosIdleFetch.java b/altoslib/AltosIdleFetch.java new file mode 100644 index 00000000..42943c07 --- /dev/null +++ b/altoslib/AltosIdleFetch.java @@ -0,0 +1,149 @@ +/* + * Copyright © 2013 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 org.altusmetrum.altoslib_2; + +import java.io.*; +import java.util.*; +import java.text.*; +import java.util.concurrent.*; + +class AltosIdler { +	String	prefix; +	int[]	idlers; + +	static final int	idle_gps = 0; +	static final int	idle_imu = 1; +	static final int	idle_mag = 2; +	static final int	idle_ms5607 = 3; +	static final int	idle_mma655x = 4; + + +	static final int	idle_sensor_tm = 10; +	static final int	idle_sensor_metrum = 11; +	static final int	idle_sensor_mega = 12; +	static final int	idle_sensor_emini = 13; + +	public void update_state(AltosState state, AltosLink link, AltosConfigData config_data) throws InterruptedException, TimeoutException { +		for (int idler : idlers) { +			AltosIdle idle = null; +			switch (idler) { +			case idle_gps: +				AltosGPS.update_state(state, link, config_data); +				break; +			case idle_imu: +				AltosIMU.update_state(state, link, config_data); +				break; +			case idle_mag: +				AltosMag.update_state(state, link, config_data); +				break; +			case idle_ms5607: +				AltosMs5607.update_state(state, link, config_data); +				break; +			case idle_mma655x: +				AltosMma655x.update_state(state, link, config_data); +				break; +			case idle_sensor_tm: +				AltosSensorTM.update_state(state, link, config_data); +				break; +			case idle_sensor_metrum: +				AltosSensorMetrum.update_state(state, link, config_data); +				break; +			case idle_sensor_mega: +				AltosSensorMega.update_state(state, link, config_data); +				break; +			case idle_sensor_emini: +				AltosSensorEMini.update_state(state, link, config_data); +				break; +			} +			if (idle != null) +				idle.update_state(state); +		} +	} + +	public boolean matches(AltosConfigData config_data) { +		return config_data.product.startsWith(prefix); +	} + +	public AltosIdler(String prefix, int ... idlers) { +		this.prefix = prefix; +		this.idlers = idlers; +	} +} + + +public class AltosIdleFetch implements AltosStateUpdate { + +	static final AltosIdler[] idlers = { + +		new AltosIdler("EasyMini", +			       AltosIdler.idle_ms5607, +			       AltosIdler.idle_sensor_emini), + +		new AltosIdler("TeleMini-v1", +			       AltosIdler.idle_sensor_tm), + +		new AltosIdler("TeleMini-v2", +			       AltosIdler.idle_ms5607, +			       AltosIdler.idle_sensor_tm), + +		new AltosIdler("TeleMetrum-v1", +			       AltosIdler.idle_gps, +			       AltosIdler.idle_sensor_tm), + +		new AltosIdler("TeleMetrum-v2", +			       AltosIdler.idle_gps, +			       AltosIdler.idle_ms5607, AltosIdler.idle_mma655x, +			       AltosIdler.idle_sensor_metrum), + +		new AltosIdler("TeleMega", +			       AltosIdler.idle_gps, +			       AltosIdler.idle_ms5607, AltosIdler.idle_mma655x, +			       AltosIdler.idle_imu, AltosIdler.idle_mag, +			       AltosIdler.idle_sensor_mega), +	}; + +	AltosLink		link; + +	double			frequency; +	String			callsign; + +	public void update_state(AltosState state) { +		try { +			AltosConfigData config_data = new AltosConfigData(link); +			state.set_state(AltosLib.ao_flight_startup); +			state.set_serial(config_data.serial); +			state.set_callsign(config_data.callsign); +			state.set_ground_accel(config_data.accel_cal_plus); +			state.set_accel_g(config_data.accel_cal_plus, config_data.accel_cal_minus); +			for (AltosIdler idler : idlers) { +				if (idler.matches(config_data)) { +					idler.update_state(state, link, config_data); +					break; +				} +			} +			state.set_received_time(System.currentTimeMillis()); +		} catch (InterruptedException ie) { +		} catch (TimeoutException te) { +		} +		 +	} + +	public AltosIdleFetch(AltosLink link) { +		this.link = link; +	} +} diff --git a/altoslib/AltosIdleMonitor.java b/altoslib/AltosIdleMonitor.java index b3ce5b20..d858845a 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_1; +package org.altusmetrum.altoslib_2;  import java.io.*;  import java.util.concurrent.*; @@ -24,11 +24,13 @@ import java.util.concurrent.*;  public class AltosIdleMonitor extends Thread {  	AltosLink		link;  	AltosIdleMonitorListener	listener; -	AltosState		state; + +	AltosIdleFetch		fetch; +  	boolean			remote;  	double			frequency;  	String			callsign; -	AltosState		previous_state; +  	AltosListenerState	listener_state;  	AltosConfigData		config_data;  	AltosGPS		gps; @@ -47,86 +49,35 @@ public class AltosIdleMonitor extends Thread {  		return rssi;  	} -	boolean has_sensor_tm(AltosConfigData config_data) { -		return config_data.product.startsWith("TeleMetrum") || config_data.product.startsWith("TeleMini"); -	} - -	boolean has_sensor_mm(AltosConfigData config_data) { -		return config_data.product.startsWith("TeleMega"); -	} - -	boolean has_gps(AltosConfigData config_data) { -		return config_data.product.startsWith("TeleMetrum") || config_data.product.startsWith("TeleMega"); +	void start_link() throws InterruptedException, TimeoutException { +		if (remote) { +			link.set_radio_frequency(frequency); +			link.set_callsign(callsign); +			link.start_remote(); +		} else +			link.flush_input();  	} -	AltosRecord sensor_mm(AltosConfigData config_data) throws InterruptedException, TimeoutException { -		AltosRecordMM record_mm = new AltosRecordMM(); -		AltosSensorMM sensor = new AltosSensorMM(link); -		AltosMs5607 ms5607 = new AltosMs5607Query(link); -		AltosIMU imu = new AltosIMUQuery(link); - -		record_mm.accel_plus_g = config_data.accel_cal_plus; -		record_mm.accel_minus_g = config_data.accel_cal_minus; - -		record_mm.ground_accel = sensor.accel; -		record_mm.accel = sensor.accel; -		record_mm.ground_pres = ms5607.pa; -		record_mm.pres = ms5607.pa; -		record_mm.temp = ms5607.cc; - -		record_mm.v_batt = sensor.v_batt; -		record_mm.v_pyro = sensor.v_pyro; -		record_mm.sense = sensor.sense; - -		record_mm.imu = imu; - -		return record_mm; +	void stop_link() throws InterruptedException, TimeoutException { +		if (remote) +			link.stop_remote();  	} -	void update_state() throws InterruptedException, TimeoutException { -		AltosRecord	record = null; +	void update_state(AltosState state) throws InterruptedException, TimeoutException { +		boolean		worked = false;  		try { -			if (remote) { -				link.set_radio_frequency(frequency); -				link.set_callsign(callsign); -				link.start_remote(); -			} else -				link.flush_input(); -			config_data = new AltosConfigData(link); - -			if (has_sensor_tm(config_data)) -				record = new AltosSensorTM(link, config_data); -			else if (has_sensor_mm(config_data)) -				record = sensor_mm(config_data); -			else -				record = new AltosRecordNone(); - -			if (has_gps(config_data)) -				gps = new AltosGPSQuery(link, config_data); - -			record.version = 0; -			record.callsign = config_data.callsign; -			record.serial = config_data.serial; -			record.flight = config_data.log_available() > 0 ? 255 : 0; -			record.status = 0; -			record.state = AltosLib.ao_flight_idle; -			record.gps = gps; -			record.gps_sequence++; -			state = new AltosState (record, state); +			start_link(); +			fetch.update_state(state); +			worked = true;  		} finally { -			if (remote) { -				link.stop_remote(); -				if (record != null) { -					record.rssi = link.rssi(); -					listener_state.battery = link.monitor_battery(); -				} -			} else { -				if (record != null) -					record.rssi = 0; +			stop_link(); +			if (worked) { +				if (remote) +					state.set_rssi(link.rssi(), 0); +				listener_state.battery = link.monitor_battery();  			}  		} -  	}  	public void set_frequency(double in_frequency) { @@ -139,10 +90,6 @@ public class AltosIdleMonitor extends Thread {  		link.abort_reply();  	} -	public void post_state() { -		listener.update(state, listener_state); -	} -  	public void abort() {  		if (isAlive()) {  			interrupt(); @@ -155,18 +102,20 @@ public class AltosIdleMonitor extends Thread {  	}  	public void run() { +		AltosState state = new AltosState();  		try { -			for (;;) { +			while (!link.has_error) {  				try { -					update_state(); -					post_state(); +					link.config_data(); +					update_state(state); +					listener.update(state, listener_state);  				} catch (TimeoutException te) {  				}  				Thread.sleep(1000);  			}  		} catch (InterruptedException ie) { -			link.close();  		} +		link.close();  	}  	public AltosIdleMonitor(AltosIdleMonitorListener in_listener, AltosLink in_link, boolean in_remote) @@ -174,7 +123,7 @@ public class AltosIdleMonitor extends Thread {  		listener = in_listener;  		link = in_link;  		remote = in_remote; -		state = null;  		listener_state = new AltosListenerState(); +		fetch = new AltosIdleFetch(link);  	}  } diff --git a/altoslib/AltosIdleMonitorListener.java b/altoslib/AltosIdleMonitorListener.java index 27e36dea..0b03b897 100644 --- a/altoslib/AltosIdleMonitorListener.java +++ b/altoslib/AltosIdleMonitorListener.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  public interface AltosIdleMonitorListener {  	public void update(AltosState state, AltosListenerState listener_state); diff --git a/altoslib/AltosIgnite.java b/altoslib/AltosIgnite.java index 85905900..42169989 100644 --- a/altoslib/AltosIgnite.java +++ b/altoslib/AltosIgnite.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  import java.io.*;  import java.util.concurrent.*; diff --git a/altoslib/AltosLib.java b/altoslib/AltosLib.java index d6d78ca8..f8a3974a 100644 --- a/altoslib/AltosLib.java +++ b/altoslib/AltosLib.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  import java.util.*;  import java.io.*; @@ -63,6 +63,8 @@ public class AltosLib {  	public static final int AO_LOG_SOFTWARE_VERSION = 9999; +	public final static int	MISSING = 0x7fffffff; +  	/* Added to flag invalid records */  	public static final int AO_LOG_INVALID = -1; diff --git a/altoslib/AltosLine.java b/altoslib/AltosLine.java index b3bd20f9..e5dd13fc 100644 --- a/altoslib/AltosLine.java +++ b/altoslib/AltosLine.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  public class AltosLine {  	public String	line; diff --git a/altoslib/AltosLink.java b/altoslib/AltosLink.java index 159ebfe1..b1bf525b 100644 --- a/altoslib/AltosLink.java +++ b/altoslib/AltosLink.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  import java.io.*;  import java.util.concurrent.*; @@ -32,6 +32,9 @@ public abstract class AltosLink implements Runnable {  	public static boolean debug = false;  	public static void set_debug(boolean in_debug) { debug = in_debug; } + +	public boolean has_error; +  	LinkedList<String> pending_output = new LinkedList<String>();  	public LinkedList<LinkedBlockingQueue<AltosLine>> monitors = new LinkedList<LinkedBlockingQueue<AltosLine>> ();; @@ -107,6 +110,7 @@ public abstract class AltosLink implements Runnable {  				if (c == ERROR) {  					if (debug)  						System.out.printf("ERROR\n"); +					has_error = true;  					add_telem (new AltosLine());  					add_reply (new AltosLine());  					break; @@ -399,7 +403,7 @@ public abstract class AltosLink implements Runnable {  	}  	public double monitor_battery() { -		int monitor_batt = AltosRecord.MISSING; +		int monitor_batt = AltosLib.MISSING;  		if (config_data.has_monitor_battery()) {  			try { @@ -416,12 +420,13 @@ public abstract class AltosLink implements Runnable {  			} catch (TimeoutException te) {  			}  		} -		if (monitor_batt == AltosRecord.MISSING) -			return AltosRecord.MISSING; +		if (monitor_batt == AltosLib.MISSING) +			return AltosLib.MISSING;  		return AltosConvert.cc_battery_to_voltage(monitor_batt);  	}  	public AltosLink() {  		callsign = ""; +		has_error = false;  	}  } diff --git a/altoslib/AltosListenerState.java b/altoslib/AltosListenerState.java index 2fb4673e..01dd7afb 100644 --- a/altoslib/AltosListenerState.java +++ b/altoslib/AltosListenerState.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  public class AltosListenerState {  	public int	crc_errors; @@ -23,6 +23,6 @@ public class AltosListenerState {  	public AltosListenerState() {  		crc_errors = 0; -		battery = AltosRecord.MISSING; +		battery = AltosLib.MISSING;  	}  } diff --git a/altoslib/AltosLog.java b/altoslib/AltosLog.java index 7f69bb65..17b04970 100644 --- a/altoslib/AltosLog.java +++ b/altoslib/AltosLog.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  import java.io.*;  import java.text.ParseException; diff --git a/altoslib/AltosMag.java b/altoslib/AltosMag.java index cb6826f3..56add8f3 100644 --- a/altoslib/AltosMag.java +++ b/altoslib/AltosMag.java @@ -15,13 +15,29 @@   * 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 AltosMag implements Cloneable {  	public int		x;  	public int		y;  	public int		z; +	public boolean parse_string(String line) { +		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(); @@ -30,5 +46,35 @@ public class AltosMag implements Cloneable {  		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) { +		try { +			AltosMag	mag = new AltosMag(link); + +			if (mag != null) +				state.set_mag(mag); +		} catch (TimeoutException te) { +		} catch (InterruptedException ie) { +		} +	} + +	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 diff --git a/altoslib/AltosMma655x.java b/altoslib/AltosMma655x.java new file mode 100644 index 00000000..8dc947db --- /dev/null +++ b/altoslib/AltosMma655x.java @@ -0,0 +1,69 @@ +/* + * 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 org.altusmetrum.altoslib_2; + +import java.util.concurrent.*; + +public class AltosMma655x implements Cloneable { + +	int	accel; + +	public boolean parse_line(String line) { +		String[] items = line.split("\\s+"); +		if (line.startsWith("MMA655X value:")) { +			if (items.length >= 3) +				accel = Integer.parseInt(items[1]); +		} else +			return false; +		return true; +	} + +	public AltosMma655x() { +		accel = AltosLib.MISSING; +	} + +	public AltosMma655x clone() { +		AltosMma655x	n = new AltosMma655x(); + +		n.accel = accel; +		return n; +	} + +	static public void update_state(AltosState state, AltosLink link, AltosConfigData config_data) { +		try { +			AltosMma655x	mma655x = new AltosMma655x(link); + +			if (mma655x != null) +				state.set_accel(mma655x.accel); +		} catch (TimeoutException te) { +		} catch (InterruptedException ie) { +		} +	} + +	public AltosMma655x(AltosLink link) throws InterruptedException, TimeoutException { +		this(); +		link.printf("A\n"); +		for (;;) { +			String line = link.get_reply_no_dialog(5000); +			if (line == null) +				throw new TimeoutException(); +			if (!parse_line(line)) +				break; +		} +	} +} diff --git a/altoslib/AltosMs5607.java b/altoslib/AltosMs5607.java index 606916b7..b29fa9ae 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; @@ -83,10 +85,13 @@ public class AltosMs5607 {  	}  	public boolean parse_line(String line) { +		System.out.printf ("parse %s\n", line);  		String[] items = line.split("\\s+");  		if (line.startsWith("Pressure:")) { -			if (items.length >= 2) +			if (items.length >= 2) {  				raw_pres = Integer.parseInt(items[1]); +				System.out.printf ("raw_pres %d\n", raw_pres); +			}  		} else if (line.startsWith("Temperature:")) {  			if (items.length >= 2)  				raw_temp = Integer.parseInt(items[1]); @@ -94,8 +99,11 @@ public class AltosMs5607 {  			if (items.length >= 3)  				reserved = Integer.parseInt(items[2]);  		} else if (line.startsWith("ms5607 sens:")) { -			if (items.length >= 3) +			System.out.printf ("found sens length %d\n", items.length); +			if (items.length >= 3) {  				sens = Integer.parseInt(items[2]); +				System.out.printf ("sens %d\n", sens); +			}  		} else if (line.startsWith("ms5607 off:")) {  			if (items.length >= 3)  				off = Integer.parseInt(items[2]); @@ -114,15 +122,48 @@ 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) { +		try { +			AltosMs5607	ms5607 = new AltosMs5607(link); + +			if (ms5607 != null) { +				state.set_ms5607(ms5607); +				return; +			} +		} catch (TimeoutException te) { +		} catch (InterruptedException ie) { +		} +	} +  	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)) { +				System.out.printf ("stop parsing at %s\n", line); +				break; +			} +		} +		System.out.printf ("sens %d off %d tcs %d tco %d tref %d tempsens %d crc %d pres %d temp %d\n", +				   sens, off, tcs, tco, tref, tempsens, crc, raw_pres, raw_temp); +		convert(); +		System.out.printf ("pa %d cc %d\n", pa, cc);  	}  } diff --git a/altoslib/AltosMs5607Query.java b/altoslib/AltosMs5607Query.java deleted file mode 100644 index d39dbf26..00000000 --- a/altoslib/AltosMs5607Query.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * 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 org.altusmetrum.altoslib_1; - -import java.util.concurrent.TimeoutException; - -class AltosMs5607Query extends AltosMs5607 { -	public AltosMs5607Query (AltosLink link) throws InterruptedException, TimeoutException { -		link.printf("v\nB\n"); -		for (;;) { -			String line = link.get_reply_no_dialog(5000); -			if (line == null) { -				throw new TimeoutException(); -			} -			if (!parse_line(line)) -				break; -		} -		convert(); -	} -} - diff --git a/altoslib/AltosOrderedMegaRecord.java b/altoslib/AltosOrderedMegaRecord.java deleted file mode 100644 index b20a5bbd..00000000 --- a/altoslib/AltosOrderedMegaRecord.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright © 2010 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 org.altusmetrum.altoslib_1; - -import java.text.ParseException; - -/* - * AltosRecords with an index field so they can be sorted by tick while preserving - * the original ordering for elements with matching ticks - */ -class AltosOrderedMegaRecord extends AltosEepromMega implements Comparable<AltosOrderedMegaRecord> { - -	public int	index; - -	public AltosOrderedMegaRecord(String line, int in_index, int prev_tick, boolean prev_tick_valid) -		throws ParseException { -		super(line); -		if (prev_tick_valid) { -			tick |= (prev_tick & ~0xffff); -			if (tick < prev_tick) { -				if (prev_tick - tick > 0x8000) -					tick += 0x10000; -			} else { -				if (tick - prev_tick > 0x8000) -					tick -= 0x10000; -			} -		} -		index = in_index; -	} - -	public int compareTo(AltosOrderedMegaRecord o) { -		int	tick_diff = tick - o.tick; -		if (tick_diff != 0) -			return tick_diff; -		return index - o.index; -	} -} diff --git a/altoslib/AltosOrderedMetrumRecord.java b/altoslib/AltosOrderedMetrumRecord.java index 02cdf1fe..cc034bff 100644 --- a/altoslib/AltosOrderedMetrumRecord.java +++ b/altoslib/AltosOrderedMetrumRecord.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  import java.text.ParseException; diff --git a/altoslib/AltosOrderedMiniRecord.java b/altoslib/AltosOrderedMiniRecord.java deleted file mode 100644 index 96888941..00000000 --- a/altoslib/AltosOrderedMiniRecord.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright © 2010 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 org.altusmetrum.altoslib_1; - -import java.text.ParseException; - -/* - * AltosRecords with an index field so they can be sorted by tick while preserving - * the original ordering for elements with matching ticks - */ -class AltosOrderedMiniRecord extends AltosEepromMini implements Comparable<AltosOrderedMiniRecord> { - -	public int	index; - -	public AltosOrderedMiniRecord(String line, int in_index, int prev_tick, boolean prev_tick_valid) -		throws ParseException { -		super(line); -		if (prev_tick_valid) { -			tick |= (prev_tick & ~0xffff); -			if (tick < prev_tick) { -				if (prev_tick - tick > 0x8000) -					tick += 0x10000; -			} else { -				if (tick - prev_tick > 0x8000) -					tick -= 0x10000; -			} -		} -		index = in_index; -	} - -	public int compareTo(AltosOrderedMiniRecord o) { -		int	tick_diff = tick - o.tick; -		if (tick_diff != 0) -			return tick_diff; -		return index - o.index; -	} -} diff --git a/altoslib/AltosOrderedRecord.java b/altoslib/AltosOrderedRecord.java deleted file mode 100644 index 63507d39..00000000 --- a/altoslib/AltosOrderedRecord.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright © 2010 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 org.altusmetrum.altoslib_1; - -import java.text.ParseException; - -/* - * AltosRecords with an index field so they can be sorted by tick while preserving - * the original ordering for elements with matching ticks - */ -class AltosOrderedRecord extends AltosEepromRecord implements Comparable<AltosOrderedRecord> { - -	public int	index; - -	public AltosOrderedRecord(String line, int in_index, int prev_tick, boolean prev_tick_valid) -		throws ParseException { -		super(line); -		if (prev_tick_valid) { -			tick |= (prev_tick & ~0xffff); -			if (tick < prev_tick) { -				if (prev_tick - tick > 0x8000) -					tick += 0x10000; -			} else { -				if (tick - prev_tick > 0x8000) -					tick -= 0x10000; -			} -		} -		index = in_index; -	} - -	public AltosOrderedRecord(int in_cmd, int in_tick, int in_a, int in_b, int in_index) { -		super(in_cmd, in_tick, in_a, in_b); -		index = in_index; -	} - -	public String toString() { -		return String.format("%d.%d %04x %04x %04x", -				     cmd, index, tick, a, b); -	} - -	public int compareTo(AltosOrderedRecord o) { -		int	tick_diff = tick - o.tick; -		if (tick_diff != 0) -			return tick_diff; -		return index - o.index; -	} -} - diff --git a/altoslib/AltosParse.java b/altoslib/AltosParse.java index 66bbeed5..ca96a8f9 100644 --- a/altoslib/AltosParse.java +++ b/altoslib/AltosParse.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  import java.text.*; diff --git a/altoslib/AltosPreferences.java b/altoslib/AltosPreferences.java index 088ca3d7..c4051f9b 100644 --- a/altoslib/AltosPreferences.java +++ b/altoslib/AltosPreferences.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  import java.io.*;  import java.util.*; diff --git a/altoslib/AltosPreferencesBackend.java b/altoslib/AltosPreferencesBackend.java index fb8a235a..1ea28b01 100644 --- a/altoslib/AltosPreferencesBackend.java +++ b/altoslib/AltosPreferencesBackend.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  import java.io.File; diff --git a/altoslib/AltosPyro.java b/altoslib/AltosPyro.java index 4dbb4223..0142eac8 100644 --- a/altoslib/AltosPyro.java +++ b/altoslib/AltosPyro.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  import java.util.*;  import java.text.*; diff --git a/altoslib/AltosRecord.java b/altoslib/AltosRecord.java deleted file mode 100644 index 0c8e1db9..00000000 --- a/altoslib/AltosRecord.java +++ /dev/null @@ -1,179 +0,0 @@ -/* - * Copyright © 2010 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 org.altusmetrum.altoslib_1; - -public class AltosRecord implements Comparable <AltosRecord>, Cloneable { - -	public static final int	seen_flight = 1; -	public static final int	seen_sensor = 2; -	public static final int	seen_temp_volt = 4; -	public static final int	seen_deploy = 8; -	public static final int	seen_gps_time = 16; -	public static final int	seen_gps_lat = 32; -	public static final int	seen_gps_lon = 64; -	public static final int	seen_companion = 128; - -	public int	seen; -	 -	public final static int	MISSING = 0x7fffffff; - -	/* Every AltosRecord implementation provides these fields */ -	 -	public int	version; -	public String 	callsign; -	public int	serial; -	public int	flight; -	public int	rssi; -	public int	status; -	public int	state; -	public int	tick; - -	public AltosGPS	gps; -	public int	gps_sequence; - -	public double	time;	/* seconds since boost */ - -	public int	device_type; -	public int	config_major; -	public int	config_minor; -	public int	apogee_delay; -	public int	main_deploy; -	public int	flight_log_max; -	public String	firmware_version; - -	public double	accel_plus_g, accel_minus_g; -	public double	ground_accel; -	public double	accel; - -	public AltosRecordCompanion companion; - -	/* Telemetry sources have these values recorded from the flight computer */ -	public double	kalman_height; -	public double	kalman_speed; -	public double	kalman_acceleration; - -	/* -	 * Abstract methods that convert record data -	 * to standard units: -	 * -	 *	pressure:	Pa -	 *	voltage:	V -	 *	acceleration:	m/s² -	 *	speed:		m/s -	 *	height:		m -	 *	temperature:	°C -	 */ - -	public double pressure() { return MISSING; } -	public double ground_pressure() { return MISSING; } -	public double acceleration() { return MISSING; } - -	public double altitude() { -		double	p = pressure(); - -		if (p == MISSING) -			return MISSING; -		return AltosConvert.pressure_to_altitude(p); -	} - -	public double ground_altitude() { -		double	p = ground_pressure(); - -		if (p == MISSING) -			return MISSING; -		return AltosConvert.pressure_to_altitude(p); -	} - -	public double height() { -		double	g = ground_altitude(); -		double	a = altitude(); - -		if (g == MISSING) -			return MISSING; -		if (a == MISSING) -			return MISSING; -		return a - g; -	} - -	public double battery_voltage() { return MISSING; } - -	public double main_voltage() { return MISSING; } - -	public double drogue_voltage() { return MISSING; } - -	public double temperature() { return MISSING; } -	 -	public AltosIMU imu() { return null; } - -	public AltosMag mag() { return null; } - -	public String state() { -		return AltosLib.state_name(state); -	} - -	public int compareTo(AltosRecord o) { -		return tick - o.tick; -	} - -	public AltosRecord clone() { -		AltosRecord n = new AltosRecord(); -		n.copy(this); -		return n; -	} - -	public void copy(AltosRecord old) { -		seen = old.seen; -		version = old.version; -		callsign = old.callsign; -		serial = old.serial; -		flight = old.flight; -		rssi = old.rssi; -		status = old.status; -		state = old.state; -		tick = old.tick; -		gps = new AltosGPS(old.gps); -		gps_sequence = old.gps_sequence; -		companion = old.companion; -		kalman_acceleration = old.kalman_acceleration; -		kalman_speed = old.kalman_speed; -		kalman_height = old.kalman_height; -	} - -	public AltosRecord() { -		seen = 0; -		version = 0; -		callsign = "N0CALL"; -		serial = MISSING; -		flight = MISSING; -		rssi = 0; -		status = 0; -		state = AltosLib.ao_flight_startup; -		tick = 0; -		gps = null; -		gps_sequence = 0; -		companion = null; - -		kalman_acceleration = MISSING; -		kalman_speed = MISSING; -		kalman_height = MISSING; - -		accel_plus_g = MISSING; -		accel_minus_g = MISSING; -		 -	} -} diff --git a/altoslib/AltosRecordCompanion.java b/altoslib/AltosRecordCompanion.java deleted file mode 100644 index b153fb5b..00000000 --- a/altoslib/AltosRecordCompanion.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright © 2011 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 org.altusmetrum.altoslib_1; - -public class AltosRecordCompanion { -	public final static int	board_id_telescience = 0x0a; -	public final static int	MAX_CHANNELS = 12; - -	public int	tick; -	public int	board_id; -	public int	update_period; -	public int	channels; -	public int[]	companion_data; - -	public AltosRecordCompanion(int in_channels) { -		channels = in_channels; -		if (channels < 0) -			channels = 0; -		if (channels > MAX_CHANNELS) -			channels = MAX_CHANNELS; -		companion_data = new int[channels]; -	} -} diff --git a/altoslib/AltosRecordMM.java b/altoslib/AltosRecordMM.java deleted file mode 100644 index d697111c..00000000 --- a/altoslib/AltosRecordMM.java +++ /dev/null @@ -1,178 +0,0 @@ -/* - * 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 org.altusmetrum.altoslib_1; - -public class AltosRecordMM extends AltosRecord { - -	/* Sensor values */ -	public int	accel; -	public int	pres; -	public int	temp; -	 -	public int	v_batt; -	public int	v_pyro; -	public int	sense[]; - -	public int      ground_accel; -	public int      ground_pres; -	public int      accel_plus_g; -	public int      accel_minus_g; - -	public int	flight_accel; -	public int	flight_vel; -	public int	flight_pres; - -	public final static int	num_sense = 6; - -	public AltosIMU	imu; -	public AltosMag	mag; - -	static double adc(int raw) { -		return raw / 4095.0; -	} - -	public double pressure() { -		if (pres != MISSING) -			return pres; -		return MISSING; -	} - -	public double ground_pressure() { -		if (ground_pres != MISSING) -			return ground_pres; -		return MISSING; -	} - -	public double battery_voltage() { -		if (v_batt != MISSING) -			return 3.3 * adc(v_batt) * (15.0 + 27.0) / 27.0; -		return MISSING; -	} - -	static double pyro(int raw) { -		if (raw != MISSING) -			return 3.3 * adc(raw) * (100.0 + 27.0) / 27.0; -		return MISSING; -	} - -	public double main_voltage() { -		return pyro(sense[5]); -	} - -	public double drogue_voltage() { -		return pyro(sense[4]); -	} - -	public double temperature() { -		if (temp != MISSING) -			return temp / 100.0; -		return MISSING; -	} -	 -	public AltosIMU imu() { return imu; } - -	public AltosMag mag() { return mag; } - -	double accel_counts_per_mss() { -		double	counts_per_g = Math.abs(accel_minus_g - accel_plus_g) / 2; - -		return counts_per_g / 9.80665; -	} - -	public double acceleration() { -		if (ground_accel == MISSING || accel == MISSING) -			return MISSING; - -		if (accel_minus_g == MISSING || accel_plus_g == MISSING) -			return MISSING; - -		return (ground_accel - accel) / accel_counts_per_mss(); -	} - -	public void copy (AltosRecordMM old) { -		super.copy(old); - -		accel = old.accel; -		pres = old.pres; -		temp = old.temp; - -		v_batt = old.v_batt; -		v_pyro = old.v_pyro; -		sense = new int[num_sense]; -		 -		for (int i = 0; i < num_sense; i++) -			sense[i] = old.sense[i]; - -		ground_accel = old.ground_accel; -		ground_pres = old.ground_pres; -		accel_plus_g = old.accel_plus_g; -		accel_minus_g = old.accel_minus_g; -		 -		flight_accel = old.flight_accel; -		flight_vel = old.flight_vel; -		flight_pres = old.flight_pres; - -		imu = old.imu; -		mag = old.mag; -	} - - - -	public AltosRecordMM clone() { -		return new AltosRecordMM(this); -	} - -	void make_missing() { - -		accel = MISSING; -		pres = MISSING; -		temp = MISSING; - -		v_batt = MISSING; -		v_pyro = MISSING; -		sense = new int[num_sense]; -		for (int i = 0; i < num_sense; i++) -			sense[i] = MISSING; - -		ground_accel = MISSING; -		ground_pres = MISSING; -		accel_plus_g = MISSING; -		accel_minus_g = MISSING; - -		flight_accel = 0; -		flight_vel = 0; -		flight_pres = 0; - -		imu = new AltosIMU(); -		mag = new AltosMag(); -	} - -	public AltosRecordMM(AltosRecord old) { -		super.copy(old); -		make_missing(); -	} - -	public AltosRecordMM(AltosRecordMM old) { -		copy(old); -	} - -	public AltosRecordMM() { -		super(); -		make_missing(); -	} -} diff --git a/altoslib/AltosRecordMini.java b/altoslib/AltosRecordMini.java deleted file mode 100644 index dacd89b8..00000000 --- a/altoslib/AltosRecordMini.java +++ /dev/null @@ -1,133 +0,0 @@ -/* - * 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 org.altusmetrum.altoslib_1; - -public class AltosRecordMini extends AltosRecord { - -	/* Sensor values */ -	public int	pres; -	public int	temp; -	 -	public int	sense_a; -	public int	sense_m; -	public int	v_batt; - -	public int      ground_pres; - -	public int	flight_accel; -	public int	flight_vel; -	public int	flight_height; - -	public int	flight_pres; - -	static double adc(int raw) { -		return raw / 4095.0; -	} - -	public double pressure() { -		if (pres != MISSING) -			return pres; -		return MISSING; -	} - -	public double temperature() { -		if (temp != MISSING) -			return temp; -		return MISSING; -	} - -	public double ground_pressure() { -		if (ground_pres != MISSING) -			return ground_pres; -		return MISSING; -	} - -	public double battery_voltage() { -		if (v_batt != MISSING) -			return 3.3 * adc(v_batt) * (15.0 + 27.0) / 27.0; -		return MISSING; -	} - -	static double pyro(int raw) { -		if (raw != MISSING) -			return 3.3 * adc(raw) * (100.0 + 27.0) / 27.0; -		return MISSING; -	} - -	public double main_voltage() { -		return pyro(sense_m); -	} - -	public double apogee_voltage() { -		return pyro(sense_a); -	} - -	public void copy (AltosRecordMini old) { -		super.copy(old); - -		pres = old.pres; -		temp = old.temp; - -		sense_a = old.sense_a; -		sense_m = old.sense_m; -		v_batt = old.v_batt; - -		ground_pres = old.ground_pres; -		 -		flight_accel = old.flight_accel; -		flight_vel = old.flight_vel; -		flight_height = old.flight_height; -		flight_pres = old.flight_pres; -	} - - - -	public AltosRecordMini clone() { -		return new AltosRecordMini(this); -	} - -	void make_missing() { - -		pres = MISSING; - -		sense_a = MISSING; -		sense_m = MISSING; -		v_batt = MISSING; - -		ground_pres = MISSING; - -		flight_accel = 0; -		flight_vel = 0; -		flight_height = 0; -		flight_pres = 0; -	} - -	public AltosRecordMini(AltosRecord old) { -		super.copy(old); -		make_missing(); -	} - -	public AltosRecordMini(AltosRecordMini old) { -		copy(old); -	} - -	public AltosRecordMini() { -		super(); -		make_missing(); -	} -} diff --git a/altoslib/AltosRecordNone.java b/altoslib/AltosRecordNone.java deleted file mode 100644 index a95b6a9c..00000000 --- a/altoslib/AltosRecordNone.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * 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 org.altusmetrum.altoslib_1; - -public class AltosRecordNone extends AltosRecord { - -	public double pressure() { return MISSING; } -	public double ground_pressure() { return MISSING; } -	public double temperature() { return MISSING; } -	public double acceleration() { return MISSING; } - -	public AltosRecordNone(AltosRecord old) { -		super.copy(old); -	} - -	public AltosRecordNone clone() { -		return new AltosRecordNone(this); -	} - -	public AltosRecordNone() { -		super(); -	} -} diff --git a/altoslib/AltosRecordTM.java b/altoslib/AltosRecordTM.java deleted file mode 100644 index c6cf3646..00000000 --- a/altoslib/AltosRecordTM.java +++ /dev/null @@ -1,186 +0,0 @@ -/* - * 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 org.altusmetrum.altoslib_1; - -public class AltosRecordTM extends AltosRecord { - -	/* Sensor values */ -	public int	accel; -	public int	pres; -	public int	temp; -	public int	batt; -	public int	drogue; -	public int	main; - -	public int      ground_accel; -	public int      ground_pres; -	public int      accel_plus_g; -	public int      accel_minus_g; - -	public int	flight_accel; -	public int	flight_vel; -	public int	flight_pres; - -	/* -	 * Values for our MP3H6115A pressure sensor -	 * -	 * From the data sheet: -	 * -	 * Pressure range: 15-115 kPa -	 * Voltage at 115kPa: 2.82 -	 * Output scale: 27mV/kPa -	 * -	 * -	 * 27 mV/kPa * 2047 / 3300 counts/mV = 16.75 counts/kPa -	 * 2.82V * 2047 / 3.3 counts/V = 1749 counts/115 kPa -	 */ - -	static final double counts_per_kPa = 27 * 2047 / 3300; -	static final double counts_at_101_3kPa = 1674.0; - -	static double -	barometer_to_pressure(double count) -	{ -		return ((count / 16.0) / 2047.0 + 0.095) / 0.009 * 1000.0; -	} - -	public double pressure() { -		if (pres == MISSING) -			return MISSING; -		return barometer_to_pressure(pres); -	} - -	public double ground_pressure() { -		if (ground_pres == MISSING) -			return MISSING; -		return barometer_to_pressure(ground_pres); -	} - -	public double battery_voltage() { -		if (batt == MISSING) -			return MISSING; -		return AltosConvert.cc_battery_to_voltage(batt); -	} - -	public double main_voltage() { -		if (main == MISSING) -			return MISSING; -		return AltosConvert.cc_ignitor_to_voltage(main); -	} - -	public double drogue_voltage() { -		if (drogue == MISSING) -			return MISSING; -		return AltosConvert.cc_ignitor_to_voltage(drogue); -	} - -	/* Value for the CC1111 built-in temperature sensor -	 * Output voltage at 0°C = 0.755V -	 * Coefficient = 0.00247V/°C -	 * Reference voltage = 1.25V -	 * -	 * temp = ((value / 32767) * 1.25 - 0.755) / 0.00247 -	 *      = (value - 19791.268) / 32768 * 1.25 / 0.00247 -	 */ - -	static double -	thermometer_to_temperature(double thermo) -	{ -		return (thermo - 19791.268) / 32728.0 * 1.25 / 0.00247; -	} - -	public double temperature() { -		if (temp == MISSING) -			return MISSING; -		return thermometer_to_temperature(temp); -	} - -	double accel_counts_per_mss() { -		double	counts_per_g = Math.abs(accel_minus_g - accel_plus_g) / 2; - -		return counts_per_g / 9.80665; -	} - -	public double acceleration() { -		if (ground_accel == MISSING || accel == MISSING) -			return MISSING; -		return (ground_accel - accel) / accel_counts_per_mss(); -	} - -	public void copy(AltosRecordTM old) { -		super.copy(old); - -		version = old.version; -		callsign = old.callsign; -		serial = old.serial; -		flight = old.flight; -		rssi = old.rssi; -		status = old.status; -		state = old.state; -		tick = old.tick; -		accel = old.accel; -		pres = old.pres; -		temp = old.temp; -		batt = old.batt; -		drogue = old.drogue; -		main = old.main; -		flight_accel = old.flight_accel; -		ground_accel = old.ground_accel; -		flight_vel = old.flight_vel; -		flight_pres = old.flight_pres; -		ground_pres = old.ground_pres; -		accel_plus_g = old.accel_plus_g; - 		accel_minus_g = old.accel_minus_g; -	} - -	public AltosRecordTM clone() { -		return new AltosRecordTM(this); -	} - -	void make_missing() { -		accel = MISSING; -		pres = MISSING; -		temp = MISSING; -		batt = MISSING; -		drogue = MISSING; -		main = MISSING; - -		flight_accel = MISSING; -		flight_vel = MISSING; -		flight_pres = MISSING; - -		ground_accel = MISSING; -		ground_pres = MISSING; -		accel_plus_g = MISSING; -		accel_minus_g = MISSING; -	} - -	public AltosRecordTM(AltosRecord old) { -		super.copy(old); -		make_missing(); -	} - -	public AltosRecordTM(AltosRecordTM old) { -		copy(old); -	} -	 -	public AltosRecordTM() { -		super(); -		make_missing(); -	} -} diff --git a/altoslib/AltosRecordTM2.java b/altoslib/AltosRecordTM2.java index 0cd54f2c..da2d948c 100644 --- a/altoslib/AltosRecordTM2.java +++ b/altoslib/AltosRecordTM2.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  public class AltosRecordTM2 extends AltosRecord { diff --git a/altoslib/AltosReplayReader.java b/altoslib/AltosReplayReader.java index 0c14dee4..f65caaa0 100644 --- a/altoslib/AltosReplayReader.java +++ b/altoslib/AltosReplayReader.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  import java.io.*;  import java.util.*; diff --git a/altoslib/AltosRomconfig.java b/altoslib/AltosRomconfig.java index 0800a2c4..e9d3147e 100644 --- a/altoslib/AltosRomconfig.java +++ b/altoslib/AltosRomconfig.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  import java.io.*; diff --git a/altoslib/AltosSelfFlash.java b/altoslib/AltosSelfFlash.java index 07917d5d..0ae797a0 100644 --- a/altoslib/AltosSelfFlash.java +++ b/altoslib/AltosSelfFlash.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  import java.io.*; diff --git a/altoslib/AltosSensorEMini.java b/altoslib/AltosSensorEMini.java new file mode 100644 index 00000000..cbc65143 --- /dev/null +++ b/altoslib/AltosSensorEMini.java @@ -0,0 +1,70 @@ +/* + * 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 org.altusmetrum.altoslib_2; + +import java.util.concurrent.TimeoutException; + +public class AltosSensorEMini { +	public int	tick; +	public int	apogee; +	public int	main; +	public int	batt; + +	static public void update_state(AltosState state, AltosLink link, AltosConfigData config_data) { +		try { +			AltosSensorEMini	sensor_emini = new AltosSensorEMini(link); + +			if (sensor_emini == null) +				return; +			state.set_battery_voltage(AltosConvert.easy_mini_voltage(sensor_emini.batt)); +			state.set_apogee_voltage(AltosConvert.easy_mini_voltage(sensor_emini.apogee)); +			state.set_main_voltage(AltosConvert.easy_mini_voltage(sensor_emini.main)); +			 +		} catch (TimeoutException te) { +		} catch (InterruptedException ie) { +		} +	} + +	public AltosSensorEMini(AltosLink link) throws InterruptedException, TimeoutException { +		String[] items = link.adc(); +		for (int i = 0; i < items.length;) { +			if (items[i].equals("tick:")) { +				tick = Integer.parseInt(items[i+1]); +				i += 2; +				continue; +			} +			if (items[i].equals("apogee:")) { +				apogee = Integer.parseInt(items[i+1]); +				i += 2; +				continue; +			} +			if (items[i].equals("main:")) { +				main = Integer.parseInt(items[i+1]); +				i += 2; +				continue; +			} +			if (items[i].equals("batt:")) { +				batt = Integer.parseInt(items[i+1]); +				i += 2; +				continue; +			} +			i++; +		} +	} +} + diff --git a/altoslib/AltosSensorMM.java b/altoslib/AltosSensorMM.java index 6d1b61c0..0ef42cf6 100644 --- a/altoslib/AltosSensorMM.java +++ b/altoslib/AltosSensorMM.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  import java.util.concurrent.TimeoutException; diff --git a/altoslib/AltosSensorMega.java b/altoslib/AltosSensorMega.java new file mode 100644 index 00000000..3afb8a64 --- /dev/null +++ b/altoslib/AltosSensorMega.java @@ -0,0 +1,109 @@ +/* + * Copyright © 2013 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 org.altusmetrum.altoslib_2; + +import java.util.concurrent.TimeoutException; + +class AltosSensorMega { +	int		tick; +	int[]		sense; +	int		v_batt; +	int		v_pbatt; +	int		temp; + +	public AltosSensorMega() { +		sense = new int[6]; +	} + +	public AltosSensorMega(AltosLink link) throws InterruptedException, TimeoutException { +		this(); +		String[] items = link.adc(); +		for (int i = 0; i < items.length;) { +			if (items[i].equals("tick:")) { +				tick = Integer.parseInt(items[i+1]); +				i += 2; +				continue; +			} +			if (items[i].equals("A:")) { +				sense[0] = Integer.parseInt(items[i+1]); +				i += 2; +				continue; +			} +			if (items[i].equals("B:")) { +				sense[1] = Integer.parseInt(items[i+1]); +				i += 2; +				continue; +			} +			if (items[i].equals("C:")) { +				sense[2] = Integer.parseInt(items[i+1]); +				i += 2; +				continue; +			} +			if (items[i].equals("D:")) { +				sense[3] = Integer.parseInt(items[i+1]); +				i += 2; +				continue; +			} +			if (items[i].equals("drogue:")) { +				sense[4] = Integer.parseInt(items[i+1]); +				i += 2; +				continue; +			} +			if (items[i].equals("main:")) { +				sense[5] = Integer.parseInt(items[i+1]); +				i += 2; +				continue; +			} +			if (items[i].equals("batt:")) { +				v_batt = Integer.parseInt(items[i+1]); +				i += 2; +				continue; +			} +			if (items[i].equals("pbatt:")) { +				v_pbatt = Integer.parseInt(items[i+1]); +				i += 2; +				continue; +			} +			if (items[i].equals("temp:")) { +				temp = Integer.parseInt(items[i+1]); +				i += 2; +				continue; +			} +			i++; +		} +	} + +	static public void update_state(AltosState state, AltosLink link, AltosConfigData config_data) { +		try { +			AltosSensorMega	sensor_mega = new AltosSensorMega(link); + +			state.set_battery_voltage(AltosConvert.mega_battery_voltage(sensor_mega.v_batt)); +			state.set_apogee_voltage(AltosConvert.mega_pyro_voltage(sensor_mega.sense[4])); +			state.set_main_voltage(AltosConvert.mega_pyro_voltage(sensor_mega.sense[5])); + +			double[]	ignitor_voltage = new double[4]; +			for (int i = 0; i < 4; i++) +				ignitor_voltage[i] = AltosConvert.mega_pyro_voltage(sensor_mega.sense[i]); +			state.set_ignitor_voltage(ignitor_voltage); + +		} catch (TimeoutException te) { +		} catch (InterruptedException ie) { +		} +	} +} + diff --git a/altoslib/AltosSensorMetrum.java b/altoslib/AltosSensorMetrum.java index 686c78a8..4a51d492 100644 --- a/altoslib/AltosSensorMetrum.java +++ b/altoslib/AltosSensorMetrum.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  import java.util.concurrent.TimeoutException; @@ -51,5 +51,16 @@ class AltosSensorMetrum {  			i++;  		}  	} + +	static public void update_state(AltosState state, AltosLink link, AltosConfigData config_data) { +		try { +			AltosSensorMetrum	sensor_metrum = new AltosSensorMetrum(link); +			state.set_battery_voltage(AltosConvert.mega_battery_voltage(sensor_metrum.v_batt)); +			state.set_apogee_voltage(AltosConvert.mega_pyro_voltage(sensor_metrum.sense_a)); +			state.set_main_voltage(AltosConvert.mega_pyro_voltage(sensor_metrum.sense_m)); +		} catch (TimeoutException te) { +		} catch (InterruptedException ie) { +		} +	}  } diff --git a/altoslib/AltosSensorTM.java b/altoslib/AltosSensorTM.java index 754dc5bb..2696a308 100644 --- a/altoslib/AltosSensorTM.java +++ b/altoslib/AltosSensorTM.java @@ -15,14 +15,38 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  import java.util.concurrent.TimeoutException; -class AltosSensorTM extends AltosRecordTM { +public class AltosSensorTM { +	public int	tick; +	public int	accel; +	public int	pres; +	public int	temp; +	public int	batt; +	public int	drogue; +	public int	main; -	public AltosSensorTM(AltosLink link, AltosConfigData config_data) throws InterruptedException, TimeoutException { -		super(); +	static public void update_state(AltosState state, AltosLink link, AltosConfigData config_data) { +		try { +			AltosSensorTM	sensor_tm = new AltosSensorTM(link); + +			if (sensor_tm == null) +				return; +			state.set_accel(sensor_tm.accel); +			state.set_pressure(AltosConvert.barometer_to_pressure(sensor_tm.pres)); +			state.set_temperature(AltosConvert.thermometer_to_temperature(sensor_tm.temp)); +			state.set_battery_voltage(AltosConvert.cc_battery_to_voltage(sensor_tm.batt)); +			state.set_apogee_voltage(AltosConvert.cc_ignitor_to_voltage(sensor_tm.drogue)); +			state.set_main_voltage(AltosConvert.cc_ignitor_to_voltage(sensor_tm.main)); +			 +		} catch (TimeoutException te) { +		} catch (InterruptedException ie) { +		} +	} + +	public AltosSensorTM(AltosLink link) throws InterruptedException, TimeoutException {  		String[] items = link.adc();  		for (int i = 0; i < items.length;) {  			if (items[i].equals("tick:")) { @@ -62,10 +86,6 @@ class AltosSensorTM extends AltosRecordTM {  			}  			i++;  		} -		ground_accel = config_data.accel_cal_plus; -		ground_pres = pres; -		accel_plus_g = config_data.accel_cal_plus; -		accel_minus_g = config_data.accel_cal_minus;  	}  } diff --git a/altoslib/AltosSpeed.java b/altoslib/AltosSpeed.java index 6fb624fb..9b9f7240 100644 --- a/altoslib/AltosSpeed.java +++ b/altoslib/AltosSpeed.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  public class AltosSpeed extends AltosUnits { diff --git a/altoslib/AltosState.java b/altoslib/AltosState.java index 1c400bab..dba9bff8 100644 --- a/altoslib/AltosState.java +++ b/altoslib/AltosState.java @@ -19,10 +19,9 @@   * Track flight state from telemetry or eeprom data stream   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  public class AltosState implements Cloneable { -	public AltosRecord record;  	public static final int set_position = 1;  	public static final int set_gps = 2; @@ -53,9 +52,9 @@ public class AltosState implements Cloneable {  		private double	max_rate = 1000.0;  		void set(double new_value, double time) { -			if (new_value != AltosRecord.MISSING) { +			if (new_value != AltosLib.MISSING) {  				value = new_value; -				if (max_value == AltosRecord.MISSING || value > max_value) { +				if (max_value == AltosLib.MISSING || value > max_value) {  					max_value = value;  				}  				set_time = time; @@ -63,7 +62,7 @@ public class AltosState implements Cloneable {  		}  		void set_filtered(double new_value, double time) { -			if (prev_value != AltosRecord.MISSING) +			if (prev_value != AltosLib.MISSING)  				new_value = (prev_value * 15.0 + new_value) / 16.0;  			set(new_value, time);  		} @@ -81,25 +80,25 @@ public class AltosState implements Cloneable {  		}  		double change() { -			if (value != AltosRecord.MISSING && prev_value != AltosRecord.MISSING) +			if (value != AltosLib.MISSING && prev_value != AltosLib.MISSING)  				return value - prev_value; -			return AltosRecord.MISSING; +			return AltosLib.MISSING;  		}  		double rate() {  			double c = change();  			double t = set_time - prev_set_time; -			if (c != AltosRecord.MISSING && t != 0) +			if (c != AltosLib.MISSING && t != 0)  				return c / t; -			return AltosRecord.MISSING; +			return AltosLib.MISSING;  		}  		double integrate() { -			if (value == AltosRecord.MISSING) -				return AltosRecord.MISSING; -			if (prev_value == AltosRecord.MISSING) -				return AltosRecord.MISSING; +			if (value == AltosLib.MISSING) +				return AltosLib.MISSING; +			if (prev_value == AltosLib.MISSING) +				return AltosLib.MISSING;  			return (value + prev_value) / 2 * (set_time - prev_set_time);  		} @@ -111,13 +110,13 @@ public class AltosState implements Cloneable {  		void set_derivative(AltosValue in) {  			double	n = in.rate(); -			if (n == AltosRecord.MISSING) +			if (n == AltosLib.MISSING)  				return;  			double	p = prev_value;  			double	pt = prev_set_time; -			if (p == AltosRecord.MISSING) { +			if (p == AltosLib.MISSING) {  				p = 0;  				pt = in.time() - 0.01;  			} @@ -150,9 +149,9 @@ public class AltosState implements Cloneable {  		void set_integral(AltosValue in) {  			double	change = in.integrate(); -			if (change != AltosRecord.MISSING) { +			if (change != AltosLib.MISSING) {  				double	prev = prev_value; -				if (prev == AltosRecord.MISSING) +				if (prev == AltosLib.MISSING)  					prev = 0;  				set(prev + change, in.time());  			} @@ -166,10 +165,15 @@ public class AltosState implements Cloneable {  			max_value = old.max_value;  		} +		void finish_update() { +			prev_value = value; +			prev_set_time = set_time; +		} +  		AltosValue() { -			value = AltosRecord.MISSING; -			prev_value = AltosRecord.MISSING; -			max_value = AltosRecord.MISSING; +			value = AltosLib.MISSING; +			prev_value = AltosLib.MISSING; +			max_value = AltosLib.MISSING;  		}  	} @@ -179,45 +183,45 @@ public class AltosState implements Cloneable {  		double value() {  			double v = measured.value(); -			if (v != AltosRecord.MISSING) +			if (v != AltosLib.MISSING)  				return v;  			return computed.value();  		}  		boolean is_measured() { -			return measured.value() != AltosRecord.MISSING; +			return measured.value() != AltosLib.MISSING;  		}  		double max() {  			double m = measured.max(); -			if (m != AltosRecord.MISSING) +			if (m != AltosLib.MISSING)  				return m;  			return computed.max();  		}  		double prev_value() { -			if (measured.value != AltosRecord.MISSING && measured.prev_value != AltosRecord.MISSING) +			if (measured.value != AltosLib.MISSING && measured.prev_value != AltosLib.MISSING)  				return measured.prev_value;  			return computed.prev_value;  		}  		AltosValue altos_value() { -			if (measured.value() != AltosRecord.MISSING) +			if (measured.value() != AltosLib.MISSING)  				return measured;  			return computed;  		}  		double change() {  			double c = measured.change(); -			if (c == AltosRecord.MISSING) +			if (c == AltosLib.MISSING)  				c = computed.change();  			return c;  		}  		double rate() {  			double r = measured.rate(); -			if (r == AltosRecord.MISSING) +			if (r == AltosLib.MISSING)  				r = computed.rate();  			return r;  		} @@ -251,6 +255,11 @@ public class AltosState implements Cloneable {  			computed.copy(old.computed);  		} +		void finish_update() { +			measured.finish_update(); +			computed.finish_update(); +		} +  		AltosCValue() {  			measured = new AltosValue();  			computed = new AltosValue(); @@ -273,8 +282,8 @@ public class AltosState implements Cloneable {  	public int	flight_log_max;  	private double pressure_to_altitude(double p) { -		if (p == AltosRecord.MISSING) -			return AltosRecord.MISSING; +		if (p == AltosLib.MISSING) +			return AltosLib.MISSING;  		return AltosConvert.pressure_to_altitude(p);  	} @@ -334,18 +343,18 @@ public class AltosState implements Cloneable {  	public double altitude() {  		double a = altitude.value(); -		if (a != AltosRecord.MISSING) +		if (a != AltosLib.MISSING)  			return a;  		if (gps != null)  			return gps.alt; -		return AltosRecord.MISSING; +		return AltosLib.MISSING;  	}  	public double max_altitude() {  		double a = altitude.max(); -		if (a != AltosRecord.MISSING) +		if (a != AltosLib.MISSING)  			return a; -		return AltosRecord.MISSING; +		return AltosLib.MISSING;  	}  	public void set_altitude(double new_altitude) { @@ -374,26 +383,26 @@ public class AltosState implements Cloneable {  	public double height() {  		double k = kalman_height.value(); -		if (k != AltosRecord.MISSING) +		if (k != AltosLib.MISSING)  			return k;  		double a = altitude();  		double g = ground_altitude(); -		if (a != AltosRecord.MISSING && g != AltosRecord.MISSING) +		if (a != AltosLib.MISSING && g != AltosLib.MISSING)  			return a - g; -		return AltosRecord.MISSING; +		return AltosLib.MISSING;  	}  	public double max_height() {  		double	k = kalman_height.max(); -		if (k != AltosRecord.MISSING) +		if (k != AltosLib.MISSING)  			return k;  		double a = altitude.max();  		double g = ground_altitude(); -		if (a != AltosRecord.MISSING && g != AltosRecord.MISSING) +		if (a != AltosLib.MISSING && g != AltosLib.MISSING)  			return a - g; -		return AltosRecord.MISSING; +		return AltosLib.MISSING;  	}  	class AltosSpeed extends AltosCValue { @@ -421,10 +430,16 @@ public class AltosState implements Cloneable {  	private AltosSpeed speed;  	public double speed() { +		double v = kalman_speed.value(); +		if (v != AltosLib.MISSING) +			return v;  		return speed.value();  	}  	public double max_speed() { +		double v = kalman_speed.max(); +		if (v != AltosLib.MISSING) +			return v;  		return speed.max();  	} @@ -503,7 +518,7 @@ public class AltosState implements Cloneable {  	public AltosMs5607	baro; -	public AltosRecordCompanion	companion; +	public AltosCompanion	companion;  	public void set_npad(int npad) {  		this.npad = npad; @@ -514,29 +529,27 @@ public class AltosState implements Cloneable {  	}  	public void init() { -		record = null; -  		set = 0;  		received_time = System.currentTimeMillis(); -		time = AltosRecord.MISSING; -		time_change = AltosRecord.MISSING; -		prev_time = AltosRecord.MISSING; -		tick = AltosRecord.MISSING; -		prev_tick = AltosRecord.MISSING; -		boost_tick = AltosRecord.MISSING; +		time = AltosLib.MISSING; +		time_change = AltosLib.MISSING; +		prev_time = AltosLib.MISSING; +		tick = AltosLib.MISSING; +		prev_tick = AltosLib.MISSING; +		boost_tick = AltosLib.MISSING;  		state = AltosLib.ao_flight_invalid; -		flight = AltosRecord.MISSING; +		flight = AltosLib.MISSING;  		landed = false;  		boost = false; -		rssi = AltosRecord.MISSING; +		rssi = AltosLib.MISSING;  		status = 0; -		device_type = AltosRecord.MISSING; -		config_major = AltosRecord.MISSING; -		config_minor = AltosRecord.MISSING; -		apogee_delay = AltosRecord.MISSING; -		main_deploy = AltosRecord.MISSING; -		flight_log_max = AltosRecord.MISSING; +		device_type = AltosLib.MISSING; +		config_major = AltosLib.MISSING; +		config_minor = AltosLib.MISSING; +		apogee_delay = AltosLib.MISSING; +		main_deploy = AltosLib.MISSING; +		flight_log_max = AltosLib.MISSING;  		ground_altitude = new AltosCValue();  		ground_pressure = new AltosGroundPressure(); @@ -545,11 +558,11 @@ public class AltosState implements Cloneable {  		speed = new AltosSpeed();  		acceleration = new AltosAccel(); -		temperature = AltosRecord.MISSING; -		battery_voltage = AltosRecord.MISSING; -		pyro_voltage = AltosRecord.MISSING; -		apogee_voltage = AltosRecord.MISSING; -		main_voltage = AltosRecord.MISSING; +		temperature = AltosLib.MISSING; +		battery_voltage = AltosLib.MISSING; +		pyro_voltage = AltosLib.MISSING; +		apogee_voltage = AltosLib.MISSING; +		main_voltage = AltosLib.MISSING;  		ignitor_voltage = null;  		kalman_height = new AltosValue(); @@ -569,36 +582,48 @@ public class AltosState implements Cloneable {  		ngps = 0;  		from_pad = null; -		elevation = AltosRecord.MISSING; -		range = AltosRecord.MISSING; -		gps_height = AltosRecord.MISSING; +		elevation = AltosLib.MISSING; +		range = AltosLib.MISSING; +		gps_height = AltosLib.MISSING; -		pad_lat = AltosRecord.MISSING; -		pad_lon = AltosRecord.MISSING; -		pad_alt = AltosRecord.MISSING; +		pad_lat = AltosLib.MISSING; +		pad_lon = AltosLib.MISSING; +		pad_alt = AltosLib.MISSING; -		speak_tick = AltosRecord.MISSING; -		speak_altitude = AltosRecord.MISSING; +		speak_tick = AltosLib.MISSING; +		speak_altitude = AltosLib.MISSING;  		callsign = null; -		accel_plus_g = AltosRecord.MISSING; -		accel_minus_g = AltosRecord.MISSING; -		accel = AltosRecord.MISSING; +		accel_plus_g = AltosLib.MISSING; +		accel_minus_g = AltosLib.MISSING; +		accel = AltosLib.MISSING; -		ground_accel = AltosRecord.MISSING; -		ground_accel_avg = AltosRecord.MISSING; +		ground_accel = AltosLib.MISSING; +		ground_accel_avg = AltosLib.MISSING; -		log_format = AltosRecord.MISSING; -		serial = AltosRecord.MISSING; +		log_format = AltosLib.MISSING; +		serial = AltosLib.MISSING;  		baro = null;  		companion = null;  	} -	void copy(AltosState old) { +	void finish_update() { +		prev_tick = tick; -		record = null; +		ground_altitude.finish_update(); +		altitude.finish_update(); +		pressure.finish_update(); +		speed.finish_update(); +		acceleration.finish_update(); + +		kalman_height.finish_update(); +		kalman_speed.finish_update(); +		kalman_acceleration.finish_update(); +	} + +	void copy(AltosState old) {  		if (old == null) {  			init(); @@ -718,25 +743,25 @@ public class AltosState implements Cloneable {  			/* Track consecutive 'good' gps reports, waiting for 10 of them */  			if (state == AltosLib.ao_flight_pad) {  				set_npad(npad+1); -				if (pad_lat != AltosRecord.MISSING) { +				if (pad_lat != AltosLib.MISSING) {  					pad_lat = (pad_lat * 31 + gps.lat) / 32;  					pad_lon = (pad_lon * 31 + gps.lon) / 32;  					pad_alt = (pad_alt * 31 + gps.alt) / 32;  				}  			} -			if (pad_lat == AltosRecord.MISSING) { +			if (pad_lat == AltosLib.MISSING) {  				pad_lat = gps.lat;  				pad_lon = gps.lon;  				pad_alt = gps.alt;  			}  		}  		if (gps.lat != 0 && gps.lon != 0 && -		    pad_lat != AltosRecord.MISSING && -		    pad_lon != AltosRecord.MISSING) +		    pad_lat != AltosLib.MISSING && +		    pad_lon != AltosLib.MISSING)  		{  			double h = height(); -			if (h == AltosRecord.MISSING) +			if (h == AltosLib.MISSING)  				h = 0;  			from_pad = new AltosGreatCircle(pad_lat, pad_lon, 0, gps.lat, gps.lon, h);  			elevation = from_pad.elevation; @@ -746,9 +771,9 @@ public class AltosState implements Cloneable {  	}  	public void set_tick(int new_tick) { -		if (new_tick != AltosRecord.MISSING) { -			if (prev_tick != AltosRecord.MISSING) { -				while (new_tick < prev_tick - 32767) { +		if (new_tick != AltosLib.MISSING) { +			if (prev_tick != AltosLib.MISSING) { +				while (new_tick < prev_tick - 1000) {  					new_tick += 65536;  				}  			} @@ -758,7 +783,7 @@ public class AltosState implements Cloneable {  	}  	public void set_boost_tick(int boost_tick) { -		if (boost_tick != AltosRecord.MISSING) +		if (boost_tick != AltosLib.MISSING)  			this.boost_tick = boost_tick;  	} @@ -799,8 +824,8 @@ public class AltosState implements Cloneable {  	public void set_flight(int flight) {  		/* When the flight changes, reset the state */ -		if (flight != AltosRecord.MISSING) { -			if (this.flight != AltosRecord.MISSING && +		if (flight != AltosLib.MISSING && flight != 0) { +			if (this.flight != AltosLib.MISSING &&  			    this.flight != flight) {  				init();  			} @@ -810,8 +835,8 @@ public class AltosState implements Cloneable {  	public void set_serial(int serial) {  		/* When the serial changes, reset the state */ -		if (serial != AltosRecord.MISSING) { -			if (this.serial != AltosRecord.MISSING && +		if (serial != AltosLib.MISSING) { +			if (this.serial != AltosLib.MISSING &&  			    this.serial != serial) {  				init();  			} @@ -820,13 +845,13 @@ public class AltosState implements Cloneable {  	}  	public int rssi() { -		if (rssi == AltosRecord.MISSING) +		if (rssi == AltosLib.MISSING)  			return 0;  		return rssi;  	}  	public void set_rssi(int rssi, int status) { -		if (rssi != AltosRecord.MISSING) { +		if (rssi != AltosLib.MISSING) {  			this.rssi = rssi;  			this.status = status;  		} @@ -845,9 +870,29 @@ public class AltosState implements Cloneable {  		}  	} -	public void make_baro() { +	public void set_imu(AltosIMU imu) { +		if (imu != null) +			imu = imu.clone(); +		this.imu = imu; +	} + +	public void set_mag(AltosMag mag) { +		this.mag = mag.clone(); +	} + +	public AltosMs5607 make_baro() {  		if (baro == null)  			baro = new AltosMs5607(); +		return baro; +	} + +	public void set_ms5607(AltosMs5607 ms5607) { +		baro = ms5607; + +		if (baro != null) { +			set_pressure(baro.pa); +			set_temperature(baro.cc / 100.0); +		}  	}  	public void set_ms5607(int pres, int temp) { @@ -861,25 +906,25 @@ public class AltosState implements Cloneable {  	public void make_companion (int nchannels) {  		if (companion == null) -			companion = new AltosRecordCompanion(nchannels); +			companion = new AltosCompanion(nchannels);  	} -	public void set_companion(AltosRecordCompanion companion) { +	public void set_companion(AltosCompanion companion) {  		this.companion = companion;  	}  	void update_accel() {  		double	ground = ground_accel; -		if (ground == AltosRecord.MISSING) +		if (ground == AltosLib.MISSING)  			ground = ground_accel_avg; -		if (accel == AltosRecord.MISSING) +		if (accel == AltosLib.MISSING)  			return; -		if (ground == AltosRecord.MISSING) +		if (ground == AltosLib.MISSING)  			return; -		if (accel_plus_g == AltosRecord.MISSING) +		if (accel_plus_g == AltosLib.MISSING)  			return; -		if (accel_minus_g == AltosRecord.MISSING) +		if (accel_minus_g == AltosLib.MISSING)  			return;  		double counts_per_g = (accel_minus_g - accel_plus_g) / 2.0; @@ -888,7 +933,7 @@ public class AltosState implements Cloneable {  	}  	public void set_accel_g(double accel_plus_g, double accel_minus_g) { -		if (accel_plus_g != AltosRecord.MISSING) { +		if (accel_plus_g != AltosLib.MISSING) {  			this.accel_plus_g = accel_plus_g;  			this.accel_minus_g = accel_minus_g;  			update_accel(); @@ -896,17 +941,17 @@ public class AltosState implements Cloneable {  	}  	public void set_ground_accel(double ground_accel) { -		if (ground_accel != AltosRecord.MISSING) { +		if (ground_accel != AltosLib.MISSING) {  			this.ground_accel = ground_accel;  			update_accel();  		}  	}  	public void set_accel(double accel) { -		if (accel != AltosRecord.MISSING) { +		if (accel != AltosLib.MISSING) {  			this.accel = accel;  			if (state == AltosLib.ao_flight_pad) { -				if (ground_accel_avg == AltosRecord.MISSING) +				if (ground_accel_avg == AltosLib.MISSING)  					ground_accel_avg = accel;  				else  					ground_accel_avg = (ground_accel_avg * 7 + accel) / 8; @@ -916,35 +961,35 @@ public class AltosState implements Cloneable {  	}  	public void set_temperature(double temperature) { -		if (temperature != AltosRecord.MISSING) { +		if (temperature != AltosLib.MISSING) {  			this.temperature = temperature;  			set |= set_data;  		}  	}  	public void set_battery_voltage(double battery_voltage) { -		if (battery_voltage != AltosRecord.MISSING) { +		if (battery_voltage != AltosLib.MISSING) {  			this.battery_voltage = battery_voltage;  			set |= set_data;  		}  	}  	public void set_pyro_voltage(double pyro_voltage) { -		if (pyro_voltage != AltosRecord.MISSING) { +		if (pyro_voltage != AltosLib.MISSING) {  			this.pyro_voltage = pyro_voltage;  			set |= set_data;  		}  	}  	public void set_apogee_voltage(double apogee_voltage) { -		if (apogee_voltage != AltosRecord.MISSING) { +		if (apogee_voltage != AltosLib.MISSING) {  			this.apogee_voltage = apogee_voltage;  			set |= set_data;  		}  	}  	public void set_main_voltage(double main_voltage) { -		if (main_voltage != AltosRecord.MISSING) { +		if (main_voltage != AltosLib.MISSING) {  			this.main_voltage = main_voltage;  			set |= set_data;  		} @@ -955,17 +1000,17 @@ public class AltosState implements Cloneable {  	}  	public double time_since_boost() { -		if (tick == AltosRecord.MISSING) +		if (tick == AltosLib.MISSING)  			return 0.0; -		if (boost_tick != AltosRecord.MISSING) { +		if (boost_tick != AltosLib.MISSING) {  			return (tick - boost_tick) / 100.0;  		}  		return tick / 100.0;  	}  	public boolean valid() { -		return tick != AltosRecord.MISSING && serial != AltosRecord.MISSING; +		return tick != AltosLib.MISSING && serial != AltosLib.MISSING;  	}  	public AltosGPS make_temp_gps(boolean sats) { @@ -993,56 +1038,6 @@ public class AltosState implements Cloneable {  		return s;  	} - -	public void init (AltosRecord cur, AltosState prev_state) { - -		System.out.printf ("init\n"); -		if (cur == null) -			cur = new AltosRecord(); - -		record = cur; - -		/* Discard previous state if it was for a different board */ -		if (prev_state != null && prev_state.serial != cur.serial) -			prev_state = null; - -		copy(prev_state); - -		set_ground_altitude(cur.ground_altitude()); -		set_altitude(cur.altitude()); - -		set_kalman(cur.kalman_height, cur.kalman_speed, cur.kalman_acceleration); - -		received_time = System.currentTimeMillis(); - -		set_temperature(cur.temperature()); -		set_apogee_voltage(cur.drogue_voltage()); -		set_main_voltage(cur.main_voltage()); -		set_battery_voltage(cur.battery_voltage()); - -		set_pressure(cur.pressure()); - -		set_tick(cur.tick); -		set_state(cur.state); - -		set_accel_g (cur.accel_minus_g, cur.accel_plus_g); -		set_ground_accel(cur.ground_accel); -		set_accel (cur.accel); - -		if (cur.gps_sequence != gps_sequence) -			set_gps(cur.gps, cur.gps_sequence); - -	} - -	public AltosState(AltosRecord cur) { -		init(cur, null); -	} - -	public AltosState (AltosRecord cur, AltosState prev) { -		init(cur, prev); -	} - -  	public AltosState () {  		init();  	} diff --git a/altoslib/AltosStateIterable.java b/altoslib/AltosStateIterable.java index db4a2568..6d637419 100644 --- a/altoslib/AltosStateIterable.java +++ b/altoslib/AltosStateIterable.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  import java.io.*;  import java.util.*; diff --git a/altoslib/AltosStateUpdate.java b/altoslib/AltosStateUpdate.java index 50460e21..ec4f7609 100644 --- a/altoslib/AltosStateUpdate.java +++ b/altoslib/AltosStateUpdate.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  public interface AltosStateUpdate {  	public void	update_state(AltosState state); diff --git a/altoslib/AltosTelemetry.java b/altoslib/AltosTelemetry.java index 642e7421..03ca9f80 100644 --- a/altoslib/AltosTelemetry.java +++ b/altoslib/AltosTelemetry.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  import java.text.*; diff --git a/altoslib/AltosTelemetryConfiguration.java b/altoslib/AltosTelemetryConfiguration.java index 4c9bdd1f..e5d444dd 100644 --- a/altoslib/AltosTelemetryConfiguration.java +++ b/altoslib/AltosTelemetryConfiguration.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  public class AltosTelemetryConfiguration extends AltosTelemetryStandard { diff --git a/altoslib/AltosTelemetryFile.java b/altoslib/AltosTelemetryFile.java index 33872688..7566d946 100644 --- a/altoslib/AltosTelemetryFile.java +++ b/altoslib/AltosTelemetryFile.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  import java.io.*;  import java.util.*; @@ -72,16 +72,14 @@ public class AltosTelemetryFile extends AltosStateIterable {  		/* Find boost tick */  		AltosState	state = start.clone(); -		System.out.printf ("Searching for boost\n");  		for (AltosTelemetry telem : telems) {  			telem.update_state(state); +			state.finish_update();  			if (state.state != AltosLib.ao_flight_invalid && state.state >= AltosLib.ao_flight_boost) { -				System.out.printf ("boost tick %d\n", state.tick);  				start.set_boost_tick(state.tick);  				break;  			}  		} -		System.out.printf ("Found boost %d\n", start.boost_tick);  	}  	public Iterator<AltosState> iterator() { @@ -91,6 +89,7 @@ public class AltosTelemetryFile extends AltosStateIterable {  		while (i.hasNext() && !state.valid()) {  			AltosTelemetry	t = i.next();  			t.update_state(state); +			state.finish_update();  		}  		return new AltosTelemetryIterator(state, i);  	} diff --git a/altoslib/AltosTelemetryIterable.java b/altoslib/AltosTelemetryIterable.java index b7489f77..8075b8a3 100644 --- a/altoslib/AltosTelemetryIterable.java +++ b/altoslib/AltosTelemetryIterable.java @@ -15,17 +15,78 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  import java.io.*;  import java.util.*;  import java.text.*; +class AltosTelemetryOrdered implements Comparable<AltosTelemetryOrdered> { +	AltosTelemetry	telem; +	int		index; +	int		tick; + +	public int compareTo(AltosTelemetryOrdered o) { +		int	tick_diff = tick - o.tick; + +		if (tick_diff != 0) +			return tick_diff; +		return index - o.index; +	} + +	AltosTelemetryOrdered (AltosTelemetry telem, int index, int tick) { +		this.telem = telem; +		this.index = index; +		this.tick = tick; +	} +} + +class AltosTelemetryOrderedIterator implements Iterator<AltosTelemetry> { +	TreeSet<AltosTelemetryOrdered>	olist; +	Iterator<AltosTelemetryOrdered>	oiterator; + +	public AltosTelemetryOrderedIterator(Iterable<AltosTelemetry> telems) { +		olist = new TreeSet<AltosTelemetryOrdered>(); + +		int	tick = 0; +		int	index = 0; +		boolean	first = true; + +		for (AltosTelemetry e : telems) { +			int	t = e.tick; +			if (first) +				tick = t; +			else { +				while (t < tick - 32767) +					t += 65536; +				tick = t; +			} +			olist.add(new AltosTelemetryOrdered(e, index++, tick)); +			first = false; +		} + +		oiterator = olist.iterator(); +	} + +	public boolean hasNext() { +		return oiterator.hasNext(); +	} + +	public AltosTelemetry next() { +		return oiterator.next().telem; +	} + +	public void remove () { +	} +} +  public class AltosTelemetryIterable implements Iterable<AltosTelemetry> {  	LinkedList<AltosTelemetry>	telems;  	public Iterator<AltosTelemetry> iterator () { -		return telems.iterator(); +		if (telems == null) +			telems = new LinkedList<AltosTelemetry>(); +		return new AltosTelemetryOrderedIterator(telems);  	}  	public AltosTelemetryIterable (FileInputStream input) { diff --git a/altoslib/AltosTelemetryLegacy.java b/altoslib/AltosTelemetryLegacy.java index 95cbbeed..132b9e80 100644 --- a/altoslib/AltosTelemetryLegacy.java +++ b/altoslib/AltosTelemetryLegacy.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  import java.text.*; @@ -264,34 +264,34 @@ public class AltosTelemetryLegacy extends AltosTelemetry {  		AltosTelemetryMap	map = new AltosTelemetryMap(words, i);  		callsign = map.get_string(AO_TELEM_CALL, "N0CALL"); -		serial = map.get_int(AO_TELEM_SERIAL, AltosRecord.MISSING); -		flight = map.get_int(AO_TELEM_FLIGHT, AltosRecord.MISSING); -		rssi = map.get_int(AO_TELEM_RSSI, AltosRecord.MISSING); +		serial = map.get_int(AO_TELEM_SERIAL, AltosLib.MISSING); +		flight = map.get_int(AO_TELEM_FLIGHT, AltosLib.MISSING); +		rssi = map.get_int(AO_TELEM_RSSI, AltosLib.MISSING);  		state = AltosLib.state(map.get_string(AO_TELEM_STATE, "invalid"));  		tick = map.get_int(AO_TELEM_TICK, 0);  		/* raw sensor values */ -		accel = map.get_int(AO_TELEM_RAW_ACCEL, AltosRecord.MISSING); -		pres = map.get_int(AO_TELEM_RAW_BARO, AltosRecord.MISSING); -		temp = map.get_int(AO_TELEM_RAW_THERMO, AltosRecord.MISSING); -		batt = map.get_int(AO_TELEM_RAW_BATT, AltosRecord.MISSING); -		apogee = map.get_int(AO_TELEM_RAW_DROGUE, AltosRecord.MISSING); -		main = map.get_int(AO_TELEM_RAW_MAIN, AltosRecord.MISSING); +		accel = map.get_int(AO_TELEM_RAW_ACCEL, AltosLib.MISSING); +		pres = map.get_int(AO_TELEM_RAW_BARO, AltosLib.MISSING); +		temp = map.get_int(AO_TELEM_RAW_THERMO, AltosLib.MISSING); +		batt = map.get_int(AO_TELEM_RAW_BATT, AltosLib.MISSING); +		apogee = map.get_int(AO_TELEM_RAW_DROGUE, AltosLib.MISSING); +		main = map.get_int(AO_TELEM_RAW_MAIN, AltosLib.MISSING);  		/* sensor calibration information */ -		ground_accel = map.get_int(AO_TELEM_CAL_ACCEL_GROUND, AltosRecord.MISSING); -		ground_pres = map.get_int(AO_TELEM_CAL_BARO_GROUND, AltosRecord.MISSING); -		accel_plus_g = map.get_int(AO_TELEM_CAL_ACCEL_PLUS, AltosRecord.MISSING); -		accel_minus_g = map.get_int(AO_TELEM_CAL_ACCEL_MINUS, AltosRecord.MISSING); +		ground_accel = map.get_int(AO_TELEM_CAL_ACCEL_GROUND, AltosLib.MISSING); +		ground_pres = map.get_int(AO_TELEM_CAL_BARO_GROUND, AltosLib.MISSING); +		accel_plus_g = map.get_int(AO_TELEM_CAL_ACCEL_PLUS, AltosLib.MISSING); +		accel_minus_g = map.get_int(AO_TELEM_CAL_ACCEL_MINUS, AltosLib.MISSING);  		/* flight computer values */ -		kalman_acceleration = map.get_double(AO_TELEM_KALMAN_ACCEL, AltosRecord.MISSING, 1/16.0); -		kalman_speed = map.get_double(AO_TELEM_KALMAN_SPEED, AltosRecord.MISSING, 1/16.0); -		kalman_height = map.get_int(AO_TELEM_KALMAN_HEIGHT, AltosRecord.MISSING); +		kalman_acceleration = map.get_double(AO_TELEM_KALMAN_ACCEL, AltosLib.MISSING, 1/16.0); +		kalman_speed = map.get_double(AO_TELEM_KALMAN_SPEED, AltosLib.MISSING, 1/16.0); +		kalman_height = map.get_int(AO_TELEM_KALMAN_HEIGHT, AltosLib.MISSING); -		flight_accel = map.get_int(AO_TELEM_ADHOC_ACCEL, AltosRecord.MISSING); -		flight_vel = map.get_int(AO_TELEM_ADHOC_SPEED, AltosRecord.MISSING); -		flight_pres = map.get_int(AO_TELEM_ADHOC_BARO, AltosRecord.MISSING); +		flight_accel = map.get_int(AO_TELEM_ADHOC_ACCEL, AltosLib.MISSING); +		flight_vel = map.get_int(AO_TELEM_ADHOC_SPEED, AltosLib.MISSING); +		flight_pres = map.get_int(AO_TELEM_ADHOC_BARO, AltosLib.MISSING);  		if (map.has(AO_TELEM_GPS_STATE))  			gps = new AltosGPS(map); @@ -363,13 +363,13 @@ public class AltosTelemetryLegacy extends AltosTelemetry {  			kalman_speed = ((short) flight_vel) / 16.0;  			kalman_acceleration = flight_accel / 16.0;  			kalman_height = flight_pres; -			flight_vel = AltosRecord.MISSING; -			flight_pres = AltosRecord.MISSING; -			flight_accel = AltosRecord.MISSING; +			flight_vel = AltosLib.MISSING; +			flight_pres = AltosLib.MISSING; +			flight_accel = AltosLib.MISSING;  		} else { -			kalman_speed = AltosRecord.MISSING; -			kalman_acceleration = AltosRecord.MISSING; -			kalman_height = AltosRecord.MISSING; +			kalman_speed = AltosLib.MISSING; +			kalman_acceleration = AltosLib.MISSING; +			kalman_height = AltosLib.MISSING;  		}  		AltosParse.word(words[i++], "gp:"); @@ -480,16 +480,16 @@ public class AltosTelemetryLegacy extends AltosTelemetry {  			kalman_acceleration = int16(5);  			kalman_speed = int16(9);  			kalman_height = int16(13); -			flight_accel = AltosRecord.MISSING; -			flight_vel = AltosRecord.MISSING; -			flight_pres = AltosRecord.MISSING; +			flight_accel = AltosLib.MISSING; +			flight_vel = AltosLib.MISSING; +			flight_pres = AltosLib.MISSING;  		} else {  			flight_accel = int16(5);  			flight_vel = uint32(9);  			flight_pres = int16(13); -			kalman_acceleration = AltosRecord.MISSING; -			kalman_speed = AltosRecord.MISSING; -			kalman_height = AltosRecord.MISSING; +			kalman_acceleration = AltosLib.MISSING; +			kalman_speed = AltosLib.MISSING; +			kalman_height = AltosLib.MISSING;  		}  		gps = null; @@ -544,7 +544,7 @@ public class AltosTelemetryLegacy extends AltosTelemetry {  		state.set_pressure(AltosConvert.barometer_to_pressure(pres));  		state.set_accel_g(accel_plus_g, accel_minus_g);  		state.set_accel(accel); -		if (kalman_height != AltosRecord.MISSING) +		if (kalman_height != AltosLib.MISSING)  			state.set_kalman(kalman_height, kalman_speed, kalman_acceleration);  		state.set_temperature(AltosConvert.thermometer_to_temperature(temp));  		state.set_battery_voltage(AltosConvert.cc_battery_to_voltage(batt)); diff --git a/altoslib/AltosTelemetryLocation.java b/altoslib/AltosTelemetryLocation.java index 50b9dcfc..6e880914 100644 --- a/altoslib/AltosTelemetryLocation.java +++ b/altoslib/AltosTelemetryLocation.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  public class AltosTelemetryLocation extends AltosTelemetryStandard { diff --git a/altoslib/AltosTelemetryMap.java b/altoslib/AltosTelemetryMap.java index 7cca98b0..37883a1c 100644 --- a/altoslib/AltosTelemetryMap.java +++ b/altoslib/AltosTelemetryMap.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  import java.text.*;  import java.util.HashMap; diff --git a/altoslib/AltosTelemetryMegaData.java b/altoslib/AltosTelemetryMegaData.java index 5e6cd580..f5cc01d0 100644 --- a/altoslib/AltosTelemetryMegaData.java +++ b/altoslib/AltosTelemetryMegaData.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  public class AltosTelemetryMegaData extends AltosTelemetryStandard {  	int	state; diff --git a/altoslib/AltosTelemetryMegaSensor.java b/altoslib/AltosTelemetryMegaSensor.java index 7c385cfd..23b67af8 100644 --- a/altoslib/AltosTelemetryMegaSensor.java +++ b/altoslib/AltosTelemetryMegaSensor.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  public class AltosTelemetryMegaSensor extends AltosTelemetryStandard {  	int	accel; diff --git a/altoslib/AltosTelemetryMetrumData.java b/altoslib/AltosTelemetryMetrumData.java index d419ab80..b6239971 100644 --- a/altoslib/AltosTelemetryMetrumData.java +++ b/altoslib/AltosTelemetryMetrumData.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  public class AltosTelemetryMetrumData extends AltosTelemetryStandard { diff --git a/altoslib/AltosTelemetryMetrumSensor.java b/altoslib/AltosTelemetryMetrumSensor.java index 59d34dba..72d2f564 100644 --- a/altoslib/AltosTelemetryMetrumSensor.java +++ b/altoslib/AltosTelemetryMetrumSensor.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  public class AltosTelemetryMetrumSensor extends AltosTelemetryStandard { diff --git a/altoslib/AltosTelemetryRaw.java b/altoslib/AltosTelemetryRaw.java index 9ef7787e..dbe70fe9 100644 --- a/altoslib/AltosTelemetryRaw.java +++ b/altoslib/AltosTelemetryRaw.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  public class AltosTelemetryRaw extends AltosTelemetryStandard {  	public AltosTelemetryRaw(int[] bytes) { diff --git a/altoslib/AltosTelemetryReader.java b/altoslib/AltosTelemetryReader.java index b1cc009c..dfbad5fb 100644 --- a/altoslib/AltosTelemetryReader.java +++ b/altoslib/AltosTelemetryReader.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  import java.text.*;  import java.io.*; @@ -24,7 +24,6 @@ import java.util.concurrent.*;  public class AltosTelemetryReader extends AltosFlightReader {  	AltosLink	link;  	AltosLog	log; -	AltosRecord	previous;  	double		frequency;  	int		telemetry;  	AltosState	state = null; @@ -49,7 +48,6 @@ public class AltosTelemetryReader extends AltosFlightReader {  	}  	public void reset() { -		previous = null;  		flush();  	} @@ -126,7 +124,6 @@ public class AltosTelemetryReader extends AltosFlightReader {  		try {  			log = new AltosLog(link);  			name = link.name; -			previous = null;  			telem = new LinkedBlockingQueue<AltosLine>();  			frequency = AltosPreferences.frequency(link.serial);  			set_frequency(frequency); diff --git a/altoslib/AltosTelemetryRecord.java b/altoslib/AltosTelemetryRecord.java index a744e61a..a46c1a33 100644 --- a/altoslib/AltosTelemetryRecord.java +++ b/altoslib/AltosTelemetryRecord.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  import java.text.*;  public abstract class AltosTelemetryRecord { diff --git a/altoslib/AltosTelemetryRecordCompanion.java b/altoslib/AltosTelemetryRecordCompanion.java index 2231df13..9c38ba0a 100644 --- a/altoslib/AltosTelemetryRecordCompanion.java +++ b/altoslib/AltosTelemetryRecordCompanion.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  public class AltosTelemetryRecordCompanion extends AltosTelemetryRecordRaw { diff --git a/altoslib/AltosTelemetryRecordConfiguration.java b/altoslib/AltosTelemetryRecordConfiguration.java index 47fc3488..48474fa5 100644 --- a/altoslib/AltosTelemetryRecordConfiguration.java +++ b/altoslib/AltosTelemetryRecordConfiguration.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  public class AltosTelemetryRecordConfiguration extends AltosTelemetryRecordRaw { diff --git a/altoslib/AltosTelemetryRecordGeneral.java b/altoslib/AltosTelemetryRecordGeneral.java index 08cd6065..258678c7 100644 --- a/altoslib/AltosTelemetryRecordGeneral.java +++ b/altoslib/AltosTelemetryRecordGeneral.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  import java.text.*; diff --git a/altoslib/AltosTelemetryRecordLegacy.java b/altoslib/AltosTelemetryRecordLegacy.java index f2d3f868..5f86d671 100644 --- a/altoslib/AltosTelemetryRecordLegacy.java +++ b/altoslib/AltosTelemetryRecordLegacy.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  import java.text.*; @@ -236,34 +236,34 @@ public class AltosTelemetryRecordLegacy extends AltosTelemetryRecord {  		AltosTelemetryMap	map = new AltosTelemetryMap(words, i);  		record.callsign = map.get_string(AO_TELEM_CALL, "N0CALL"); -		record.serial = map.get_int(AO_TELEM_SERIAL, AltosRecord.MISSING); -		record.flight = map.get_int(AO_TELEM_FLIGHT, AltosRecord.MISSING); -		record.rssi = map.get_int(AO_TELEM_RSSI, AltosRecord.MISSING); +		record.serial = map.get_int(AO_TELEM_SERIAL, AltosLib.MISSING); +		record.flight = map.get_int(AO_TELEM_FLIGHT, AltosLib.MISSING); +		record.rssi = map.get_int(AO_TELEM_RSSI, AltosLib.MISSING);  		record.state = AltosLib.state(map.get_string(AO_TELEM_STATE, "invalid"));  		record.tick = map.get_int(AO_TELEM_TICK, 0);  		/* raw sensor values */ -		record.accel = map.get_int(AO_TELEM_RAW_ACCEL, AltosRecord.MISSING); -		record.pres = map.get_int(AO_TELEM_RAW_BARO, AltosRecord.MISSING); -		record.temp = map.get_int(AO_TELEM_RAW_THERMO, AltosRecord.MISSING); -		record.batt = map.get_int(AO_TELEM_RAW_BATT, AltosRecord.MISSING); -		record.drogue = map.get_int(AO_TELEM_RAW_DROGUE, AltosRecord.MISSING); -		record.main = map.get_int(AO_TELEM_RAW_MAIN, AltosRecord.MISSING); +		record.accel = map.get_int(AO_TELEM_RAW_ACCEL, AltosLib.MISSING); +		record.pres = map.get_int(AO_TELEM_RAW_BARO, AltosLib.MISSING); +		record.temp = map.get_int(AO_TELEM_RAW_THERMO, AltosLib.MISSING); +		record.batt = map.get_int(AO_TELEM_RAW_BATT, AltosLib.MISSING); +		record.drogue = map.get_int(AO_TELEM_RAW_DROGUE, AltosLib.MISSING); +		record.main = map.get_int(AO_TELEM_RAW_MAIN, AltosLib.MISSING);  		/* sensor calibration information */ -		record.ground_accel = map.get_int(AO_TELEM_CAL_ACCEL_GROUND, AltosRecord.MISSING); -		record.ground_pres = map.get_int(AO_TELEM_CAL_BARO_GROUND, AltosRecord.MISSING); -		record.accel_plus_g = map.get_int(AO_TELEM_CAL_ACCEL_PLUS, AltosRecord.MISSING); -		record.accel_minus_g = map.get_int(AO_TELEM_CAL_ACCEL_MINUS, AltosRecord.MISSING); +		record.ground_accel = map.get_int(AO_TELEM_CAL_ACCEL_GROUND, AltosLib.MISSING); +		record.ground_pres = map.get_int(AO_TELEM_CAL_BARO_GROUND, AltosLib.MISSING); +		record.accel_plus_g = map.get_int(AO_TELEM_CAL_ACCEL_PLUS, AltosLib.MISSING); +		record.accel_minus_g = map.get_int(AO_TELEM_CAL_ACCEL_MINUS, AltosLib.MISSING);  		/* flight computer values */ -		record.kalman_acceleration = map.get_double(AO_TELEM_KALMAN_ACCEL, AltosRecord.MISSING, 1/16.0); -		record.kalman_speed = map.get_double(AO_TELEM_KALMAN_SPEED, AltosRecord.MISSING, 1/16.0); -		record.kalman_height = map.get_int(AO_TELEM_KALMAN_HEIGHT, AltosRecord.MISSING); +		record.kalman_acceleration = map.get_double(AO_TELEM_KALMAN_ACCEL, AltosLib.MISSING, 1/16.0); +		record.kalman_speed = map.get_double(AO_TELEM_KALMAN_SPEED, AltosLib.MISSING, 1/16.0); +		record.kalman_height = map.get_int(AO_TELEM_KALMAN_HEIGHT, AltosLib.MISSING); -		record.flight_accel = map.get_int(AO_TELEM_ADHOC_ACCEL, AltosRecord.MISSING); -		record.flight_vel = map.get_int(AO_TELEM_ADHOC_SPEED, AltosRecord.MISSING); -		record.flight_pres = map.get_int(AO_TELEM_ADHOC_BARO, AltosRecord.MISSING); +		record.flight_accel = map.get_int(AO_TELEM_ADHOC_ACCEL, AltosLib.MISSING); +		record.flight_vel = map.get_int(AO_TELEM_ADHOC_SPEED, AltosLib.MISSING); +		record.flight_pres = map.get_int(AO_TELEM_ADHOC_BARO, AltosLib.MISSING);  		if (map.has(AO_TELEM_GPS_STATE)) {  		record.gps = new AltosGPS(map); @@ -337,9 +337,9 @@ public class AltosTelemetryRecordLegacy extends AltosTelemetryRecord {  			record.kalman_speed = ((short) record.flight_vel) / 16.0;  			record.kalman_acceleration = record.flight_accel / 16.0;  			record.kalman_height = record.flight_pres; -			record.flight_vel = AltosRecord.MISSING; -			record.flight_pres = AltosRecord.MISSING; -			record.flight_accel = AltosRecord.MISSING; +			record.flight_vel = AltosLib.MISSING; +			record.flight_pres = AltosLib.MISSING; +			record.flight_accel = AltosLib.MISSING;  		}  		AltosParse.word(words[i++], "gp:"); @@ -458,16 +458,16 @@ public class AltosTelemetryRecordLegacy extends AltosTelemetryRecord {  			record.kalman_acceleration = int16(5);  			record.kalman_speed = int16(9);  			record.kalman_height = int16(13); -			record.flight_accel = AltosRecord.MISSING; -			record.flight_vel = AltosRecord.MISSING; -			record.flight_pres = AltosRecord.MISSING; +			record.flight_accel = AltosLib.MISSING; +			record.flight_vel = AltosLib.MISSING; +			record.flight_pres = AltosLib.MISSING;  		} else {  			record.flight_accel = int16(5);  			record.flight_vel = uint32(9);  			record.flight_pres = int16(13); -			record.kalman_acceleration = AltosRecord.MISSING; -			record.kalman_speed = AltosRecord.MISSING; -			record.kalman_height = AltosRecord.MISSING; +			record.kalman_acceleration = AltosLib.MISSING; +			record.kalman_speed = AltosLib.MISSING; +			record.kalman_height = AltosLib.MISSING;  		}  		record.gps = null; diff --git a/altoslib/AltosTelemetryRecordLocation.java b/altoslib/AltosTelemetryRecordLocation.java index 0236d291..0eea8361 100644 --- a/altoslib/AltosTelemetryRecordLocation.java +++ b/altoslib/AltosTelemetryRecordLocation.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  public class AltosTelemetryRecordLocation extends AltosTelemetryRecordRaw { diff --git a/altoslib/AltosTelemetryRecordMegaData.java b/altoslib/AltosTelemetryRecordMegaData.java index a484ef4e..ee9442d2 100644 --- a/altoslib/AltosTelemetryRecordMegaData.java +++ b/altoslib/AltosTelemetryRecordMegaData.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  public class AltosTelemetryRecordMegaData extends AltosTelemetryRecordRaw { diff --git a/altoslib/AltosTelemetryRecordMegaSensor.java b/altoslib/AltosTelemetryRecordMegaSensor.java index 2a4b17a4..234cda27 100644 --- a/altoslib/AltosTelemetryRecordMegaSensor.java +++ b/altoslib/AltosTelemetryRecordMegaSensor.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  public class AltosTelemetryRecordMegaSensor extends AltosTelemetryRecordRaw { diff --git a/altoslib/AltosTelemetryRecordMetrumData.java b/altoslib/AltosTelemetryRecordMetrumData.java index 70179b28..ade2494f 100644 --- a/altoslib/AltosTelemetryRecordMetrumData.java +++ b/altoslib/AltosTelemetryRecordMetrumData.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  public class AltosTelemetryRecordMetrumData extends AltosTelemetryRecordRaw { diff --git a/altoslib/AltosTelemetryRecordMetrumSensor.java b/altoslib/AltosTelemetryRecordMetrumSensor.java index e41242c5..d6d29b15 100644 --- a/altoslib/AltosTelemetryRecordMetrumSensor.java +++ b/altoslib/AltosTelemetryRecordMetrumSensor.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  public class AltosTelemetryRecordMetrumSensor extends AltosTelemetryRecordRaw { diff --git a/altoslib/AltosTelemetryRecordMini.java b/altoslib/AltosTelemetryRecordMini.java index 75a66c16..3c290208 100644 --- a/altoslib/AltosTelemetryRecordMini.java +++ b/altoslib/AltosTelemetryRecordMini.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  public class AltosTelemetryRecordMini extends AltosTelemetryRecordRaw { diff --git a/altoslib/AltosTelemetryRecordRaw.java b/altoslib/AltosTelemetryRecordRaw.java index f94789bb..93d0ca50 100644 --- a/altoslib/AltosTelemetryRecordRaw.java +++ b/altoslib/AltosTelemetryRecordRaw.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  public class AltosTelemetryRecordRaw extends AltosTelemetryRecord {  	int[]	bytes; diff --git a/altoslib/AltosTelemetryRecordSatellite.java b/altoslib/AltosTelemetryRecordSatellite.java index 9835389b..5de16ab4 100644 --- a/altoslib/AltosTelemetryRecordSatellite.java +++ b/altoslib/AltosTelemetryRecordSatellite.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  public class AltosTelemetryRecordSatellite extends AltosTelemetryRecordRaw {  	int		channels; diff --git a/altoslib/AltosTelemetryRecordSensor.java b/altoslib/AltosTelemetryRecordSensor.java index e0e92c13..d1d9dd7e 100644 --- a/altoslib/AltosTelemetryRecordSensor.java +++ b/altoslib/AltosTelemetryRecordSensor.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  public class AltosTelemetryRecordSensor extends AltosTelemetryRecordRaw { @@ -70,7 +70,7 @@ public class AltosTelemetryRecordSensor extends AltosTelemetryRecordRaw {  		if (type == packet_type_TM_sensor)  			next.accel = accel;  		else -			next.accel = AltosRecord.MISSING; +			next.accel = AltosLib.MISSING;  		next.pres = pres;  		next.temp = temp;  		next.batt = v_batt; @@ -78,8 +78,8 @@ public class AltosTelemetryRecordSensor extends AltosTelemetryRecordRaw {  			next.drogue = sense_d;  			next.main = sense_m;  		} else { -			next.drogue = AltosRecord.MISSING; -			next.main = AltosRecord.MISSING; +			next.drogue = AltosLib.MISSING; +			next.main = AltosLib.MISSING;  		}  		next.kalman_acceleration = acceleration / 16.0; @@ -92,9 +92,9 @@ public class AltosTelemetryRecordSensor extends AltosTelemetryRecordRaw {  			next.accel_plus_g = accel_plus_g;  			next.accel_minus_g = accel_minus_g;  		} else { -			next.ground_accel = AltosRecord.MISSING; -			next.accel_plus_g = AltosRecord.MISSING; -			next.accel_minus_g = AltosRecord.MISSING; +			next.ground_accel = AltosLib.MISSING; +			next.accel_plus_g = AltosLib.MISSING; +			next.accel_minus_g = AltosLib.MISSING;  		}  		next.seen |= AltosRecord.seen_sensor | AltosRecord.seen_temp_volt; diff --git a/altoslib/AltosTelemetrySatellite.java b/altoslib/AltosTelemetrySatellite.java index bd94740f..fde3d86d 100644 --- a/altoslib/AltosTelemetrySatellite.java +++ b/altoslib/AltosTelemetrySatellite.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  public class AltosTelemetrySatellite extends AltosTelemetryStandard {  	int		channels; diff --git a/altoslib/AltosTelemetrySensor.java b/altoslib/AltosTelemetrySensor.java index f89e56c3..e1106440 100644 --- a/altoslib/AltosTelemetrySensor.java +++ b/altoslib/AltosTelemetrySensor.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  public class AltosTelemetrySensor extends AltosTelemetryStandard { diff --git a/altoslib/AltosTelemetryStandard.java b/altoslib/AltosTelemetryStandard.java index fa86bf8e..fbcc970c 100644 --- a/altoslib/AltosTelemetryStandard.java +++ b/altoslib/AltosTelemetryStandard.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  public abstract class AltosTelemetryStandard extends AltosTelemetry {  	int[]	bytes; diff --git a/altoslib/AltosTemperature.java b/altoslib/AltosTemperature.java index 2749eac0..0105fe53 100644 --- a/altoslib/AltosTemperature.java +++ b/altoslib/AltosTemperature.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  public class AltosTemperature extends AltosUnits { diff --git a/altoslib/AltosUnits.java b/altoslib/AltosUnits.java index b8b3254c..ee74f916 100644 --- a/altoslib/AltosUnits.java +++ b/altoslib/AltosUnits.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  public abstract class AltosUnits { diff --git a/altoslib/AltosUnitsListener.java b/altoslib/AltosUnitsListener.java index 61a181a4..1e3ad655 100644 --- a/altoslib/AltosUnitsListener.java +++ b/altoslib/AltosUnitsListener.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2;  public interface AltosUnitsListener {  	public void units_changed(boolean imperial_units); diff --git a/altoslib/Makefile.am b/altoslib/Makefile.am index 87d4d898..62159bcc 100644 --- a/altoslib/Makefile.am +++ b/altoslib/Makefile.am @@ -10,20 +10,9 @@ SRC=.  altoslibdir = $(datadir)/java -record_files = \ -	AltosEepromRecord.java \ -	AltosEepromTeleScience.java \ -	AltosRecordCompanion.java \ -	AltosRecordIterable.java \ -	AltosRecord.java \ -	AltosRecordNone.java \ -	AltosRecordTM.java \ -	AltosRecordMM.java \ -	AltosRecordMini.java -  altoslib_JAVA = \ -	$(record_files) \  	AltosLib.java \ +	AltosCompanion.java \  	AltosConfigData.java \  	AltosConfigValues.java \  	AltosConvert.java \ @@ -45,31 +34,32 @@ altoslib_JAVA = \  	AltosFlightReader.java \  	AltosFrequency.java \  	AltosGPS.java \ -	AltosGPSQuery.java \  	AltosGPSSat.java \  	AltosGreatCircle.java \  	AltosHexfile.java \ +	AltosIdle.java \ +	AltosIdleFetch.java \  	AltosIdleMonitor.java \  	AltosIdleMonitorListener.java \  	AltosIgnite.java \  	AltosIMU.java \ -	AltosIMUQuery.java \  	AltosLine.java \  	AltosLink.java \  	AltosListenerState.java \  	AltosLog.java \ +	AltosMag.java \ +	AltosMma655x.java \  	AltosMs5607.java \ -	AltosMs5607Query.java \ -	AltosOrderedRecord.java \ -	AltosOrderedMegaRecord.java \ -	AltosOrderedMiniRecord.java \  	AltosParse.java \  	AltosPreferences.java \  	AltosPreferencesBackend.java \  	AltosReplayReader.java \  	AltosRomconfig.java \  	AltosSensorMM.java \ +	AltosSensorEMini.java \  	AltosSensorTM.java \ +	AltosSensorMega.java \ +	AltosSensorMetrum.java \  	AltosState.java \  	AltosStateIterable.java \  	AltosStateUpdate.java \ diff --git a/altosui/Altos.java b/altosui/Altos.java index d25736bf..07280b4a 100644 --- a/altosui/Altos.java +++ b/altosui/Altos.java @@ -20,7 +20,7 @@ package altosui;  import java.awt.*;  import libaltosJNI.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  import org.altusmetrum.altosuilib_1.*;  public class Altos extends AltosUILib { diff --git a/altosui/AltosAscent.java b/altosui/AltosAscent.java index 20474f52..1d9af546 100644 --- a/altosui/AltosAscent.java +++ b/altosui/AltosAscent.java @@ -19,7 +19,7 @@ package altosui;  import java.awt.*;  import javax.swing.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  public class AltosAscent extends JComponent implements AltosFlightDisplay {  	GridBagLayout	layout; @@ -179,7 +179,7 @@ public class AltosAscent extends JComponent implements AltosFlightDisplay {  		void reset() {  			value.setText("");  			max_value.setText(""); -			max = AltosRecord.MISSING; +			max = AltosLib.MISSING;  		}  		void set_font() { @@ -189,12 +189,12 @@ public class AltosAscent extends JComponent implements AltosFlightDisplay {  		}  		void show(AltosUnits units, double v) { -			if (v == AltosRecord.MISSING) { +			if (v == AltosLib.MISSING) {  				value.setText("Missing");  				max_value.setText("Missing");  			} else {  				value.setText(units.show(8, v)); -				if (v > max || max == AltosRecord.MISSING) { +				if (v > max || max == AltosLib.MISSING) {  					max_value.setText(units.show(8, v));  					max = v;  				} @@ -308,7 +308,7 @@ public class AltosAscent extends JComponent implements AltosFlightDisplay {  	class Lat extends AscentValue {  		void show (AltosState state, AltosListenerState listener_state) { -			if (state.gps != null && state.gps.connected && state.gps.lat != AltosRecord.MISSING) +			if (state.gps != null && state.gps.connected && state.gps.lat != AltosLib.MISSING)  				show(pos(state.gps.lat,"N", "S"));  			else  				show("???"); @@ -322,7 +322,7 @@ public class AltosAscent extends JComponent implements AltosFlightDisplay {  	class Lon extends AscentValue {  		void show (AltosState state, AltosListenerState listener_state) { -			if (state.gps != null && state.gps.connected && state.gps.lon != AltosRecord.MISSING) +			if (state.gps != null && state.gps.connected && state.gps.lon != AltosLib.MISSING)  				show(pos(state.gps.lon,"E", "W"));  			else  				show("???"); @@ -365,11 +365,11 @@ public class AltosAscent extends JComponent implements AltosFlightDisplay {  			lon.hide();  		}  		height.show(state, listener_state); -		if (state.main_voltage != AltosRecord.MISSING) +		if (state.main_voltage != AltosLib.MISSING)  			main.show(state, listener_state);  		else  			main.hide(); -		if (state.apogee_voltage != AltosRecord.MISSING) +		if (state.apogee_voltage != AltosLib.MISSING)  			apogee.show(state, listener_state);  		else  			apogee.hide(); diff --git a/altosui/AltosBTKnown.java b/altosui/AltosBTKnown.java index 1d42365b..a1652ec4 100644 --- a/altosui/AltosBTKnown.java +++ b/altosui/AltosBTKnown.java @@ -17,7 +17,7 @@  package altosui;  import java.util.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  import org.altusmetrum.altosuilib_1.*;  public class AltosBTKnown implements Iterable<AltosBTDevice> { diff --git a/altosui/AltosCSV.java b/altosui/AltosCSV.java index bcff393f..7598eca0 100644 --- a/altosui/AltosCSV.java +++ b/altosui/AltosCSV.java @@ -19,7 +19,7 @@ package altosui;  import java.io.*;  import java.util.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  public class AltosCSV implements AltosWriter {  	File			name; @@ -222,7 +222,7 @@ public class AltosCSV implements AltosWriter {  	}  	void write_companion(AltosState state) { -		AltosRecordCompanion companion = state.companion; +		AltosCompanion companion = state.companion;  		int	channels_written = 0;  		if (companion == null) { diff --git a/altosui/AltosCSVUI.java b/altosui/AltosCSVUI.java index 4b48bdf6..c41ea74b 100644 --- a/altosui/AltosCSVUI.java +++ b/altosui/AltosCSVUI.java @@ -21,7 +21,7 @@ import java.awt.*;  import java.awt.event.*;  import javax.swing.*;  import java.io.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  import org.altusmetrum.altosuilib_1.*;  public class AltosCSVUI diff --git a/altosui/AltosCompanionInfo.java b/altosui/AltosCompanionInfo.java index 1ed2c425..1f446700 100644 --- a/altosui/AltosCompanionInfo.java +++ b/altosui/AltosCompanionInfo.java @@ -19,7 +19,7 @@ package altosui;  import java.awt.*;  import javax.swing.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  public class AltosCompanionInfo extends JTable {  	private AltosFlightInfoTableModel model; @@ -70,13 +70,13 @@ public class AltosCompanionInfo extends JTable {  		model.clear();  	} -	AltosRecordCompanion	companion; +	AltosCompanion	companion;  	public String board_name() {  		if (companion == null)  			return "None";  		switch (companion.board_id) { -		case AltosRecordCompanion.board_id_telescience: +		case AltosCompanion.board_id_telescience:  			return "TeleScience";  		default:  			return String.format("%02x\n", companion.board_id); diff --git a/altosui/AltosConfig.java b/altosui/AltosConfig.java index 4927d3f8..a6e6094f 100644 --- a/altosui/AltosConfig.java +++ b/altosui/AltosConfig.java @@ -22,7 +22,7 @@ import javax.swing.*;  import java.io.*;  import java.util.concurrent.*;  import java.text.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  import org.altusmetrum.altosuilib_1.*;  public class AltosConfig implements ActionListener { diff --git a/altosui/AltosConfigFreqUI.java b/altosui/AltosConfigFreqUI.java index c90b168f..555af3b6 100644 --- a/altosui/AltosConfigFreqUI.java +++ b/altosui/AltosConfigFreqUI.java @@ -21,7 +21,7 @@ import java.awt.*;  import java.awt.event.*;  import javax.swing.*;  import java.util.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  import org.altusmetrum.altosuilib_1.*;  class AltosEditFreqUI extends AltosUIDialog implements ActionListener { diff --git a/altosui/AltosConfigPyroUI.java b/altosui/AltosConfigPyroUI.java index 3cac56c3..2f5c199d 100644 --- a/altosui/AltosConfigPyroUI.java +++ b/altosui/AltosConfigPyroUI.java @@ -21,7 +21,7 @@ import java.awt.*;  import java.awt.event.*;  import javax.swing.*;  import javax.swing.event.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  import org.altusmetrum.altosuilib_1.*;  public class AltosConfigPyroUI diff --git a/altosui/AltosConfigTD.java b/altosui/AltosConfigTD.java index 16c9e357..f879ff88 100644 --- a/altosui/AltosConfigTD.java +++ b/altosui/AltosConfigTD.java @@ -21,7 +21,7 @@ import java.awt.event.*;  import javax.swing.*;  import java.io.*;  import java.util.concurrent.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  import org.altusmetrum.altosuilib_1.*;  public class AltosConfigTD implements ActionListener { diff --git a/altosui/AltosConfigTDUI.java b/altosui/AltosConfigTDUI.java index 125780a9..b5a6cd7c 100644 --- a/altosui/AltosConfigTDUI.java +++ b/altosui/AltosConfigTDUI.java @@ -21,7 +21,7 @@ import java.awt.*;  import java.awt.event.*;  import javax.swing.*;  import javax.swing.event.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  import org.altusmetrum.altosuilib_1.*;  public class AltosConfigTDUI diff --git a/altosui/AltosConfigUI.java b/altosui/AltosConfigUI.java index 9723e660..a6d27977 100644 --- a/altosui/AltosConfigUI.java +++ b/altosui/AltosConfigUI.java @@ -21,7 +21,7 @@ import java.awt.*;  import java.awt.event.*;  import javax.swing.*;  import javax.swing.event.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  import org.altusmetrum.altosuilib_1.*;  public class AltosConfigUI diff --git a/altosui/AltosDataChooser.java b/altosui/AltosDataChooser.java index af6c245b..0d0b0b0a 100644 --- a/altosui/AltosDataChooser.java +++ b/altosui/AltosDataChooser.java @@ -20,7 +20,7 @@ package altosui;  import javax.swing.*;  import javax.swing.filechooser.FileNameExtensionFilter;  import java.io.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  import org.altusmetrum.altosuilib_1.*;  public class AltosDataChooser extends JFileChooser { diff --git a/altosui/AltosDescent.java b/altosui/AltosDescent.java index e85717bb..77776ff2 100644 --- a/altosui/AltosDescent.java +++ b/altosui/AltosDescent.java @@ -19,7 +19,7 @@ package altosui;  import java.awt.*;  import javax.swing.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  public class AltosDescent extends JComponent implements AltosFlightDisplay {  	GridBagLayout	layout; @@ -278,7 +278,7 @@ public class AltosDescent extends JComponent implements AltosFlightDisplay {  	class Lat extends DescentValue {  		void show (AltosState state, AltosListenerState listener_state) { -			if (state.gps != null && state.gps.connected && state.gps.lat != AltosRecord.MISSING) +			if (state.gps != null && state.gps.connected && state.gps.lat != AltosLib.MISSING)  				show(pos(state.gps.lat,"N", "S"));  			else  				show("???"); @@ -292,7 +292,7 @@ public class AltosDescent extends JComponent implements AltosFlightDisplay {  	class Lon extends DescentValue {  		void show (AltosState state, AltosListenerState listener_state) { -			if (state.gps != null && state.gps.connected && state.gps.lon != AltosRecord.MISSING) +			if (state.gps != null && state.gps.connected && state.gps.lon != AltosLib.MISSING)  				show(pos(state.gps.lon,"W", "E"));  			else  				show("???"); @@ -427,11 +427,11 @@ public class AltosDescent extends JComponent implements AltosFlightDisplay {  			lat.hide();  			lon.hide();  		} -		if (state.main_voltage != AltosRecord.MISSING) +		if (state.main_voltage != AltosLib.MISSING)  			main.show(state, listener_state);  		else  			main.hide(); -		if (state.apogee_voltage != AltosRecord.MISSING) +		if (state.apogee_voltage != AltosLib.MISSING)  			apogee.show(state, listener_state);  		else  			apogee.hide(); diff --git a/altosui/AltosDisplayThread.java b/altosui/AltosDisplayThread.java index c894c2d0..37f6adf9 100644 --- a/altosui/AltosDisplayThread.java +++ b/altosui/AltosDisplayThread.java @@ -21,7 +21,7 @@ import java.awt.*;  import javax.swing.*;  import java.io.*;  import java.text.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  public class AltosDisplayThread extends Thread { diff --git a/altosui/AltosEepromDelete.java b/altosui/AltosEepromDelete.java index e81a35d1..9984d1a2 100644 --- a/altosui/AltosEepromDelete.java +++ b/altosui/AltosEepromDelete.java @@ -21,7 +21,7 @@ import java.awt.event.*;  import javax.swing.*;  import java.io.*;  import java.util.concurrent.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  public class AltosEepromDelete implements Runnable {  	AltosEepromList		flights; diff --git a/altosui/AltosEepromDownload.java b/altosui/AltosEepromDownload.java index 931b55fd..c3bdd159 100644 --- a/altosui/AltosEepromDownload.java +++ b/altosui/AltosEepromDownload.java @@ -23,7 +23,7 @@ import java.io.*;  import java.util.*;  import java.text.*;  import java.util.concurrent.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  public class AltosEepromDownload implements Runnable { @@ -61,9 +61,9 @@ public class AltosEepromDownload implements Runnable {  			AltosGPS		gps = state.gps;  			if (gps != null && -			    gps.year != AltosRecord.MISSING && -			    gps.month != AltosRecord.MISSING && -			    gps.day != AltosRecord.MISSING) +			    gps.year != AltosLib.MISSING && +			    gps.month != AltosLib.MISSING && +			    gps.day != AltosLib.MISSING)  			{  				eeprom_name = new AltosFile(gps.year, gps.month, gps.day,  							    state.serial, state.flight, "eeprom"); diff --git a/altosui/AltosEepromList.java b/altosui/AltosEepromList.java index a63d173d..258c421a 100644 --- a/altosui/AltosEepromList.java +++ b/altosui/AltosEepromList.java @@ -21,7 +21,7 @@ import java.io.*;  import java.util.*;  import java.text.*;  import java.util.concurrent.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  /*   * Temporary structure to hold the list of stored flights; diff --git a/altosui/AltosEepromManage.java b/altosui/AltosEepromManage.java index 7a721196..b2d8a130 100644 --- a/altosui/AltosEepromManage.java +++ b/altosui/AltosEepromManage.java @@ -21,7 +21,7 @@ import java.awt.event.*;  import javax.swing.*;  import java.io.*;  import java.util.concurrent.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  import org.altusmetrum.altosuilib_1.*;  public class AltosEepromManage implements ActionListener { diff --git a/altosui/AltosEepromSelect.java b/altosui/AltosEepromSelect.java index a451aa3a..8f86eebf 100644 --- a/altosui/AltosEepromSelect.java +++ b/altosui/AltosEepromSelect.java @@ -21,7 +21,7 @@ import javax.swing.*;  import javax.swing.border.*;  import java.awt.*;  import java.awt.event.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  import org.altusmetrum.altosuilib_1.*;  class AltosEepromItem implements ActionListener { diff --git a/altosui/AltosFlashUI.java b/altosui/AltosFlashUI.java index f4e52218..6eccface 100644 --- a/altosui/AltosFlashUI.java +++ b/altosui/AltosFlashUI.java @@ -23,7 +23,7 @@ import javax.swing.*;  import javax.swing.filechooser.FileNameExtensionFilter;  import java.io.*;  import java.util.concurrent.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  import org.altusmetrum.altosuilib_1.*;  public class AltosFlashUI diff --git a/altosui/AltosFlightDisplay.java b/altosui/AltosFlightDisplay.java index 4f4c158e..289ddd01 100644 --- a/altosui/AltosFlightDisplay.java +++ b/altosui/AltosFlightDisplay.java @@ -17,7 +17,7 @@  package altosui; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  public interface AltosFlightDisplay {  	void reset(); diff --git a/altosui/AltosFlightStats.java b/altosui/AltosFlightStats.java index f278012f..11a3f1a9 100644 --- a/altosui/AltosFlightStats.java +++ b/altosui/AltosFlightStats.java @@ -18,7 +18,7 @@  package altosui;  import java.io.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  public class AltosFlightStats {  	double		max_height; @@ -77,7 +77,7 @@ public class AltosFlightStats {  	}  	double boost_time(AltosStateIterable states) { -		double boost_time = AltosRecord.MISSING; +		double boost_time = AltosLib.MISSING;  		AltosState	state = null;  		for (AltosState s : states) { @@ -90,7 +90,7 @@ public class AltosFlightStats {  		if (state == null)  			return 0; -		if (boost_time == AltosRecord.MISSING) +		if (boost_time == AltosLib.MISSING)  			boost_time = state.time;  		return boost_time;  	} @@ -101,21 +101,21 @@ public class AltosFlightStats {  		double		end_time = 0;  		double		landed_time = landed_time(states); -		year = month = day = AltosRecord.MISSING; -		hour = minute = second = AltosRecord.MISSING; -		serial = flight = AltosRecord.MISSING; -		lat = lon = AltosRecord.MISSING; +		year = month = day = AltosLib.MISSING; +		hour = minute = second = AltosLib.MISSING; +		serial = flight = AltosLib.MISSING; +		lat = lon = AltosLib.MISSING;  		has_gps = false;  		has_other_adc = false;  		has_rssi = false;  		for (AltosState state : states) { -			if (serial == AltosRecord.MISSING && state.serial != AltosRecord.MISSING) +			if (serial == AltosLib.MISSING && state.serial != AltosLib.MISSING)  				serial = state.serial; -			if (flight == AltosRecord.MISSING && state.flight != AltosRecord.MISSING) +			if (flight == AltosLib.MISSING && state.flight != AltosLib.MISSING)  				flight = state.flight; -			if (state.battery_voltage != AltosRecord.MISSING) +			if (state.battery_voltage != AltosLib.MISSING)  				has_other_adc = true; -			if (state.rssi != AltosRecord.MISSING) +			if (state.rssi != AltosLib.MISSING)  				has_rssi = true;  			end_time = state.time;  			if (state.time >= boost_time && state.state < Altos.ao_flight_boost) diff --git a/altosui/AltosFlightStatsTable.java b/altosui/AltosFlightStatsTable.java index b5a92683..db875b3b 100644 --- a/altosui/AltosFlightStatsTable.java +++ b/altosui/AltosFlightStatsTable.java @@ -19,7 +19,7 @@ package altosui;  import java.awt.*;  import javax.swing.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  public class AltosFlightStatsTable extends JComponent {  	GridBagLayout	layout; @@ -76,15 +76,15 @@ public class AltosFlightStatsTable extends JComponent {  		int y = 0;  		new FlightStat(layout, y++, "Serial", String.format("%d", stats.serial));  		new FlightStat(layout, y++, "Flight", String.format("%d", stats.flight)); -		if (stats.year != AltosRecord.MISSING && stats.hour != AltosRecord.MISSING) +		if (stats.year != AltosLib.MISSING && stats.hour != AltosLib.MISSING)  			new FlightStat(layout, y++, "Date/Time",  				       String.format("%04d-%02d-%02d", stats.year, stats.month, stats.day),  				       String.format("%02d:%02d:%02d UTC", stats.hour, stats.minute, stats.second));  		else { -			if (stats.year != AltosRecord.MISSING) +			if (stats.year != AltosLib.MISSING)  				new FlightStat(layout, y++, "Date",  					       String.format("%04d-%02d-%02d", stats.year, stats.month, stats.day)); -			if (stats.hour != AltosRecord.MISSING) +			if (stats.hour != AltosLib.MISSING)  				new FlightStat(layout, y++, "Time",  					       String.format("%02d:%02d:%02d UTC", stats.hour, stats.minute, stats.second));  		} @@ -95,7 +95,7 @@ public class AltosFlightStatsTable extends JComponent {  			       String.format("%5.0f m/s", stats.max_speed),  			       String.format("%5.0f mph", AltosConvert.meters_to_mph(stats.max_speed)),  			       String.format("Mach %4.1f", AltosConvert.meters_to_mach(stats.max_speed))); -		if (stats.max_acceleration != AltosRecord.MISSING) { +		if (stats.max_acceleration != AltosLib.MISSING) {  			new FlightStat(layout, y++, "Maximum boost acceleration",  				       String.format("%5.0f m/s²", stats.max_acceleration),  				       String.format("%5.0f ft/s²", AltosConvert.meters_to_feet(stats.max_acceleration)), diff --git a/altosui/AltosFlightStatus.java b/altosui/AltosFlightStatus.java index 6383e5b9..9d575e4c 100644 --- a/altosui/AltosFlightStatus.java +++ b/altosui/AltosFlightStatus.java @@ -19,7 +19,7 @@ package altosui;  import java.awt.*;  import javax.swing.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  public class AltosFlightStatus extends JComponent implements AltosFlightDisplay {  	GridBagLayout	layout; @@ -76,7 +76,7 @@ public class AltosFlightStatus extends JComponent implements AltosFlightDisplay  	class Serial extends FlightValue {  		void show(AltosState state, AltosListenerState listener_state) { -			if (state.serial == AltosRecord.MISSING) +			if (state.serial == AltosLib.MISSING)  				value.setText("none");  			else  				value.setText(String.format("%d", state.serial)); @@ -90,7 +90,7 @@ public class AltosFlightStatus extends JComponent implements AltosFlightDisplay  	class Flight extends FlightValue {  		void show(AltosState state, AltosListenerState listener_state) { -			if (state.flight == AltosRecord.MISSING) +			if (state.flight == AltosLib.MISSING)  				value.setText("none");  			else  				value.setText(String.format("%d", state.flight)); diff --git a/altosui/AltosFlightStatusTableModel.java b/altosui/AltosFlightStatusTableModel.java index 6a327841..08154fda 100644 --- a/altosui/AltosFlightStatusTableModel.java +++ b/altosui/AltosFlightStatusTableModel.java @@ -27,7 +27,7 @@ import java.util.*;  import java.text.*;  import java.util.prefs.*;  import java.util.concurrent.LinkedBlockingQueue; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  public class AltosFlightStatusTableModel extends AbstractTableModel {  	private String[] columnNames = { diff --git a/altosui/AltosFlightStatusUpdate.java b/altosui/AltosFlightStatusUpdate.java index 962a08f7..7821a777 100644 --- a/altosui/AltosFlightStatusUpdate.java +++ b/altosui/AltosFlightStatusUpdate.java @@ -18,7 +18,7 @@  package altosui;  import java.awt.event.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  public class AltosFlightStatusUpdate implements ActionListener { diff --git a/altosui/AltosFlightUI.java b/altosui/AltosFlightUI.java index 1c450ce3..c151177e 100644 --- a/altosui/AltosFlightUI.java +++ b/altosui/AltosFlightUI.java @@ -21,7 +21,7 @@ import java.awt.*;  import java.awt.event.*;  import javax.swing.*;  import java.util.concurrent.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  import org.altusmetrum.altosuilib_1.*;  public class AltosFlightUI extends AltosUIFrame implements AltosFlightDisplay, AltosFontListener { diff --git a/altosui/AltosFreqList.java b/altosui/AltosFreqList.java index 7464ac3e..917ac364 100644 --- a/altosui/AltosFreqList.java +++ b/altosui/AltosFreqList.java @@ -18,7 +18,7 @@  package altosui;  import javax.swing.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  import org.altusmetrum.altosuilib_1.*;  public class AltosFreqList extends JComboBox { diff --git a/altosui/AltosGraph.java b/altosui/AltosGraph.java index a73e3fd8..e6cd7bd8 100644 --- a/altosui/AltosGraph.java +++ b/altosui/AltosGraph.java @@ -22,7 +22,7 @@ import java.util.ArrayList;  import java.awt.*;  import javax.swing.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  import org.altusmetrum.altosuilib_1.*;  import org.jfree.ui.*; diff --git a/altosui/AltosGraphDataPoint.java b/altosui/AltosGraphDataPoint.java index 85a19b00..d8191f5d 100644 --- a/altosui/AltosGraphDataPoint.java +++ b/altosui/AltosGraphDataPoint.java @@ -18,7 +18,7 @@  package altosui;  import org.altusmetrum.altosuilib_1.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  public class AltosGraphDataPoint implements AltosUIDataPoint { @@ -49,7 +49,7 @@ public class AltosGraphDataPoint implements AltosUIDataPoint {  	}  	public double y(int index) throws AltosUIDataMissing { -		double y = AltosRecord.MISSING; +		double y = AltosLib.MISSING;  		switch (index) {  		case data_height:  			y = state.height(); @@ -100,7 +100,7 @@ public class AltosGraphDataPoint implements AltosUIDataPoint {  			y = state.pressure();  			break;  		} -		if (y == AltosRecord.MISSING) +		if (y == AltosLib.MISSING)  			throw new AltosUIDataMissing(index);  		return y;  	} diff --git a/altosui/AltosGraphDataSet.java b/altosui/AltosGraphDataSet.java index 1e469c8a..4e6c46d1 100644 --- a/altosui/AltosGraphDataSet.java +++ b/altosui/AltosGraphDataSet.java @@ -20,7 +20,7 @@ package altosui;  import java.lang.*;  import java.io.*;  import java.util.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  import org.altusmetrum.altosuilib_1.*;  class AltosGraphIterator implements Iterator<AltosUIDataPoint> { @@ -34,7 +34,7 @@ class AltosGraphIterator implements Iterator<AltosUIDataPoint> {  	public AltosUIDataPoint next() {  		AltosState	state = iterator.next(); -		if (state.flight != AltosRecord.MISSING) { +		if (state.flight != AltosLib.MISSING) {  			if (dataSet.callsign == null && state.callsign != null)  				dataSet.callsign = state.callsign; diff --git a/altosui/AltosGraphUI.java b/altosui/AltosGraphUI.java index 376e9910..c42f7b5f 100644 --- a/altosui/AltosGraphUI.java +++ b/altosui/AltosGraphUI.java @@ -9,7 +9,7 @@ import java.util.ArrayList;  import java.awt.*;  import javax.swing.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  import org.altusmetrum.altosuilib_1.*;  import org.jfree.chart.ChartPanel; diff --git a/altosui/AltosIdleMonitorUI.java b/altosui/AltosIdleMonitorUI.java index f6a91de8..f4e16243 100644 --- a/altosui/AltosIdleMonitorUI.java +++ b/altosui/AltosIdleMonitorUI.java @@ -23,7 +23,7 @@ import javax.swing.*;  import javax.swing.event.*;  import java.io.*;  import java.util.concurrent.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  import org.altusmetrum.altosuilib_1.*;  public class AltosIdleMonitorUI extends AltosUIFrame implements AltosFlightDisplay, AltosFontListener, AltosIdleMonitorListener, DocumentListener { diff --git a/altosui/AltosIgniteUI.java b/altosui/AltosIgniteUI.java index 14d4eebc..c8024aae 100644 --- a/altosui/AltosIgniteUI.java +++ b/altosui/AltosIgniteUI.java @@ -23,7 +23,7 @@ import javax.swing.*;  import java.io.*;  import java.text.*;  import java.util.concurrent.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  import org.altusmetrum.altosuilib_1.*;  public class AltosIgniteUI diff --git a/altosui/AltosInfoTable.java b/altosui/AltosInfoTable.java index cf4642bc..d7871aa6 100644 --- a/altosui/AltosInfoTable.java +++ b/altosui/AltosInfoTable.java @@ -20,7 +20,7 @@ package altosui;  import java.awt.*;  import javax.swing.*;  import javax.swing.table.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  public class AltosInfoTable extends JTable {  	private AltosFlightInfoTableModel model; @@ -107,40 +107,44 @@ public class AltosInfoTable extends JTable {  	public void show(AltosState state, AltosListenerState listener_state) {  		info_reset();  		if (state != null) { -			if (state.altitude() != AltosRecord.MISSING) +			if (state.altitude() != AltosLib.MISSING)  				info_add_row(0, "Altitude", "%6.0f    m", state.altitude()); -			if (state.ground_altitude() != AltosRecord.MISSING) +			if (state.ground_altitude() != AltosLib.MISSING)  				info_add_row(0, "Pad altitude", "%6.0f    m", state.ground_altitude()); -			if (state.height() != AltosRecord.MISSING) +			if (state.height() != AltosLib.MISSING)  				info_add_row(0, "Height", "%6.0f    m", state.height()); -			if (state.max_height() != AltosRecord.MISSING) +			if (state.max_height() != AltosLib.MISSING)  				info_add_row(0, "Max height", "%6.0f    m", state.max_height()); -			if (state.acceleration() != AltosRecord.MISSING) +			if (state.acceleration() != AltosLib.MISSING)  				info_add_row(0, "Acceleration", "%8.1f  m/s²", state.acceleration()); -			if (state.max_acceleration() != AltosRecord.MISSING) +			if (state.max_acceleration() != AltosLib.MISSING)  				info_add_row(0, "Max acceleration", "%8.1f  m/s²", state.max_acceleration()); -			if (state.speed() != AltosRecord.MISSING) +			if (state.speed() != AltosLib.MISSING)  				info_add_row(0, "Speed", "%8.1f  m/s", state.speed()); -			if (state.max_speed() != AltosRecord.MISSING) +			if (state.max_speed() != AltosLib.MISSING)  				info_add_row(0, "Max Speed", "%8.1f  m/s", state.max_speed()); -			if (state.temperature != AltosRecord.MISSING) +			if (state.temperature != AltosLib.MISSING)  				info_add_row(0, "Temperature", "%9.2f °C", state.temperature); -			if (state.battery_voltage != AltosRecord.MISSING) +			if (state.battery_voltage != AltosLib.MISSING)  				info_add_row(0, "Battery", "%9.2f V", state.battery_voltage); -			if (state.apogee_voltage != AltosRecord.MISSING) +			if (state.apogee_voltage != AltosLib.MISSING)  				info_add_row(0, "Drogue", "%9.2f V", state.apogee_voltage); -			if (state.main_voltage != AltosRecord.MISSING) +			if (state.main_voltage != AltosLib.MISSING)  				info_add_row(0, "Main", "%9.2f V", state.main_voltage);  		}  		if (listener_state != null) {  			info_add_row(0, "CRC Errors", "%6d", listener_state.crc_errors); -			if (listener_state.battery != AltosRecord.MISSING) +			if (listener_state.battery != AltosLib.MISSING)  				info_add_row(0, "Receiver Battery", "%9.2f", listener_state.battery);  		}  		if (state != null) {  			if (state.gps == null || !state.gps.connected) { +				if (state.gps == null) +					System.out.printf ("null gps\n"); +				else +					System.out.printf ("not connected gps\n");  				info_add_row(1, "GPS", "not available");  			} else {  				if (state.gps_ready) @@ -155,13 +159,13 @@ public class AltosInfoTable extends JTable {  				else  					info_add_row(1, "GPS", "  missing");  				info_add_row(1, "Satellites", "%6d", state.gps.nsat); -				if (state.gps.lat != AltosRecord.MISSING) +				if (state.gps.lat != AltosLib.MISSING)  					info_add_deg(1, "Latitude", state.gps.lat, 'N', 'S'); -				if (state.gps.lon != AltosRecord.MISSING) +				if (state.gps.lon != AltosLib.MISSING)  					info_add_deg(1, "Longitude", state.gps.lon, 'E', 'W'); -				if (state.gps.alt != AltosRecord.MISSING) +				if (state.gps.alt != AltosLib.MISSING)  					info_add_row(1, "GPS altitude", "%8.1f", state.gps.alt); -				if (state.gps_height != AltosRecord.MISSING) +				if (state.gps_height != AltosLib.MISSING)  					info_add_row(1, "GPS height", "%8.1f", state.gps_height);  				/* The SkyTraq GPS doesn't report these values */ @@ -199,12 +203,12 @@ public class AltosInfoTable extends JTable {  					info_add_deg(1, "Pad longitude", state.pad_lon, 'E', 'W');  					info_add_row(1, "Pad GPS alt", "%6.0f m", state.pad_alt);  				} -				if (state.gps.year != AltosRecord.MISSING)  +				if (state.gps.year != AltosLib.MISSING)   					info_add_row(1, "GPS date", "%04d-%02d-%02d",  						     state.gps.year,  						     state.gps.month,  						     state.gps.day); -				if (state.gps.hour != AltosRecord.MISSING) +				if (state.gps.hour != AltosLib.MISSING)  					info_add_row(1, "GPS time", "  %02d:%02d:%02d",  						     state.gps.hour,  						     state.gps.minute, diff --git a/altosui/AltosKML.java b/altosui/AltosKML.java index 8679178f..fbb0ece4 100644 --- a/altosui/AltosKML.java +++ b/altosui/AltosKML.java @@ -18,7 +18,7 @@  package altosui;  import java.io.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  public class AltosKML implements AltosWriter { @@ -110,7 +110,7 @@ public class AltosKML implements AltosWriter {  		AltosGPS	gps = state.gps;  		double		altitude; -		if (state.height() != AltosRecord.MISSING) +		if (state.height() != AltosLib.MISSING)  			altitude = state.height() + gps_start_altitude;  		else  			altitude = gps.alt; @@ -138,9 +138,9 @@ public class AltosKML implements AltosWriter {  		if (gps == null)  			return; -		if (gps.lat == AltosRecord.MISSING) +		if (gps.lat == AltosLib.MISSING)  			return; -		if (gps.lon == AltosRecord.MISSING) +		if (gps.lon == AltosLib.MISSING)  			return;  		if (!started) {  			start(state); diff --git a/altosui/AltosLanded.java b/altosui/AltosLanded.java index 630527a0..139b81b6 100644 --- a/altosui/AltosLanded.java +++ b/altosui/AltosLanded.java @@ -21,7 +21,7 @@ import java.awt.*;  import java.awt.event.*;  import javax.swing.*;  import java.io.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  public class AltosLanded extends JComponent implements AltosFlightDisplay, ActionListener {  	GridBagLayout	layout; @@ -104,7 +104,7 @@ public class AltosLanded extends JComponent implements AltosFlightDisplay, Actio  	class Lat extends LandedValue {  		void show (AltosState state, AltosListenerState listener_state) {  			show(); -			if (state.gps != null && state.gps.connected && state.gps.lat != AltosRecord.MISSING) +			if (state.gps != null && state.gps.connected && state.gps.lat != AltosLib.MISSING)  				show(pos(state.gps.lat,"N", "S"));  			else  				show("???"); @@ -119,7 +119,7 @@ public class AltosLanded extends JComponent implements AltosFlightDisplay, Actio  	class Lon extends LandedValue {  		void show (AltosState state, AltosListenerState listener_state) {  			show(); -			if (state.gps != null && state.gps.connected && state.gps.lon != AltosRecord.MISSING) +			if (state.gps != null && state.gps.connected && state.gps.lon != AltosLib.MISSING)  				show(pos(state.gps.lon,"E", "W"));  			else  				show("???"); diff --git a/altosui/AltosPad.java b/altosui/AltosPad.java index e9c973de..b35bd23a 100644 --- a/altosui/AltosPad.java +++ b/altosui/AltosPad.java @@ -19,7 +19,7 @@ package altosui;  import java.awt.*;  import javax.swing.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  public class AltosPad extends JComponent implements AltosFlightDisplay {  	GridBagLayout	layout; @@ -176,7 +176,7 @@ public class AltosPad extends JComponent implements AltosFlightDisplay {  	class Battery extends LaunchStatus {  		void show (AltosState state, AltosListenerState listener_state) { -			if (state == null || state.battery_voltage == AltosRecord.MISSING) +			if (state == null || state.battery_voltage == AltosLib.MISSING)  				hide();  			else {  				show("%4.2f V", state.battery_voltage); @@ -192,7 +192,7 @@ public class AltosPad extends JComponent implements AltosFlightDisplay {  	class Apogee extends LaunchStatus {  		void show (AltosState state, AltosListenerState listener_state) { -			if (state == null || state.apogee_voltage == AltosRecord.MISSING) +			if (state == null || state.apogee_voltage == AltosLib.MISSING)  				hide();  			else {  				show("%4.2f V", state.apogee_voltage); @@ -208,7 +208,7 @@ public class AltosPad extends JComponent implements AltosFlightDisplay {  	class Main extends LaunchStatus {  		void show (AltosState state, AltosListenerState listener_state) { -			if (state == null || state.main_voltage == AltosRecord.MISSING) +			if (state == null || state.main_voltage == AltosLib.MISSING)  				hide();  			else {  				show("%4.2f V", state.main_voltage); @@ -224,7 +224,7 @@ public class AltosPad extends JComponent implements AltosFlightDisplay {  	class LoggingReady extends LaunchStatus {  		void show (AltosState state, AltosListenerState listener_state) { -			if (state == null || state.flight == AltosRecord.MISSING) { +			if (state == null || state.flight == AltosLib.MISSING) {  				hide();  			} else {  				if (state.flight != 0) { @@ -283,7 +283,7 @@ public class AltosPad extends JComponent implements AltosFlightDisplay {  	class ReceiverBattery extends LaunchStatus {  		void show (AltosState state, AltosListenerState listener_state) { -			if (listener_state == null || listener_state.battery == AltosRecord.MISSING) +			if (listener_state == null || listener_state.battery == AltosLib.MISSING)  				hide();  			else {  				show("%4.2f V", listener_state.battery); @@ -310,11 +310,11 @@ public class AltosPad extends JComponent implements AltosFlightDisplay {  	class PadLat extends LaunchValue {  		void show (AltosState state, AltosListenerState listener_state) { -			double lat = AltosRecord.MISSING; +			double lat = AltosLib.MISSING;  			String label = null;  			if (state != null) { -				if (state.state < AltosLib.ao_flight_pad && state.gps != null && state.gps.lat != AltosRecord.MISSING) { +				if (state.state < AltosLib.ao_flight_pad && state.gps != null && state.gps.lat != AltosLib.MISSING) {  					lat = state.gps.lat;  					label = "Latitude";  				} else { @@ -322,8 +322,8 @@ public class AltosPad extends JComponent implements AltosFlightDisplay {  					label = "Pad Latitude";  				}  			} -			if (lat != AltosRecord.MISSING) { -				show(pos(lat,"E", "W")); +			if (lat != AltosLib.MISSING) { +				show(pos(lat,"N", "S"));  				set_label(label);  			} else  				hide(); @@ -337,11 +337,11 @@ public class AltosPad extends JComponent implements AltosFlightDisplay {  	class PadLon extends LaunchValue {  		void show (AltosState state, AltosListenerState listener_state) { -			double lon = AltosRecord.MISSING; +			double lon = AltosLib.MISSING;  			String label = null;  			if (state != null) { -				if (state.state < AltosLib.ao_flight_pad && state.gps != null && state.gps.lon != AltosRecord.MISSING) { +				if (state.state < AltosLib.ao_flight_pad && state.gps != null && state.gps.lon != AltosLib.MISSING) {  					lon = state.gps.lon;  					label = "Longitude";  				} else { @@ -349,7 +349,7 @@ public class AltosPad extends JComponent implements AltosFlightDisplay {  					label = "Pad Longitude";  				}  			} -			if (lon != AltosRecord.MISSING) { +			if (lon != AltosLib.MISSING) {  				show(pos(lon,"E", "W"));  				set_label(label);  			} else @@ -364,11 +364,11 @@ public class AltosPad extends JComponent implements AltosFlightDisplay {  	class PadAlt extends LaunchValue {  		void show (AltosState state, AltosListenerState listener_state) { -			double alt = AltosRecord.MISSING; +			double alt = AltosLib.MISSING;  			String label = null;  			if (state != null) { -				if (state.state < AltosLib.ao_flight_pad && state.gps != null && state.gps.alt != AltosRecord.MISSING) { +				if (state.state < AltosLib.ao_flight_pad && state.gps != null && state.gps.alt != AltosLib.MISSING) {  					alt = state.gps.alt;  					label = "Altitude";  				} else { @@ -376,7 +376,7 @@ public class AltosPad extends JComponent implements AltosFlightDisplay {  					label = "Pad Altitude";  				}  			} -			if (alt != AltosRecord.MISSING) { +			if (alt != AltosLib.MISSING) {  				show("%4.0f m", state.gps.alt);  				set_label(label);  			} else diff --git a/altosui/AltosRomconfigUI.java b/altosui/AltosRomconfigUI.java index 909e72a0..6f9d9dc6 100644 --- a/altosui/AltosRomconfigUI.java +++ b/altosui/AltosRomconfigUI.java @@ -20,7 +20,7 @@ package altosui;  import java.awt.*;  import java.awt.event.*;  import javax.swing.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  import org.altusmetrum.altosuilib_1.*;  public class AltosRomconfigUI diff --git a/altosui/AltosScanUI.java b/altosui/AltosScanUI.java index 224e1e61..a5ccb15a 100644 --- a/altosui/AltosScanUI.java +++ b/altosui/AltosScanUI.java @@ -25,7 +25,7 @@ import java.io.*;  import java.util.*;  import java.text.*;  import java.util.concurrent.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  import org.altusmetrum.altosuilib_1.*;  class AltosScanResult { @@ -187,7 +187,7 @@ public class AltosScanUI  						AltosState	state = reader.read();  						if (state == null)  							continue; -						if (state.flight != AltosRecord.MISSING) { +						if (state.flight != AltosLib.MISSING) {  							final AltosScanResult	result = new AltosScanResult(state.callsign,  												     state.serial,  												     state.flight, diff --git a/altosui/AltosSerial.java b/altosui/AltosSerial.java index e869f1ab..697ad539 100644 --- a/altosui/AltosSerial.java +++ b/altosui/AltosSerial.java @@ -25,7 +25,7 @@ import java.io.*;  import java.util.*;  import java.awt.*;  import javax.swing.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  import org.altusmetrum.altosuilib_1.*;  import libaltosJNI.*; diff --git a/altosui/AltosSiteMap.java b/altosui/AltosSiteMap.java index c0926919..9491ce2b 100644 --- a/altosui/AltosSiteMap.java +++ b/altosui/AltosSiteMap.java @@ -23,7 +23,7 @@ import java.io.*;  import java.lang.Math;  import java.awt.geom.Point2D;  import java.util.concurrent.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  import org.altusmetrum.altosuilib_1.*;  public class AltosSiteMap extends JScrollPane implements AltosFlightDisplay { @@ -287,10 +287,10 @@ public class AltosSiteMap extends JScrollPane implements AltosFlightDisplay {  			return;  		if (!initialised) { -			if (state.pad_lat != AltosRecord.MISSING && state.pad_lon != AltosRecord.MISSING) { +			if (state.pad_lat != AltosLib.MISSING && state.pad_lon != AltosLib.MISSING) {  				initMaps(state.pad_lat, state.pad_lon);  				initialised = true; -			} else if (gps.lat != AltosRecord.MISSING && gps.lon != AltosRecord.MISSING) { +			} else if (gps.lat != AltosLib.MISSING && gps.lon != AltosLib.MISSING) {  				initMaps(gps.lat, gps.lon);  				initialised = true;  			} else { diff --git a/altosui/AltosSiteMapTile.java b/altosui/AltosSiteMapTile.java index 365e4b6c..172e6397 100644 --- a/altosui/AltosSiteMapTile.java +++ b/altosui/AltosSiteMapTile.java @@ -22,7 +22,7 @@ import java.awt.image.*;  import javax.swing.*;  import java.awt.geom.Point2D;  import java.awt.geom.Line2D; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  public class AltosSiteMapTile extends JLayeredPane {  	JLabel mapLabel; diff --git a/altosui/AltosUI.java b/altosui/AltosUI.java index 31d5a54d..9dad8718 100644 --- a/altosui/AltosUI.java +++ b/altosui/AltosUI.java @@ -22,7 +22,7 @@ import java.awt.event.*;  import javax.swing.*;  import java.io.*;  import java.util.concurrent.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  import org.altusmetrum.altosuilib_1.*;  public class AltosUI extends AltosUIFrame { @@ -492,7 +492,7 @@ public class AltosUI extends AltosUIFrame {  					  stats.max_speed,  					  AltosConvert.meters_to_feet(stats.max_speed),  					  AltosConvert.meters_to_mach(stats.max_speed)); -			if (stats.max_acceleration != AltosRecord.MISSING) { +			if (stats.max_acceleration != AltosLib.MISSING) {  				System.out.printf("Max accel:   %6.0f m/s² %6.0f ft/s² %6.2f g\n",  						  stats.max_acceleration,  						  AltosConvert.meters_to_feet(stats.max_acceleration), diff --git a/altosui/AltosUIPreferencesBackend.java b/altosui/AltosUIPreferencesBackend.java index 0dac9fc7..fb5f8520 100644 --- a/altosui/AltosUIPreferencesBackend.java +++ b/altosui/AltosUIPreferencesBackend.java @@ -19,7 +19,7 @@ package altosui;  import java.io.File;  import java.util.prefs.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  import javax.swing.filechooser.FileSystemView;  public class AltosUIPreferencesBackend implements AltosPreferencesBackend { diff --git a/altosui/AltosWriter.java b/altosui/AltosWriter.java index 8de11bc9..d664d6e8 100644 --- a/altosui/AltosWriter.java +++ b/altosui/AltosWriter.java @@ -17,7 +17,7 @@  package altosui; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  public interface AltosWriter { diff --git a/altosuilib/AltosUIAxis.java b/altosuilib/AltosUIAxis.java index 867b0384..a38cba63 100644 --- a/altosuilib/AltosUIAxis.java +++ b/altosuilib/AltosUIAxis.java @@ -22,7 +22,7 @@ import java.util.ArrayList;  import java.awt.*;  import javax.swing.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  import org.jfree.ui.*;  import org.jfree.chart.*; diff --git a/altosuilib/AltosUIEnable.java b/altosuilib/AltosUIEnable.java index 55486dea..84803c0e 100644 --- a/altosuilib/AltosUIEnable.java +++ b/altosuilib/AltosUIEnable.java @@ -23,7 +23,7 @@ import javax.swing.*;  import java.io.*;  import java.util.concurrent.*;  import java.util.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  import org.jfree.ui.*;  import org.jfree.chart.*; diff --git a/altosuilib/AltosUIGraph.java b/altosuilib/AltosUIGraph.java index 5f3a2eef..ef0cc677 100644 --- a/altosuilib/AltosUIGraph.java +++ b/altosuilib/AltosUIGraph.java @@ -22,7 +22,7 @@ import java.util.ArrayList;  import java.awt.*;  import javax.swing.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  import org.jfree.ui.*;  import org.jfree.chart.*; diff --git a/altosuilib/AltosUIGrapher.java b/altosuilib/AltosUIGrapher.java index 8f0ce801..d826072f 100644 --- a/altosuilib/AltosUIGrapher.java +++ b/altosuilib/AltosUIGrapher.java @@ -22,7 +22,7 @@ import java.util.ArrayList;  import java.awt.*;  import javax.swing.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  import org.jfree.ui.*;  import org.jfree.chart.*; diff --git a/altosuilib/AltosUILib.java b/altosuilib/AltosUILib.java index 1b121405..9fcaf6d4 100644 --- a/altosuilib/AltosUILib.java +++ b/altosuilib/AltosUILib.java @@ -20,7 +20,7 @@ package org.altusmetrum.altosuilib_1;  import java.awt.*;  import libaltosJNI.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  public class AltosUILib extends AltosLib { diff --git a/altosuilib/AltosUIMarker.java b/altosuilib/AltosUIMarker.java index 0949be6f..e4262abd 100644 --- a/altosuilib/AltosUIMarker.java +++ b/altosuilib/AltosUIMarker.java @@ -22,7 +22,7 @@ import java.util.ArrayList;  import java.awt.*;  import javax.swing.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  import org.jfree.ui.*;  import org.jfree.chart.*; diff --git a/altosuilib/AltosUIPreferences.java b/altosuilib/AltosUIPreferences.java index 49321bce..fc14f24b 100644 --- a/altosuilib/AltosUIPreferences.java +++ b/altosuilib/AltosUIPreferences.java @@ -21,7 +21,7 @@ import java.io.*;  import java.util.*;  import java.awt.Component;  import javax.swing.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  public class AltosUIPreferences extends AltosPreferences { diff --git a/altosuilib/AltosUIPreferencesBackend.java b/altosuilib/AltosUIPreferencesBackend.java index 8a5386c3..55da8d48 100644 --- a/altosuilib/AltosUIPreferencesBackend.java +++ b/altosuilib/AltosUIPreferencesBackend.java @@ -19,7 +19,7 @@ package org.altusmetrum.altosuilib_1;  import java.io.File;  import java.util.prefs.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  import javax.swing.filechooser.FileSystemView;  public class AltosUIPreferencesBackend implements AltosPreferencesBackend { diff --git a/altosuilib/AltosUISeries.java b/altosuilib/AltosUISeries.java index ac09a3cc..ff430d1a 100644 --- a/altosuilib/AltosUISeries.java +++ b/altosuilib/AltosUISeries.java @@ -22,7 +22,7 @@ import java.util.ArrayList;  import java.awt.*;  import javax.swing.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  import org.jfree.ui.*;  import org.jfree.chart.*; @@ -34,6 +34,20 @@ import org.jfree.chart.labels.*;  import org.jfree.data.xy.*;  import org.jfree.data.*; +class AltosUITime extends AltosUnits { +	public double value(double v) { return v; } +	public String show_units() { return "s"; } +	public String say_units() { return "seconds"; } + +	public int show_fraction(int width) { +		if (width < 5) +			return 0; +		return width - 5; +	} + +	public int say_fraction() { return 0; } +} +  public class AltosUISeries extends XYSeries implements AltosUIGrapher {  	AltosUIAxis	axis;  	String		label; @@ -47,11 +61,12 @@ public class AltosUISeries extends XYSeries implements AltosUIGrapher {  		axis.set_units();  		StandardXYToolTipGenerator	ttg; -		String  example = units.graph_format(4); +		String	time_example = (new AltosUITime()).graph_format(7); +		String  example = units.graph_format(7);  		ttg = new StandardXYToolTipGenerator(String.format("{1}s: {2}%s ({0})",  								   units.show_units()), -						     new java.text.DecimalFormat(example), +						     new java.text.DecimalFormat(time_example),  						     new java.text.DecimalFormat(example));  		renderer.setBaseToolTipGenerator(ttg);  	} diff --git a/configure.ac b/configure.ac index 4d0a2ef6..e88109f9 100644 --- a/configure.ac +++ b/configure.ac @@ -31,7 +31,7 @@ dnl ==========================================================================  dnl Java library versions  ALTOSUILIB_VERSION=1 -ALTOSLIB_VERSION=1 +ALTOSLIB_VERSION=2  AC_SUBST(ALTOSLIB_VERSION)  AC_DEFINE(ALTOSLIB_VERSION,$ALTOSLIB_VERSION,[Version of the AltosLib package]) diff --git a/micropeak/MicroData.java b/micropeak/MicroData.java index 4c0ed4c3..07806fa4 100644 --- a/micropeak/MicroData.java +++ b/micropeak/MicroData.java @@ -20,7 +20,7 @@ package org.altusmetrum.micropeak;  import java.lang.*;  import java.io.*;  import java.util.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  import org.altusmetrum.altosuilib_1.*;  class MicroIterator implements Iterator<MicroDataPoint> { diff --git a/micropeak/MicroDownload.java b/micropeak/MicroDownload.java index bd6795f8..a9095f9c 100644 --- a/micropeak/MicroDownload.java +++ b/micropeak/MicroDownload.java @@ -23,7 +23,7 @@ import javax.swing.*;  import java.io.*;  import java.util.concurrent.*;  import java.util.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  import org.altusmetrum.altosuilib_1.*;  public class MicroDownload extends AltosUIDialog implements Runnable, ActionListener { diff --git a/micropeak/MicroExport.java b/micropeak/MicroExport.java index 20a6f79a..5af767c6 100644 --- a/micropeak/MicroExport.java +++ b/micropeak/MicroExport.java @@ -23,7 +23,7 @@ import java.util.ArrayList;  import java.awt.*;  import javax.swing.*;  import javax.swing.filechooser.FileNameExtensionFilter; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  import org.altusmetrum.altosuilib_1.*;  public class MicroExport extends JFileChooser { diff --git a/micropeak/MicroFile.java b/micropeak/MicroFile.java index cdd42e66..2b02e20a 100644 --- a/micropeak/MicroFile.java +++ b/micropeak/MicroFile.java @@ -19,7 +19,7 @@ package org.altusmetrum.micropeak;  import java.io.*;  import java.util.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  import org.altusmetrum.altosuilib_1.*;  public class MicroFile { diff --git a/micropeak/MicroFileChooser.java b/micropeak/MicroFileChooser.java index d52eab2c..3ca128ee 100644 --- a/micropeak/MicroFileChooser.java +++ b/micropeak/MicroFileChooser.java @@ -20,7 +20,7 @@ package org.altusmetrum.micropeak;  import javax.swing.*;  import javax.swing.filechooser.FileNameExtensionFilter;  import java.io.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  import org.altusmetrum.altosuilib_1.*;  public class MicroFileChooser extends JFileChooser { diff --git a/micropeak/MicroGraph.java b/micropeak/MicroGraph.java index 50508a61..fba62907 100644 --- a/micropeak/MicroGraph.java +++ b/micropeak/MicroGraph.java @@ -22,7 +22,7 @@ import java.util.ArrayList;  import java.awt.*;  import javax.swing.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  import org.altusmetrum.altosuilib_1.*;  import org.jfree.ui.*; diff --git a/micropeak/MicroPeak.java b/micropeak/MicroPeak.java index cb1c68cb..27a8db02 100644 --- a/micropeak/MicroPeak.java +++ b/micropeak/MicroPeak.java @@ -23,7 +23,7 @@ import javax.swing.*;  import java.io.*;  import java.util.concurrent.*;  import java.util.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  import org.altusmetrum.altosuilib_1.*;  public class MicroPeak extends MicroFrame implements ActionListener, ItemListener { diff --git a/micropeak/MicroRaw.java b/micropeak/MicroRaw.java index 7337a1de..0520fa71 100644 --- a/micropeak/MicroRaw.java +++ b/micropeak/MicroRaw.java @@ -20,7 +20,7 @@ package org.altusmetrum.micropeak;  import java.awt.*;  import java.io.*;  import javax.swing.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  import org.altusmetrum.altosuilib_1.*;  public class MicroRaw extends JTextArea { diff --git a/micropeak/MicroSave.java b/micropeak/MicroSave.java index 99f621ce..1f1ef3cb 100644 --- a/micropeak/MicroSave.java +++ b/micropeak/MicroSave.java @@ -24,7 +24,7 @@ import javax.swing.filechooser.FileNameExtensionFilter;  import java.io.*;  import java.util.concurrent.*;  import java.util.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  import org.altusmetrum.altosuilib_1.*;  public class MicroSave extends JFileChooser { diff --git a/micropeak/MicroStats.java b/micropeak/MicroStats.java index 99479cb4..32d94432 100644 --- a/micropeak/MicroStats.java +++ b/micropeak/MicroStats.java @@ -18,7 +18,7 @@  package org.altusmetrum.micropeak;  import java.io.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  import org.altusmetrum.altosuilib_1.*;  public class MicroStats { diff --git a/micropeak/MicroStatsTable.java b/micropeak/MicroStatsTable.java index 145bb70e..4400a317 100644 --- a/micropeak/MicroStatsTable.java +++ b/micropeak/MicroStatsTable.java @@ -19,7 +19,7 @@ package org.altusmetrum.micropeak;  import java.awt.*;  import javax.swing.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_2.*;  import org.altusmetrum.altosuilib_1.*;  public class MicroStatsTable extends JComponent implements AltosFontListener {  | 
