altos: struct ao_log_mega doesn't have a ground temp value
[fw/altos] / altoslib / AltosEepromMegaIterable.java
index 28a298b3cb829a3e73e8877308ed6e728665d404..1ab2fcc8b473aee35e45a4306c5f32d481e19d89 100644 (file)
@@ -20,52 +20,6 @@ package org.altusmetrum.AltosLib;
 import java.io.*;
 import java.util.*;
 import java.text.*;
-import java.util.prefs.*;
-import java.util.concurrent.LinkedBlockingQueue;
-
-/*
- * AltosRecords with an index field so they can be sorted by tick while preserving
- * the original ordering for elements with matching ticks
- */
-class AltosOrderedMegaRecord extends AltosEepromMega implements Comparable<AltosOrderedMegaRecord> {
-
-       public int      index;
-
-       public AltosOrderedMegaRecord(String line, int in_index, int prev_tick, boolean prev_tick_valid)
-               throws ParseException {
-               super(line);
-               if (prev_tick_valid) {
-                       tick |= (prev_tick & ~0xffff);
-                       if (tick < prev_tick) {
-                               if (prev_tick - tick > 0x8000)
-                                       tick += 0x10000;
-                       } else {
-                               if (tick - prev_tick > 0x8000)
-                                       tick -= 0x10000;
-                       }
-               }
-               index = in_index;
-       }
-
-       public AltosOrderedMegaRecord(int in_cmd, int in_tick, int in_a, int in_b, int in_index) {
-               super(in_cmd, in_tick);
-               a = in_a;
-               b = in_b;
-               index = in_index;
-       }
-
-       public String toString() {
-               return String.format("%d.%d %04x %04x %04x",
-                                    cmd, index, tick, a, b);
-       }
-
-       public int compareTo(AltosOrderedMegaRecord o) {
-               int     tick_diff = tick - o.tick;
-               if (tick_diff != 0)
-                       return tick_diff;
-               return index - o.index;
-       }
-}
 
 public class AltosEepromMegaIterable extends AltosRecordIterable {
 
@@ -108,7 +62,7 @@ public class AltosEepromMegaIterable extends AltosRecordIterable {
                }
        }
 
-       void update_state(AltosRecord state, AltosEepromMega record, EepromState eeprom) {
+       void update_state(AltosRecordMM state, AltosEepromMega record, EepromState eeprom) {
                state.tick = record.tick;
                switch (record.cmd) {
                case AltosLib.AO_LOG_FLIGHT:
@@ -122,7 +76,8 @@ public class AltosEepromMegaIterable extends AltosRecordIterable {
                        break;
                case AltosLib.AO_LOG_SENSOR:
                        state.accel = record.accel();
-                       state.pres = baro.set(record.pres(), record.temp());
+                       baro.set(record.pres(), record.temp());
+                       state.pres = baro.pa;
                        state.temp = baro.cc;
                        state.imu = new AltosIMU();
                        state.imu.accel_x = record.accel_x();
@@ -161,15 +116,20 @@ public class AltosEepromMegaIterable extends AltosRecordIterable {
                        eeprom.seen |= seen_sensor;
                        break;
                case AltosLib.AO_LOG_TEMP_VOLT:
-                       state.batt = record.v_batt();
+                       state.v_batt = record.v_batt();
+                       state.v_pyro = record.v_pbatt();
+                       for (int i = 0; i < AltosRecordMM.num_sense; i++)
+                               state.sense[i] = record.sense(i);
                        eeprom.seen |= seen_temp_volt;
                        break;
-               case AltosLib.AO_LOG_DEPLOY:
-                       state.drogue = record.a;
-                       state.main = record.b;
-                       eeprom.seen |= seen_deploy;
-                       has_ignite = true;
-                       break;
+//
+//             case AltosLib.AO_LOG_DEPLOY:
+//                     state.drogue = record.a;
+//                     state.main = record.b;
+//                     eeprom.seen |= seen_deploy;
+//                     has_ignite = true;
+//                     break;
+
                case AltosLib.AO_LOG_STATE:
                        state.state = record.state();
                        break;
@@ -278,8 +238,8 @@ public class AltosEepromMegaIterable extends AltosRecordIterable {
                LinkedList<AltosRecord>         list = new LinkedList<AltosRecord>();
                Iterator<AltosOrderedMegaRecord>        iterator = records.iterator();
                AltosOrderedMegaRecord          record = null;
-               AltosRecord                     state = new AltosRecord();
-               boolean                         last_reported = false;
+               AltosRecordMM                   state = new AltosRecordMM();
+               //boolean                               last_reported = false;
                EepromState                     eeprom = new EepromState();
 
                state.state = AltosLib.ao_flight_pad;
@@ -295,13 +255,13 @@ public class AltosEepromMegaIterable extends AltosRecordIterable {
                while (iterator.hasNext()) {
                        record = iterator.next();
                        if ((eeprom.seen & seen_basic) == seen_basic && record.tick != state.tick) {
-                               AltosRecord r = new AltosRecord(state);
+                               AltosRecordMM r = state.clone();
                                r.time = (r.tick - eeprom.boost_tick) / 100.0;
                                list.add(r);
                        }
                        update_state(state, record, eeprom);
                }
-               AltosRecord r = new AltosRecord(state);
+               AltosRecordMM r = state.clone();
                r.time = (r.tick - eeprom.boost_tick) / 100.0;
                list.add(r);
                return list;
@@ -442,12 +402,10 @@ public class AltosEepromMegaIterable extends AltosRecordIterable {
 
                try {
                        for (;;) {
-                               String line = AltosRecord.gets(input);
+                               String line = AltosLib.gets(input);
                                if (line == null)
                                        break;
                                AltosOrderedMegaRecord record = new AltosOrderedMegaRecord(line, index++, prev_tick, prev_tick_valid);
-                               if (record == null)
-                                       break;
                                if (record.cmd == AltosLib.AO_LOG_INVALID)
                                        continue;
                                prev_tick = record.tick;