diff options
| -rw-r--r-- | altosui/AltosFlightStatus.java | 18 | ||||
| -rw-r--r-- | altosui/AltosFlightUI.java | 2 | ||||
| -rw-r--r-- | altosui/AltosGraphUI.java | 40 | ||||
| -rw-r--r-- | altosui/AltosLanded.java | 7 | ||||
| -rw-r--r-- | altosui/AltosPad.java | 6 | ||||
| -rw-r--r-- | altosui/AltosUI.java | 110 | 
6 files changed, 102 insertions, 81 deletions
| diff --git a/altosui/AltosFlightStatus.java b/altosui/AltosFlightStatus.java index 4288fc9f..26f0379a 100644 --- a/altosui/AltosFlightStatus.java +++ b/altosui/AltosFlightStatus.java @@ -120,13 +120,14 @@ public class AltosFlightStatus extends JComponent implements AltosFlightDisplay  		int	last_serial = -1;  		void show(AltosState state, AltosListenerState listener_state) { -			if (state.serial != last_serial) { +			AltosCalData	cal_data = state.cal_data; +			if (cal_data.serial != last_serial) {  				show(); -				if (state.serial == AltosLib.MISSING) +				if (cal_data.serial == AltosLib.MISSING)  					value.setText("none");  				else -					value.setText(String.format("%d", state.serial)); -				last_serial = state.serial; +					value.setText(String.format("%d", cal_data.serial)); +				last_serial = cal_data.serial;  			}  		} @@ -147,13 +148,14 @@ public class AltosFlightStatus extends JComponent implements AltosFlightDisplay  		int	last_flight = -1;  		void show(AltosState state, AltosListenerState listener_state) { -			if (state.flight != last_flight) { +			AltosCalData cal_data = state.cal_data; +			if (cal_data.flight != last_flight) {  				show(); -				if (state.flight == AltosLib.MISSING) +				if (cal_data.flight == AltosLib.MISSING)  					value.setText("none");  				else -					value.setText(String.format("%d", state.flight)); -				last_flight = state.flight; +					value.setText(String.format("%d", cal_data.flight)); +				last_flight = cal_data.flight;  			}  		} diff --git a/altosui/AltosFlightUI.java b/altosui/AltosFlightUI.java index cf03d2dc..3d33b6e5 100644 --- a/altosui/AltosFlightUI.java +++ b/altosui/AltosFlightUI.java @@ -101,7 +101,7 @@ public class AltosFlightUI extends AltosUIFrame implements AltosFlightDisplay {  		status_update.saved_listener_state = listener_state;  		if (state == null) -			state = new AltosState(); +			state = new AltosState(new AltosCalData());  		if (state.state() != Altos.ao_flight_startup) {  			if (!has_state) { diff --git a/altosui/AltosGraphUI.java b/altosui/AltosGraphUI.java index 50a1948e..5314a3b6 100644 --- a/altosui/AltosGraphUI.java +++ b/altosui/AltosGraphUI.java @@ -37,19 +37,23 @@ public class AltosGraphUI extends AltosUIFrame implements AltosFontListener, Alt  	AltosGraphNew		graph;  	AltosUIEnable		enable;  	AltosUIMap		map; -	AltosState		state; -	AltosGraphDataSet	graphDataSet;  	AltosFlightStats	stats;  	AltosFlightStatsTable	statsTable; +	AltosGPS		gps;  	boolean			has_gps; -	void fill_map(AltosStateIterable states) { -		boolean		any_gps = false; -		for (AltosState state : states) { -			if (state.gps != null && state.gps.locked && state.gps.nsat >= 4) { +	void fill_map(AltosFlightSeries flight_series) { +		boolean			any_gps = false; + +		for (AltosGPSTimeValue gtv : flight_series.gps_series) { +			AltosGPS gps = gtv.gps; +			if (gps != null && +			    gps.locked && +			    gps.nsat >= 4) {  				if (map == null)  					map = new AltosUIMap(); -				map.show(state, null); +				map.show(gps, AltosLib.ao_flight_pad); +				this.gps = gps;  				has_gps = true;  			}  		} @@ -69,18 +73,24 @@ public class AltosGraphUI extends AltosUIFrame implements AltosFontListener, Alt  			enable.units_changed(imperial_units);  	} -	AltosGraphUI(AltosStateIterable states, AltosRecordSet record_set, File file) throws InterruptedException, IOException { +	AltosGraphUI(AltosRecordSet set, File file) throws InterruptedException, IOException {  		super(file.getName()); -		state = null; +		AltosCalData	cal_data = set.cal_data(); +  		pane = new JTabbedPane();  		enable = new AltosUIEnable(); -		stats = new AltosFlightStats(states); -//		graphDataSet = new AltosGraphDataSet(states); +		AltosUIFlightSeries flight_series = new AltosUIFlightSeries(cal_data); + +		set.capture_series(flight_series); + +		flight_series.fill_in(); + +		stats = new AltosFlightStats(flight_series); -		graph = new AltosGraphNew(enable, stats, record_set); +		graph = new AltosGraphNew(enable, stats, flight_series, cal_data);  		statsTable = new AltosFlightStatsTable(stats); @@ -89,7 +99,7 @@ public class AltosGraphUI extends AltosUIFrame implements AltosFontListener, Alt  		pane.add("Flight Statistics", statsTable);  		has_gps = false; -		fill_map(states); +		fill_map(flight_series);  		if (has_gps)  			pane.add("Map", map); @@ -108,7 +118,7 @@ public class AltosGraphUI extends AltosUIFrame implements AltosFontListener, Alt  		pack();  		setVisible(true); -		if (state != null && has_gps) -			map.centre(state); +		if (gps != null) +			map.centre(gps);  	}  } diff --git a/altosui/AltosLanded.java b/altosui/AltosLanded.java index 95cab605..a75d5a9f 100644 --- a/altosui/AltosLanded.java +++ b/altosui/AltosLanded.java @@ -123,20 +123,17 @@ public class AltosLanded extends AltosUIFlightTab implements ActionListener {  			if (file != null) {  				String	filename = file.getName();  				try { -					AltosStateIterable states = null;  					AltosRecordSet record_set = null;  					if (filename.endsWith("eeprom")) { -						FileReader in = new FileReader(file); -						states = new AltosEepromFile(in);  						record_set = new AltosEepromRecordSet(new FileReader(file));  					} else if (filename.endsWith("telem")) {  						FileInputStream in = new FileInputStream(file); -						states = new AltosTelemetryFile(in); +						record_set = new AltosTelemetryFile(in);  					} else {  						throw new FileNotFoundException(filename);  					}  					try { -						new AltosGraphUI(states, record_set, file); +						new AltosGraphUI(record_set, file);  					} catch (InterruptedException ie) {  					} catch (IOException ie) {  					} diff --git a/altosui/AltosPad.java b/altosui/AltosPad.java index d411c969..73da9933 100644 --- a/altosui/AltosPad.java +++ b/altosui/AltosPad.java @@ -46,10 +46,10 @@ public class AltosPad extends AltosUIFlightTab {  	class LoggingReady extends AltosUIIndicator {  		public void show (AltosState state, AltosListenerState listener_state) { -			if (state == null || state.flight == AltosLib.MISSING) { +			if (state == null || state.cal_data.flight == AltosLib.MISSING) {  				hide();  			} else { -				if (state.flight != 0) { +				if (state.cal_data.flight != 0) {  					if (state.state() <= Altos.ao_flight_pad)  						show("Ready to record");  					else if (state.state() < Altos.ao_flight_landed || @@ -59,7 +59,7 @@ public class AltosPad extends AltosUIFlightTab {  						show("Recorded data");  				} else  					show("Storage full"); -				set_lights(state.flight != 0); +				set_lights(state.cal_data.flight != 0);  			}  		}  		public LoggingReady (AltosUIFlightTab container, int y) { diff --git a/altosui/AltosUI.java b/altosui/AltosUI.java index 7caaa3e9..a6e422e6 100644 --- a/altosui/AltosUI.java +++ b/altosui/AltosUI.java @@ -310,12 +310,13 @@ public class AltosUI extends AltosUIFrame {  		AltosDataChooser chooser = new AltosDataChooser(  			AltosUI.this); -		Iterable<AltosState> states = chooser.runDialog(); -		if (states != null) { -			AltosFlightReader reader = new AltosReplayReader(states.iterator(), -									 chooser.file()); -			new AltosFlightUI(voice, reader); -		} +		AltosRecordSet set = chooser.runDialog(); +/* XXX fixme */ +//		if (states != null) { +//			AltosFlightReader reader = new AltosReplayReader(states.iterator(), +//									 chooser.file()); +//			new AltosFlightUI(voice, reader); +//		}  	}  	/* Connect to TeleMetrum, either directly or through @@ -325,6 +326,12 @@ public class AltosUI extends AltosUIFrame {  		new AltosEepromManage(AltosUI.this, AltosLib.product_any);  	} +	private static AltosFlightSeries make_series(AltosRecordSet set) { +		AltosFlightSeries series = new AltosFlightSeries(new AltosCalData()); +		set.capture_series(series); +		return series; +	} +  	/* Load a flight log file and write out a CSV file containing  	 * all of the data in standard units  	 */ @@ -332,10 +339,11 @@ public class AltosUI extends AltosUIFrame {  	private void ExportData() {  		AltosDataChooser chooser;  		chooser = new AltosDataChooser(this); -		AltosStateIterable states = chooser.runDialog(); -		if (states == null) +		AltosRecordSet set = chooser.runDialog(); +		if (set == null)  			return; -		new AltosCSVUI(AltosUI.this, states, chooser.file()); +		AltosFlightSeries series = make_series(set); +		new AltosCSVUI(AltosUI.this, series, series.cal_data, chooser.file());  	}  	/* Load a flight log CSV file and display a pretty graph. @@ -344,11 +352,11 @@ public class AltosUI extends AltosUIFrame {  	private void GraphData() {  		AltosDataChooser chooser;  		chooser = new AltosDataChooser(this); -		AltosStateIterable states = chooser.runDialog(); -		if (states == null) +		AltosRecordSet set = chooser.runDialog(); +		if (set == null)  			return;  		try { -			new AltosGraphUI(states, new AltosEepromRecordSet(new FileReader(chooser.file())), chooser.file()); +			new AltosGraphUI(set, chooser.file());  		} catch (InterruptedException ie) {  		} catch (IOException ie) {  		} @@ -365,7 +373,7 @@ public class AltosUI extends AltosUIFrame {  		}  	} -	static AltosStateIterable open_logfile(File file) { +	static AltosRecordSet open_logfile(File file) {  		try {  			if (file.getName().endsWith("telem"))  				return new AltosTelemetryFile(new FileInputStream(file)); @@ -407,8 +415,8 @@ public class AltosUI extends AltosUIFrame {  	static final int process_cat = 6;  	static boolean process_csv(File input) { -		AltosStateIterable states = open_logfile(input); -		if (states == null) +		AltosRecordSet set = open_logfile(input); +		if (set == null)  			return false;  		File output = Altos.replace_extension(input,".csv"); @@ -420,15 +428,16 @@ public class AltosUI extends AltosUIFrame {  			AltosWriter writer = open_csv(output);  			if (writer == null)  				return false; -			writer.write(states); +			AltosFlightSeries series = make_series(set); +			writer.write(series);  			writer.close();  		}  		return true;  	}  	static boolean process_kml(File input) { -		AltosStateIterable states = open_logfile(input); -		if (states == null) +		AltosRecordSet set = open_logfile(input); +		if (set == null)  			return false;  		File output = Altos.replace_extension(input,".kml"); @@ -440,13 +449,14 @@ public class AltosUI extends AltosUIFrame {  			AltosWriter writer = open_kml(output);  			if (writer == null)  				return false; -			writer.write(states); +			AltosFlightSeries series = make_series(set); +			writer.write(series);  			writer.close();  			return true;  		}  	} -	static AltosStateIterable record_iterable(File file) { +	static AltosRecordSet record_set(File file) {  		FileInputStream in;  		if (file.getName().endsWith("telem")) {  			try { @@ -468,10 +478,11 @@ public class AltosUI extends AltosUIFrame {  	}  	static AltosReplayReader replay_file(File file) { -		AltosStateIterable states = record_iterable(file); -		if (states == null) +		AltosRecordSet set = record_set(file); +		if (set == null)  			return null; -		return new AltosReplayReader(states.iterator(), file); +//		return new AltosReplayReader(states.iterator(), file); +		return null;  	}  	static boolean process_replay(File file) { @@ -483,11 +494,11 @@ public class AltosUI extends AltosUIFrame {  	}  	static boolean process_graph(File file) { -		AltosStateIterable states = record_iterable(file); -		if (states == null) +		AltosRecordSet set = record_set(file); +		if (set == null)  			return false;  		try { -			new AltosGraphUI(states, new AltosEepromRecordSet(new FileReader(file)), file); +			new AltosGraphUI(set, file);  			return true;  		} catch (InterruptedException ie) {  		} catch (IOException ie) { @@ -496,12 +507,13 @@ public class AltosUI extends AltosUIFrame {  	}  	static boolean process_summary(File file) { -		AltosStateIterable states = record_iterable(file); -		if (states == null) +		AltosRecordSet set = record_set(file); +		if (set == null)  			return false;  		try {  			System.out.printf("%s:\n", file.toString()); -			AltosFlightStats stats = new AltosFlightStats(states); +			AltosFlightSeries series = make_series(set); +			AltosFlightStats stats = new AltosFlightStats(series);  			if (stats.serial != AltosLib.MISSING)  				System.out.printf("Serial:       %5d\n", stats.serial);  			if (stats.flight != AltosLib.MISSING) @@ -550,26 +562,26 @@ public class AltosUI extends AltosUIFrame {  	static boolean process_cat(File file) {  		try { -			AltosStateIterable eef = record_iterable(file); - -			for (AltosState state : eef) { -				if ((state.set & AltosState.set_gps) != 0) { -					System.out.printf ("time %d %d-%d-%d %d:%d:%d lat %g lon %g alt %g\n", -							   state.gps.seconds(), -							   state.gps.year, -							   state.gps.month, -							   state.gps.day, -							   state.gps.hour, -							   state.gps.minute, -							   state.gps.second, -							   state.gps.lat, -							   state.gps.lon, -							   state.gps.alt); -				} else { -					System.out.printf ("tick %d state %d height %g\n", -							   state.tick, state.state(), state.height()); -				} -			} +			AltosRecordSet set = record_set(file); + +//			for (AltosState state : eef) { +//				if ((state.set & AltosState.set_gps) != 0) { +//					System.out.printf ("time %d %d-%d-%d %d:%d:%d lat %g lon %g alt %g\n", +//							   state.gps.seconds(), +//							   state.gps.year, +//							   state.gps.month, +//							   state.gps.day, +//							   state.gps.hour, +//							   state.gps.minute, +//							   state.gps.second, +//							   state.gps.lat, +//							   state.gps.lon, +//							   state.gps.alt); +//				} else { +//					System.out.printf ("tick %d state %d height %g\n", +//							   state.tick, state.state(), state.height()); +//				} +//			}  		} catch (Exception e) {  			System.out.printf("Failed to open file '%s'\n", file); | 
