int last_serial = -1;
void show(AltosState state, AltosListenerState listener_state) {
- if (state.serial != last_serial) {
+ AltosCalData cal_data = state.cal_data;
+ if (cal_data.serial != last_serial) {
show();
- if (state.serial == AltosLib.MISSING)
+ if (cal_data.serial == AltosLib.MISSING)
value.setText("none");
else
- value.setText(String.format("%d", state.serial));
- last_serial = state.serial;
+ value.setText(String.format("%d", cal_data.serial));
+ last_serial = cal_data.serial;
}
}
int last_flight = -1;
void show(AltosState state, AltosListenerState listener_state) {
- if (state.flight != last_flight) {
+ AltosCalData cal_data = state.cal_data;
+ if (cal_data.flight != last_flight) {
show();
- if (state.flight == AltosLib.MISSING)
+ if (cal_data.flight == AltosLib.MISSING)
value.setText("none");
else
- value.setText(String.format("%d", state.flight));
- last_flight = state.flight;
+ value.setText(String.format("%d", cal_data.flight));
+ last_flight = cal_data.flight;
}
}
AltosGraphNew graph;
AltosUIEnable enable;
AltosUIMap map;
- AltosState state;
- AltosGraphDataSet graphDataSet;
AltosFlightStats stats;
AltosFlightStatsTable statsTable;
+ AltosGPS gps;
boolean has_gps;
- void fill_map(AltosStateIterable states) {
- boolean any_gps = false;
- for (AltosState state : states) {
- if (state.gps != null && state.gps.locked && state.gps.nsat >= 4) {
+ void fill_map(AltosFlightSeries flight_series) {
+ boolean any_gps = false;
+
+ for (AltosGPSTimeValue gtv : flight_series.gps_series) {
+ AltosGPS gps = gtv.gps;
+ if (gps != null &&
+ gps.locked &&
+ gps.nsat >= 4) {
if (map == null)
map = new AltosUIMap();
- map.show(state, null);
+ map.show(gps, AltosLib.ao_flight_pad);
+ this.gps = gps;
has_gps = true;
}
}
enable.units_changed(imperial_units);
}
- AltosGraphUI(AltosStateIterable states, AltosRecordSet record_set, File file) throws InterruptedException, IOException {
+ AltosGraphUI(AltosRecordSet set, File file) throws InterruptedException, IOException {
super(file.getName());
- state = null;
+ AltosCalData cal_data = set.cal_data();
+
pane = new JTabbedPane();
enable = new AltosUIEnable();
- stats = new AltosFlightStats(states);
-// graphDataSet = new AltosGraphDataSet(states);
+ AltosUIFlightSeries flight_series = new AltosUIFlightSeries(cal_data);
+
+ set.capture_series(flight_series);
+
+ flight_series.fill_in();
+
+ stats = new AltosFlightStats(flight_series);
- graph = new AltosGraphNew(enable, stats, record_set);
+ graph = new AltosGraphNew(enable, stats, flight_series, cal_data);
statsTable = new AltosFlightStatsTable(stats);
pane.add("Flight Statistics", statsTable);
has_gps = false;
- fill_map(states);
+ fill_map(flight_series);
if (has_gps)
pane.add("Map", map);
pack();
setVisible(true);
- if (state != null && has_gps)
- map.centre(state);
+ if (gps != null)
+ map.centre(gps);
}
}
AltosDataChooser chooser = new AltosDataChooser(
AltosUI.this);
- Iterable<AltosState> states = chooser.runDialog();
- if (states != null) {
- AltosFlightReader reader = new AltosReplayReader(states.iterator(),
- chooser.file());
- new AltosFlightUI(voice, reader);
- }
+ AltosRecordSet set = chooser.runDialog();
+/* XXX fixme */
+// if (states != null) {
+// AltosFlightReader reader = new AltosReplayReader(states.iterator(),
+// chooser.file());
+// new AltosFlightUI(voice, reader);
+// }
}
/* Connect to TeleMetrum, either directly or through
new AltosEepromManage(AltosUI.this, AltosLib.product_any);
}
+ private static AltosFlightSeries make_series(AltosRecordSet set) {
+ AltosFlightSeries series = new AltosFlightSeries(new AltosCalData());
+ set.capture_series(series);
+ return series;
+ }
+
/* Load a flight log file and write out a CSV file containing
* all of the data in standard units
*/
private void ExportData() {
AltosDataChooser chooser;
chooser = new AltosDataChooser(this);
- AltosStateIterable states = chooser.runDialog();
- if (states == null)
+ AltosRecordSet set = chooser.runDialog();
+ if (set == null)
return;
- new AltosCSVUI(AltosUI.this, states, chooser.file());
+ AltosFlightSeries series = make_series(set);
+ new AltosCSVUI(AltosUI.this, series, series.cal_data, chooser.file());
}
/* Load a flight log CSV file and display a pretty graph.
private void GraphData() {
AltosDataChooser chooser;
chooser = new AltosDataChooser(this);
- AltosStateIterable states = chooser.runDialog();
- if (states == null)
+ AltosRecordSet set = chooser.runDialog();
+ if (set == null)
return;
try {
- new AltosGraphUI(states, new AltosEepromRecordSet(new FileReader(chooser.file())), chooser.file());
+ new AltosGraphUI(set, chooser.file());
} catch (InterruptedException ie) {
} catch (IOException ie) {
}
}
}
- static AltosStateIterable open_logfile(File file) {
+ static AltosRecordSet open_logfile(File file) {
try {
if (file.getName().endsWith("telem"))
return new AltosTelemetryFile(new FileInputStream(file));
static final int process_cat = 6;
static boolean process_csv(File input) {
- AltosStateIterable states = open_logfile(input);
- if (states == null)
+ AltosRecordSet set = open_logfile(input);
+ if (set == null)
return false;
File output = Altos.replace_extension(input,".csv");
AltosWriter writer = open_csv(output);
if (writer == null)
return false;
- writer.write(states);
+ AltosFlightSeries series = make_series(set);
+ writer.write(series);
writer.close();
}
return true;
}
static boolean process_kml(File input) {
- AltosStateIterable states = open_logfile(input);
- if (states == null)
+ AltosRecordSet set = open_logfile(input);
+ if (set == null)
return false;
File output = Altos.replace_extension(input,".kml");
AltosWriter writer = open_kml(output);
if (writer == null)
return false;
- writer.write(states);
+ AltosFlightSeries series = make_series(set);
+ writer.write(series);
writer.close();
return true;
}
}
- static AltosStateIterable record_iterable(File file) {
+ static AltosRecordSet record_set(File file) {
FileInputStream in;
if (file.getName().endsWith("telem")) {
try {
}
static AltosReplayReader replay_file(File file) {
- AltosStateIterable states = record_iterable(file);
- if (states == null)
+ AltosRecordSet set = record_set(file);
+ if (set == null)
return null;
- return new AltosReplayReader(states.iterator(), file);
+// return new AltosReplayReader(states.iterator(), file);
+ return null;
}
static boolean process_replay(File file) {
}
static boolean process_graph(File file) {
- AltosStateIterable states = record_iterable(file);
- if (states == null)
+ AltosRecordSet set = record_set(file);
+ if (set == null)
return false;
try {
- new AltosGraphUI(states, new AltosEepromRecordSet(new FileReader(file)), file);
+ new AltosGraphUI(set, file);
return true;
} catch (InterruptedException ie) {
} catch (IOException ie) {
}
static boolean process_summary(File file) {
- AltosStateIterable states = record_iterable(file);
- if (states == null)
+ AltosRecordSet set = record_set(file);
+ if (set == null)
return false;
try {
System.out.printf("%s:\n", file.toString());
- AltosFlightStats stats = new AltosFlightStats(states);
+ AltosFlightSeries series = make_series(set);
+ AltosFlightStats stats = new AltosFlightStats(series);
if (stats.serial != AltosLib.MISSING)
System.out.printf("Serial: %5d\n", stats.serial);
if (stats.flight != AltosLib.MISSING)
static boolean process_cat(File file) {
try {
- AltosStateIterable eef = record_iterable(file);
-
- for (AltosState state : eef) {
- if ((state.set & AltosState.set_gps) != 0) {
- System.out.printf ("time %d %d-%d-%d %d:%d:%d lat %g lon %g alt %g\n",
- state.gps.seconds(),
- state.gps.year,
- state.gps.month,
- state.gps.day,
- state.gps.hour,
- state.gps.minute,
- state.gps.second,
- state.gps.lat,
- state.gps.lon,
- state.gps.alt);
- } else {
- System.out.printf ("tick %d state %d height %g\n",
- state.tick, state.state(), state.height());
- }
- }
+ AltosRecordSet set = record_set(file);
+
+// for (AltosState state : eef) {
+// if ((state.set & AltosState.set_gps) != 0) {
+// System.out.printf ("time %d %d-%d-%d %d:%d:%d lat %g lon %g alt %g\n",
+// state.gps.seconds(),
+// state.gps.year,
+// state.gps.month,
+// state.gps.day,
+// state.gps.hour,
+// state.gps.minute,
+// state.gps.second,
+// state.gps.lat,
+// state.gps.lon,
+// state.gps.alt);
+// } else {
+// System.out.printf ("tick %d state %d height %g\n",
+// state.tick, state.state(), state.height());
+// }
+// }
} catch (Exception e) {
System.out.printf("Failed to open file '%s'\n", file);