diff options
Diffstat (limited to 'altoslib/AltosEepromDownload.java')
| -rw-r--r-- | altoslib/AltosEepromDownload.java | 20 | 
1 files changed, 13 insertions, 7 deletions
diff --git a/altoslib/AltosEepromDownload.java b/altoslib/AltosEepromDownload.java index 78a1f4be..00b20272 100644 --- a/altoslib/AltosEepromDownload.java +++ b/altoslib/AltosEepromDownload.java @@ -75,7 +75,8 @@ public class AltosEepromDownload implements Runnable {  	}  	boolean			done; -	boolean			start; +	int			prev_state; +	int			state_block;  	void LogEeprom(AltosEeprom r) throws IOException {  		if (r.cmd != AltosLib.AO_LOG_INVALID) { @@ -140,7 +141,6 @@ public class AltosEepromDownload implements Runnable {  		state = new AltosState();  		done = false; -		start = true;  		if (flights.config_data.serial < 0)  			throw new IOException("no serial number found"); @@ -154,12 +154,8 @@ public class AltosEepromDownload implements Runnable {  		/* Now scan the eeprom, reading blocks of data and converting to .eeprom file form */  		state_block = log.start_block; +		prev_state = AltosLib.ao_flight_startup;  		for (block = log.start_block; !done && block < log.end_block; block++) { -			monitor.set_value(state.state_name(), -					  state.state, -					  block - state_block, -					  block - log.start_block); -  			AltosEepromChunk	eechunk = new AltosEepromChunk(link, block, block == log.start_block);  			/* @@ -177,6 +173,16 @@ public class AltosEepromDownload implements Runnable {  			}  			CaptureEeprom (eechunk, log_format); + +			if (state.state != prev_state && state.state != AltosLib.ao_flight_invalid) { +				state_block = block; +				prev_state = state.state; +			} + +			monitor.set_value(state.state_name(), +					  state.state, +					  block - state_block, +					  block - log.start_block);  		}  		CheckFile(true);  		if (eeprom_file != null) {  | 
