After all of the raw data is captured, the derived data needs to be
computed by calling the 'finish' function.
Signed-off-by: Keith Packard <keithp@keithp.com>
has_flight_state = false;
has_basic = false;
has_flight_state = false;
has_basic = false;
+ /* Called after all records are captured */
+ public void finish() {
+ }
+
public abstract void set_rssi(int rssi, int status);
public abstract void set_received_time(long received_time);
public abstract void set_rssi(int rssi, int status);
public abstract void set_received_time(long received_time);
for (AltosEepromRecord record : ordered) {
record.provide_data(listener, cal_data);
}
for (AltosEepromRecord record : ordered) {
record.provide_data(listener, cal_data);
}
}
public AltosEepromRecordSet(AltosEepromNew eeprom) {
}
public AltosEepromRecordSet(AltosEepromNew eeprom) {
public class AltosFlightSeries extends AltosDataListener {
public class AltosFlightSeries extends AltosDataListener {
- public ArrayList<AltosTimeSeries> series;
+ public ArrayList<AltosTimeSeries> series = new ArrayList<AltosTimeSeries>();
public int[] indices() {
int[] indices = new int[series.size()];
public int[] indices() {
int[] indices = new int[series.size()];
altitude_series.add(time(), altitude);
}
altitude_series.add(time(), altitude);
}
- private void compute_height(double ground_altitude) {
- if (height_series == null) {
+ private void compute_height() {
+ double ground_altitude = cal_data.ground_altitude;
+ if (height_series == null && ground_altitude != AltosLib.MISSING) {
height_series = add_series(height_name, AltosConvert.height);
for (AltosTimeValue alt : altitude_series)
height_series.add(alt.time, alt.value - ground_altitude);
height_series = add_series(height_name, AltosConvert.height);
for (AltosTimeValue alt : altitude_series)
height_series.add(alt.time, alt.value - ground_altitude);
public void set_companion(AltosCompanion companion) {
}
public void set_companion(AltosCompanion companion) {
}
- public void fill_in() {
compute_speed();
compute_accel();
compute_speed();
compute_accel();
- if (cal_data.ground_altitude != AltosLib.MISSING)
- compute_height(cal_data.ground_altitude);
- }
-
- public void init() {
- time = AltosLib.MISSING;
- series = new ArrayList<AltosTimeSeries>();
}
public AltosTimeSeries[] series() {
}
public AltosTimeSeries[] series() {
return series.toArray(new AltosTimeSeries[0]);
}
public AltosFlightSeries(AltosCalData cal_data) {
super(cal_data);
return series.toArray(new AltosTimeSeries[0]);
}
public AltosFlightSeries(AltosCalData cal_data) {
super(cal_data);
}
if (landed_state_time == AltosLib.MISSING)
}
if (landed_state_time == AltosLib.MISSING)
- return AltosLib.MISSING;
+ landed_state_time = series.height_series.get(series.height_series.size()-1).time;
double landed_height = AltosLib.MISSING;
for (AltosTimeValue height : series.height_series) {
double landed_height = AltosLib.MISSING;
for (AltosTimeValue height : series.height_series) {
double end_time = 0;
double landed_time = landed_time(series);
double end_time = 0;
double landed_time = landed_time(series);
year = month = day = AltosLib.MISSING;
hour = minute = second = AltosLib.MISSING;
serial = flight = AltosLib.MISSING;
year = month = day = AltosLib.MISSING;
hour = minute = second = AltosLib.MISSING;
serial = flight = AltosLib.MISSING;
state_start[s] = boost_time;
else
state_start[s] = series.state_series.time_of(s);
state_start[s] = boost_time;
else
state_start[s] = series.state_series.time_of(s);
- if (s == AltosLib.ao_flight_landed)
+ if (s == AltosLib.ao_flight_main)
state_end[s] = landed_time;
else
state_end[s] = series.state_series.time_of(s+1);
state_end[s] = landed_time;
else
state_end[s] = series.state_series.time_of(s+1);
if (cal_data.time() >= -1)
telem.provide_data(listener, cal_data);
}
if (cal_data.time() >= -1)
telem.provide_data(listener, cal_data);
}
}
public AltosTelemetryFile(FileInputStream input) {
}
public AltosTelemetryFile(FileInputStream input) {
AltosTelemetry telemetry;
TreeSet<AltosTelemetryRecord> ordered;
AltosTelemetry telemetry;
TreeSet<AltosTelemetryRecord> ordered;
- public void capture_series(AltosDataListener series) {
+ public void capture_series(AltosDataListener listener) {
for (AltosTelemetryRecord record : ordered) {
for (AltosTelemetryRecord record : ordered) {
- record.update_state(series);
+ record.update_state(listener);
}
public AltosTelemetryRecordSet(AltosTelemetry telemetry) {
}
public AltosTelemetryRecordSet(AltosTelemetry telemetry) {
set.capture_series(flight_series);
set.capture_series(flight_series);
- flight_series.fill_in();
+ flight_series.finish();
stats = new AltosFlightStats(flight_series);
stats = new AltosFlightStats(flight_series);
}
public AltosUITimeSeries[] series(AltosCalData cal_data) {
}
public AltosUITimeSeries[] series(AltosCalData cal_data) {
return series.toArray(new AltosUITimeSeries[0]);
}
return series.toArray(new AltosUITimeSeries[0]);
}