altoslib: Raise ParseException on invalid eeprom format
[fw/altos] / altoslib / AltosEepromChunk.java
index 77b22fe274bf9210e8749732af227507f40bbd54..c03fa931fdc0f230b307e97d726b4ea31570e23f 100644 (file)
@@ -15,7 +15,7 @@
  * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
  */
 
-package org.altusmetrum.AltosLib;
+package org.altusmetrum.altoslib_2;
 
 import java.text.*;
 import java.util.concurrent.*;
@@ -62,6 +62,34 @@ public class AltosEepromChunk {
                return true;
        }
 
+       public AltosEeprom eeprom(int offset, int log_format, AltosState state) throws ParseException {
+               AltosEeprom     eeprom = null;
+               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;
+       }
+
        public AltosEepromChunk(AltosLink link, int block, boolean flush)
                throws TimeoutException, InterruptedException {