diff options
Diffstat (limited to 'altoslib/AltosEepromRecordSet.java')
| -rw-r--r-- | altoslib/AltosEepromRecordSet.java | 50 | 
1 files changed, 17 insertions, 33 deletions
| diff --git a/altoslib/AltosEepromRecordSet.java b/altoslib/AltosEepromRecordSet.java index 653a1305..69159cdf 100644 --- a/altoslib/AltosEepromRecordSet.java +++ b/altoslib/AltosEepromRecordSet.java @@ -17,45 +17,32 @@ package org.altusmetrum.altoslib_11;  import java.io.*;  import java.util.*; -public class AltosEepromRecordSet implements Iterable<AltosState>, AltosRecordSet { +public class AltosEepromRecordSet implements AltosRecordSet {  	AltosEepromNew			eeprom;  	TreeSet<AltosEepromRecord>	ordered; -	AltosState			start_state; +	AltosCalData			cal_data; -	class RecordIterator implements Iterator<AltosState> { -		Iterator<AltosEepromRecord> riterator; -		AltosState state; -		boolean started; - -		public boolean hasNext() { -			return state == null || riterator.hasNext(); -		} +	public AltosConfigData config_data() { +		return eeprom.config_data(); +	} -		public AltosState next() { -			if (state == null) -				state = start_state.clone(); -			else { -				state = state.clone(); -				AltosEepromRecord	r = riterator.next(); -				r.update_state(state); +	public AltosCalData cal_data() { +		if (cal_data == null) { +			cal_data = new AltosCalData(config_data()); +			for (AltosEepromRecord record : ordered) { +				if (record.cmd() == AltosLib.AO_LOG_FLIGHT) { +					cal_data.set_tick(record.tick()); +					cal_data.set_boost_tick(); +				}  			} -			return state; -		} - -		public RecordIterator() { -			riterator = ordered.iterator(); -			state = null;  		} +		return cal_data;  	} -	public Iterator<AltosState> iterator() { -		return new RecordIterator(); -	} - -	public void capture_series(AltosFlightSeries series) { -		series.set_config_data(eeprom.config_data()); +	public void capture_series(AltosDataListener listener) { +		AltosCalData	cal_data = cal_data();  		for (AltosEepromRecord record : ordered) { -			record.update_state(series); +			record.provide_data(listener, cal_data);  		}  	} @@ -103,9 +90,6 @@ public class AltosEepromRecordSet implements Iterable<AltosState>, AltosRecordSe  		int	tick = 0;  		boolean first = true; -		start_state = new AltosState(); -		start_state.set_config_data(record.eeprom.config_data()); -  		for (;;) {  			int	t = record.tick(); | 
