altoslib: Raise ParseException on invalid eeprom format
[fw/altos] / altoslib / AltosEepromChunk.java
index 48d29e1b603e9a9d8fdf558602e226d2495d7e3a..c03fa931fdc0f230b307e97d726b4ea31570e23f 100644 (file)
@@ -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;
        }