import java.lang.UnsupportedOperationException;
import java.util.NoSuchElementException;
import java.util.Iterator;
+import org.altusmetrum.AltosLib.*;
class AltosDataPointReader implements Iterable<AltosDataPoint> {
Iterator<AltosRecord> iter;
AltosState state;
AltosRecord record;
+ boolean has_gps;
+ boolean has_accel;
+ boolean has_ignite;
- public AltosDataPointReader(Iterable<AltosRecord> reader) {
+ final static int MISSING = AltosRecord.MISSING;
+
+ public AltosDataPointReader(AltosRecordIterable reader) {
this.iter = reader.iterator();
this.state = null;
+ has_accel = reader.has_accel();
+ has_gps = reader.has_gps();
+ has_ignite = reader.has_ignite();
}
private void read_next_record()
public double acceleration() { return record.acceleration(); }
public double pressure() { return record.raw_pressure(); }
public double altitude() { return record.raw_altitude(); }
- public double height() { return record.raw_height(); }
+ public double height() { return record.raw_height(); }
public double accel_speed() { return record.accel_speed(); }
public double baro_speed() { return state.baro_speed; }
public double temperature() { return record.temperature(); }
public double battery_voltage() { return record.battery_voltage(); }
public double drogue_voltage() { return record.drogue_voltage(); }
public double main_voltage() { return record.main_voltage(); }
+ public boolean has_accel() { return has_accel; }
};
}
throw new UnsupportedOperationException();
}
public boolean hasNext() {
+ if (record != null && record.state == Altos.ao_flight_landed)
+ return false;
return iter.hasNext();
}
public AltosDataPoint next() {
- read_next_record();
+ do {
+ read_next_record();
+ } while (record.time < -1.0 && hasNext());
return current_dp();
}
};