From: Keith Packard Date: Tue, 12 Nov 2013 05:03:42 +0000 (+0900) Subject: altoslib: Raise ParseException on invalid eeprom format X-Git-Tag: 1.2.9.4~17 X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=commitdiff_plain;h=74d73a2cd0b6a228eb396552e1d16685669349c0;hp=bdd6244d8b4a55c9aa4fb79b0cb1a0727afbc2ac altoslib: Raise ParseException on invalid eeprom format Make sure the user knows when data are not downloaded successfully because the UI doesn't understand the eeprom format. Signed-off-by: Keith Packard --- diff --git a/altoslib/AltosEepromChunk.java b/altoslib/AltosEepromChunk.java index 48d29e1b..c03fa931 100644 --- a/altoslib/AltosEepromChunk.java +++ b/altoslib/AltosEepromChunk.java @@ -62,31 +62,30 @@ public class AltosEepromChunk { return true; } - public AltosEeprom eeprom(int offset, int log_format, AltosState state) { + public AltosEeprom eeprom(int offset, int log_format, AltosState state) throws ParseException { AltosEeprom eeprom = null; - try { - switch (log_format) { - case AltosLib.AO_LOG_FORMAT_FULL: - eeprom = new AltosEepromTM(this, offset); - break; - case AltosLib.AO_LOG_FORMAT_TINY: - eeprom = new AltosEepromTm(this, offset, state); - break; - case AltosLib.AO_LOG_FORMAT_TELEMETRY: - case AltosLib.AO_LOG_FORMAT_TELESCIENCE: - break; - case AltosLib.AO_LOG_FORMAT_TELEMEGA: - eeprom = new AltosEepromMega(this, offset); - break; - case AltosLib.AO_LOG_FORMAT_TELEMETRUM: - eeprom = new AltosEepromMetrum2(this, offset); - break; - case AltosLib.AO_LOG_FORMAT_TELEMINI: - case AltosLib.AO_LOG_FORMAT_EASYMINI: - eeprom = new AltosEepromMini(this, offset); - break; - } - } catch (ParseException e) { + switch (log_format) { + case AltosLib.AO_LOG_FORMAT_FULL: + eeprom = new AltosEepromTM(this, offset); + break; + case AltosLib.AO_LOG_FORMAT_TINY: + eeprom = new AltosEepromTm(this, offset, state); + break; + case AltosLib.AO_LOG_FORMAT_TELEMETRY: + case AltosLib.AO_LOG_FORMAT_TELESCIENCE: + break; + case AltosLib.AO_LOG_FORMAT_TELEMEGA: + eeprom = new AltosEepromMega(this, offset); + break; + case AltosLib.AO_LOG_FORMAT_TELEMETRUM: + eeprom = new AltosEepromMetrum2(this, offset); + break; + case AltosLib.AO_LOG_FORMAT_TELEMINI: + case AltosLib.AO_LOG_FORMAT_EASYMINI: + eeprom = new AltosEepromMini(this, offset); + break; + default: + throw new ParseException("unknown eeprom format " + log_format, 0); } return eeprom; } diff --git a/altosui/AltosEepromDownload.java b/altosui/AltosEepromDownload.java index 6e2fd061..7ccf26a5 100644 --- a/altosui/AltosEepromDownload.java +++ b/altosui/AltosEepromDownload.java @@ -92,7 +92,7 @@ public class AltosEepromDownload implements Runnable { } } - void CaptureEeprom(AltosEepromChunk eechunk, int log_format) throws IOException { + void CaptureEeprom(AltosEepromChunk eechunk, int log_format) throws IOException, ParseException { boolean any_valid = false; boolean got_flight = false; @@ -138,7 +138,7 @@ public class AltosEepromDownload implements Runnable { CheckFile(false); } - void CaptureLog(AltosEepromLog log) throws IOException, InterruptedException, TimeoutException { + void CaptureLog(AltosEepromLog log) throws IOException, InterruptedException, TimeoutException, ParseException { int block, state_block = 0; int log_format = flights.config_data.log_format; @@ -222,7 +222,11 @@ public class AltosEepromDownload implements Runnable { parse_exception = null; if (log.selected) { monitor.reset(); - CaptureLog(log); + try { + CaptureLog(log); + } catch (ParseException e) { + parse_exception = e; + } } if (parse_exception != null) { failed = true;