diff options
| -rw-r--r-- | altosui/AltosEepromRecord.java | 17 | 
1 files changed, 13 insertions, 4 deletions
| diff --git a/altosui/AltosEepromRecord.java b/altosui/AltosEepromRecord.java index 584a04b7..e5196c50 100644 --- a/altosui/AltosEepromRecord.java +++ b/altosui/AltosEepromRecord.java @@ -72,15 +72,24 @@ public class AltosEepromRecord {  		if (values[0] != (addr & 0xff))  			throw new ParseException(String.format("data address out of sync at 0x%x",  							       addr), 0); -		if (checksum(values) != 0) -			throw new ParseException(String.format("invalid checksum at 0x%x", addr), 0); - +		int i; +		for (i = 1; i < values.length; i++) +			if (values[i] != 0xff) +				break;  		cmd = values[1]; +		tick_valid = true; +		if (i != values.length) { +			if (checksum(values) != 0) +				throw new ParseException(String.format("invalid checksum at 0x%x in line %s", addr, line), 0); +		} else { +			cmd = Altos.AO_LOG_INVALID; +			tick_valid = false; +		} +  		tick = values[3] + (values[4] << 8);  		a = values[5] + (values[6] << 8);  		b = values[7] + (values[8] << 8);  		data = null; -		tick_valid = true;  	}  	public AltosEepromRecord (String line) { | 
