summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--altoslib/AltosCSV.java2
-rw-r--r--altoslib/AltosDataListener.java4
-rw-r--r--altoslib/AltosEepromRecordSet.java1
-rw-r--r--altoslib/AltosFlightSeries.java20
-rw-r--r--altoslib/AltosFlightStats.java6
-rw-r--r--altoslib/AltosTelemetryFile.java1
-rw-r--r--altoslib/AltosTelemetryRecordSet.java5
-rw-r--r--altosui/AltosGraphUI.java2
-rw-r--r--altosuilib/AltosUIFlightSeries.java2
9 files changed, 23 insertions, 20 deletions
diff --git a/altoslib/AltosCSV.java b/altoslib/AltosCSV.java
index 38afdc64..5117a702 100644
--- a/altoslib/AltosCSV.java
+++ b/altoslib/AltosCSV.java
@@ -393,7 +393,7 @@ public class AltosCSV implements AltosWriter {
this.series = series;
- series.fill_in();
+ series.finish();
has_flight_state = false;
has_basic = false;
diff --git a/altoslib/AltosDataListener.java b/altoslib/AltosDataListener.java
index 4a6fe04d..14c29d85 100644
--- a/altoslib/AltosDataListener.java
+++ b/altoslib/AltosDataListener.java
@@ -36,6 +36,10 @@ public abstract class AltosDataListener {
this.state = state;
}
+ /* 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);
diff --git a/altoslib/AltosEepromRecordSet.java b/altoslib/AltosEepromRecordSet.java
index 69159cdf..183cb9ae 100644
--- a/altoslib/AltosEepromRecordSet.java
+++ b/altoslib/AltosEepromRecordSet.java
@@ -44,6 +44,7 @@ public class AltosEepromRecordSet implements AltosRecordSet {
for (AltosEepromRecord record : ordered) {
record.provide_data(listener, cal_data);
}
+ listener.finish();
}
public AltosEepromRecordSet(AltosEepromNew eeprom) {
diff --git a/altoslib/AltosFlightSeries.java b/altoslib/AltosFlightSeries.java
index 7bedf389..6f4f7bb1 100644
--- a/altoslib/AltosFlightSeries.java
+++ b/altoslib/AltosFlightSeries.java
@@ -18,7 +18,7 @@ import java.util.*;
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()];
@@ -206,8 +206,9 @@ public class AltosFlightSeries extends AltosDataListener {
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);
@@ -563,25 +564,18 @@ public class AltosFlightSeries extends AltosDataListener {
public void set_companion(AltosCompanion companion) {
}
- public void fill_in() {
+ public void finish() {
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>();
+ compute_height();
}
public AltosTimeSeries[] series() {
- fill_in();
+ finish();
return series.toArray(new AltosTimeSeries[0]);
}
public AltosFlightSeries(AltosCalData cal_data) {
super(cal_data);
- init();
}
}
diff --git a/altoslib/AltosFlightStats.java b/altoslib/AltosFlightStats.java
index 2948ad38..32beb8b5 100644
--- a/altoslib/AltosFlightStats.java
+++ b/altoslib/AltosFlightStats.java
@@ -59,7 +59,7 @@ public class AltosFlightStats {
}
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) {
@@ -115,6 +115,8 @@ public class AltosFlightStats {
double end_time = 0;
double landed_time = landed_time(series);
+ series.finish();
+
year = month = day = AltosLib.MISSING;
hour = minute = second = AltosLib.MISSING;
serial = flight = AltosLib.MISSING;
@@ -136,7 +138,7 @@ public class AltosFlightStats {
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);
diff --git a/altoslib/AltosTelemetryFile.java b/altoslib/AltosTelemetryFile.java
index 8adf7e69..46a5d060 100644
--- a/altoslib/AltosTelemetryFile.java
+++ b/altoslib/AltosTelemetryFile.java
@@ -124,6 +124,7 @@ public class AltosTelemetryFile implements AltosRecordSet {
if (cal_data.time() >= -1)
telem.provide_data(listener, cal_data);
}
+ listener.finish();
}
public AltosTelemetryFile(FileInputStream input) {
diff --git a/altoslib/AltosTelemetryRecordSet.java b/altoslib/AltosTelemetryRecordSet.java
index 0cb95261..0323c25e 100644
--- a/altoslib/AltosTelemetryRecordSet.java
+++ b/altoslib/AltosTelemetryRecordSet.java
@@ -21,10 +21,11 @@ public class AltosTelemetryRecordSet implements AltosRecordSet {
AltosTelemetry telemetry;
TreeSet<AltosTelemetryRecord> ordered;
- public void capture_series(AltosDataListener series) {
+ public void capture_series(AltosDataListener listener) {
for (AltosTelemetryRecord record : ordered) {
- record.update_state(series);
+ record.update_state(listener);
}
+ listener.finish();
}
public AltosTelemetryRecordSet(AltosTelemetry telemetry) {
diff --git a/altosui/AltosGraphUI.java b/altosui/AltosGraphUI.java
index a3107f2b..db0cac2f 100644
--- a/altosui/AltosGraphUI.java
+++ b/altosui/AltosGraphUI.java
@@ -93,7 +93,7 @@ public class AltosGraphUI extends AltosUIFrame implements AltosFontListener, Alt
set.capture_series(flight_series);
- flight_series.fill_in();
+ flight_series.finish();
stats = new AltosFlightStats(flight_series);
diff --git a/altosuilib/AltosUIFlightSeries.java b/altosuilib/AltosUIFlightSeries.java
index 0bcc8a6e..eade12af 100644
--- a/altosuilib/AltosUIFlightSeries.java
+++ b/altosuilib/AltosUIFlightSeries.java
@@ -113,7 +113,7 @@ public class AltosUIFlightSeries extends AltosFlightSeries {
}
public AltosUITimeSeries[] series(AltosCalData cal_data) {
- fill_in();
+ finish();
return series.toArray(new AltosUITimeSeries[0]);
}