altoslib: Don't record 'pad' state in FlightSeries
[fw/altos] / altoslib / AltosEepromRecordGps.java
index d547ef02f04cb303f192d032e7c968656ebdfb7d..a992abff6cb242d2e5b5939ec82f15647028d8d1 100644 (file)
@@ -71,36 +71,19 @@ public class AltosEepromRecordGps extends AltosEepromRecord {
                return start - o.start;
        }
 
-       public void update_state(AltosState state) {
-               super.update_state(state);
-
-               AltosGPS        gps;
-
-               /* Flush any pending RecordGps changes */
-               if (state.gps_pending) {
-                       switch (cmd()) {
-                       case AltosLib.AO_LOG_GPS_LAT:
-                       case AltosLib.AO_LOG_GPS_LON:
-                       case AltosLib.AO_LOG_GPS_ALT:
-                       case AltosLib.AO_LOG_GPS_SAT:
-                       case AltosLib.AO_LOG_GPS_DATE:
-                               break;
-                       default:
-                               state.set_temp_gps();
-                               break;
-                       }
-               }
+       public void provide_data(AltosDataListener listener, AltosCalData cal_data) {
+               super.provide_data(listener, cal_data);
 
                switch (cmd()) {
                case AltosLib.AO_LOG_FLIGHT:
-                       if (state.flight == AltosLib.MISSING) {
-                               state.set_boost_tick(tick());
-                               state.set_flight(flight());
+                       if (cal_data.flight == AltosLib.MISSING) {
+                               cal_data.set_boost_tick();
+                               cal_data.set_flight(flight());
                        }
                        /* no place to log start lat/lon yet */
                        break;
                case AltosLib.AO_LOG_GPS_TIME:
-                       gps = state.make_temp_gps(false);
+                       AltosGPS gps = new AltosGPS();
                        gps.lat = latitude() / 1e7;
                        gps.lon = longitude() / 1e7;
                        if (eeprom.config_data().altitude_32 == 1)
@@ -140,14 +123,16 @@ public class AltosEepromRecordGps extends AltosEepromRecord {
                                if (gps.vdop < 0.8)
                                        gps.vdop += 2.56;
                        }
+                       listener.set_gps(gps);
                        break;
                }
        }
 
        public AltosEepromRecord next() {
-               if (start + length + length < eeprom.data.size())
-                       return new AltosEepromRecordGps(eeprom, start + length);
-               return null;
+               int     s = next_start();
+               if (s < 0)
+                       return null;
+               return new AltosEepromRecordGps(eeprom, s);
        }
 
        public AltosEepromRecordGps(AltosEepromNew eeprom, int start) {