altoslib: Deal with new Mega log format that has 32-bit gyro cal
[fw/altos] / altoslib / AltosEepromChunk.java
index 48d29e1b603e9a9d8fdf558602e226d2495d7e3a..73a45717da7c6c5decbf17ac03796736b06563ef 100644 (file)
@@ -15,7 +15,7 @@
  * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
  */
 
-package org.altusmetrum.altoslib_2;
+package org.altusmetrum.altoslib_5;
 
 import java.text.*;
 import java.util.concurrent.*;
@@ -62,31 +62,34 @@ 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:
+               case AltosLib.AO_LOG_FORMAT_TELEMEGA_OLD:
+                       eeprom = new AltosEepromMega(this, offset, log_format);
+                       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;
+               case AltosLib.AO_LOG_FORMAT_TELEGPS:
+                       eeprom = new AltosEepromGPS(this, offset);
+                       break;
+               default:
+                       throw new ParseException("unknown eeprom format " + log_format, 0);
                }
                return eeprom;
        }
@@ -126,4 +129,4 @@ public class AltosEepromChunk {
                        }
                }
        }
-}
\ No newline at end of file
+}