altosui: Compute flight state from eeprom data
[fw/altos] / ao-tools / altosui / AltosEepromRecord.java
index 5b35935266f4c839edf38cb1823ddc08d2a1cec2..86ac1fd26df67aadbeff272de8fa321debdc277e 100644 (file)
@@ -44,25 +44,65 @@ public class AltosEepromRecord {
        public int      tick;
        public int      a;
        public int      b;
+       String          data;
+       public boolean  tick_valid;
 
        public AltosEepromRecord (String line) throws ParseException {
+               tick_valid = false;
+               tick = 0;
+               a = 0;
+               b = 0;
+               data = null;
                if (line == null) {
                        cmd = Altos.AO_LOG_INVALID;
                } else {
                        String[] tokens = line.split("\\s+");
 
-                       if (tokens[0].equals("serial-number")) {
-                               cmd = Altos.AO_LOG_SERIAL_NUMBER;
-                               tick = 0;
-                               a = Integer.parseInt(tokens[1]);
-                               b = 0;
-                       } else {
+                       if (tokens[0].length() == 1) {
                                if (tokens.length != 4)
                                        throw new ParseException(line, 0);
                                cmd = tokens[0].codePointAt(0);
-                               tick = Integer.parseInt(tokens[1]);
+                               tick = Integer.parseInt(tokens[1],16);
+                               tick_valid = true;
+                               a = Integer.parseInt(tokens[2],16);
+                               b = Integer.parseInt(tokens[3],16);
+                       } else if (tokens[0].equals("Config") && tokens[1].equals("version:")) {
+                               cmd = Altos.AO_LOG_CONFIG_VERSION;
+                               data = tokens[2];
+                       } else if (tokens[0].equals("Main") && tokens[1].equals("deploy:")) {
+                               cmd = Altos.AO_LOG_MAIN_DEPLOY;
+                               a = Integer.parseInt(tokens[2]);
+                       } else if (tokens[0].equals("Apogee") && tokens[1].equals("delay:")) {
+                               cmd = Altos.AO_LOG_APOGEE_DELAY;
+                               a = Integer.parseInt(tokens[2]);
+                       } else if (tokens[0].equals("Radio") && tokens[1].equals("channel:")) {
+                               cmd = Altos.AO_LOG_RADIO_CHANNEL;
                                a = Integer.parseInt(tokens[2]);
-                               b = Integer.parseInt(tokens[3]);
+                       } else if (tokens[0].equals("Callsign:")) {
+                               cmd = Altos.AO_LOG_CALLSIGN;
+                               data = tokens[1].replaceAll("\"","");
+                       } else if (tokens[0].equals("Accel") && tokens[1].equals("cal")) {
+                               cmd = Altos.AO_LOG_ACCEL_CAL;
+                               a = Integer.parseInt(tokens[3]);
+                               b = Integer.parseInt(tokens[5]);
+                       } else if (tokens[0].equals("Radio") && tokens[1].equals("cal:")) {
+                               cmd = Altos.AO_LOG_RADIO_CAL;
+                               a = Integer.parseInt(tokens[2]);
+                       } else if (tokens[0].equals("manufacturer")) {
+                               cmd = Altos.AO_LOG_MANUFACTURER;
+                               data = tokens[1];
+                       } else if (tokens[0].equals("product")) {
+                               cmd = Altos.AO_LOG_PRODUCT;
+                               data = tokens[1];
+                       } else if (tokens[0].equals("serial-number")) {
+                               cmd = Altos.AO_LOG_SERIAL_NUMBER;
+                               a = Integer.parseInt(tokens[1]);
+                       } else if (tokens[0].equals("software-version")) {
+                               cmd = Altos.AO_LOG_SOFTWARE_VERSION;
+                               data = tokens[1];
+                       } else {
+                               cmd = Altos.AO_LOG_INVALID;
+                               data = line;
                        }
                }
        }