Signed-off-by: Keith Packard <keithp@keithp.com>
int last_serial = -1;
void show(AltosState state, AltosListenerState listener_state) {
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) {
- if (state.serial == AltosLib.MISSING)
+ if (cal_data.serial == AltosLib.MISSING)
value.setText("none");
else
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) {
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) {
- if (state.flight == AltosLib.MISSING)
+ if (cal_data.flight == AltosLib.MISSING)
value.setText("none");
else
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;
status_update.saved_listener_state = listener_state;
if (state == null)
status_update.saved_listener_state = listener_state;
if (state == null)
- state = new AltosState();
+ state = new AltosState(new AltosCalData());
if (state.state() != Altos.ao_flight_startup) {
if (!has_state) {
if (state.state() != Altos.ao_flight_startup) {
if (!has_state) {
AltosGraphNew graph;
AltosUIEnable enable;
AltosUIMap map;
AltosGraphNew graph;
AltosUIEnable enable;
AltosUIMap map;
- AltosState state;
- AltosGraphDataSet graphDataSet;
AltosFlightStats stats;
AltosFlightStatsTable statsTable;
AltosFlightStats stats;
AltosFlightStatsTable statsTable;
- 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();
if (map == null)
map = new AltosUIMap();
+ map.show(gps, AltosLib.ao_flight_pad);
+ this.gps = gps;
enable.units_changed(imperial_units);
}
enable.units_changed(imperial_units);
}
- AltosGraphUI(AltosStateIterable states, AltosRecordSet record_set, File file) throws InterruptedException, IOException {
+ AltosGraphUI(AltosRecordSet set, File file) throws InterruptedException, IOException {
+ AltosCalData cal_data = set.cal_data();
+
pane = new JTabbedPane();
enable = new AltosUIEnable();
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);
statsTable = new AltosFlightStatsTable(stats);
pane.add("Flight Statistics", statsTable);
has_gps = false;
pane.add("Flight Statistics", statsTable);
has_gps = false;
+ fill_map(flight_series);
if (has_gps)
pane.add("Map", map);
if (has_gps)
pane.add("Map", map);
pack();
setVisible(true);
pack();
setVisible(true);
- if (state != null && has_gps)
- map.centre(state);
+ if (gps != null)
+ map.centre(gps);
if (file != null) {
String filename = file.getName();
try {
if (file != null) {
String filename = file.getName();
try {
- AltosStateIterable states = null;
AltosRecordSet record_set = null;
if (filename.endsWith("eeprom")) {
AltosRecordSet record_set = null;
if (filename.endsWith("eeprom")) {
- FileReader in = new FileReader(file);
- states = new AltosEepromFile(in);
record_set = new AltosEepromRecordSet(new FileReader(file));
} else if (filename.endsWith("telem")) {
FileInputStream in = new FileInputStream(file);
record_set = new AltosEepromRecordSet(new FileReader(file));
} else if (filename.endsWith("telem")) {
FileInputStream in = new FileInputStream(file);
- states = new AltosTelemetryFile(in);
+ record_set = new AltosTelemetryFile(in);
} else {
throw new FileNotFoundException(filename);
}
try {
} else {
throw new FileNotFoundException(filename);
}
try {
- new AltosGraphUI(states, record_set, file);
+ new AltosGraphUI(record_set, file);
} catch (InterruptedException ie) {
} catch (IOException ie) {
}
} catch (InterruptedException ie) {
} catch (IOException ie) {
}
class LoggingReady extends AltosUIIndicator {
public void show (AltosState state, AltosListenerState listener_state) {
class LoggingReady extends AltosUIIndicator {
public void show (AltosState state, AltosListenerState listener_state) {
- if (state == null || state.flight == AltosLib.MISSING) {
+ if (state == null || state.cal_data.flight == AltosLib.MISSING) {
- if (state.flight != 0) {
+ if (state.cal_data.flight != 0) {
if (state.state() <= Altos.ao_flight_pad)
show("Ready to record");
else if (state.state() < Altos.ao_flight_landed ||
if (state.state() <= Altos.ao_flight_pad)
show("Ready to record");
else if (state.state() < Altos.ao_flight_landed ||
show("Recorded data");
} else
show("Storage full");
show("Recorded data");
} else
show("Storage full");
- set_lights(state.flight != 0);
+ set_lights(state.cal_data.flight != 0);
}
}
public LoggingReady (AltosUIFlightTab container, int y) {
}
}
public LoggingReady (AltosUIFlightTab container, int y) {
AltosDataChooser chooser = new AltosDataChooser(
AltosUI.this);
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
}
/* Connect to TeleMetrum, either directly or through
new AltosEepromManage(AltosUI.this, AltosLib.product_any);
}
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
*/
/* 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);
private void ExportData() {
AltosDataChooser chooser;
chooser = new AltosDataChooser(this);
- AltosStateIterable states = chooser.runDialog();
- if (states == null)
+ AltosRecordSet set = chooser.runDialog();
+ if (set == null)
- 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.
}
/* Load a flight log CSV file and display a pretty graph.
private void GraphData() {
AltosDataChooser chooser;
chooser = new AltosDataChooser(this);
private void GraphData() {
AltosDataChooser chooser;
chooser = new AltosDataChooser(this);
- AltosStateIterable states = chooser.runDialog();
- if (states == null)
+ AltosRecordSet set = chooser.runDialog();
+ if (set == null)
- new AltosGraphUI(states, new AltosEepromRecordSet(new FileReader(chooser.file())), chooser.file());
+ new AltosGraphUI(set, chooser.file());
} catch (InterruptedException ie) {
} catch (IOException ie) {
}
} 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));
try {
if (file.getName().endsWith("telem"))
return new AltosTelemetryFile(new FileInputStream(file));
static final int process_cat = 6;
static boolean process_csv(File input) {
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");
return false;
File output = Altos.replace_extension(input,".csv");
AltosWriter writer = open_csv(output);
if (writer == null)
return false;
AltosWriter writer = open_csv(output);
if (writer == null)
return false;
+ AltosFlightSeries series = make_series(set);
+ writer.write(series);
writer.close();
}
return true;
}
static boolean process_kml(File input) {
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");
return false;
File output = Altos.replace_extension(input,".kml");
AltosWriter writer = open_kml(output);
if (writer == null)
return false;
AltosWriter writer = open_kml(output);
if (writer == null)
return false;
+ AltosFlightSeries series = make_series(set);
+ writer.write(series);
writer.close();
return true;
}
}
writer.close();
return true;
}
}
- static AltosStateIterable record_iterable(File file) {
+ static AltosRecordSet record_set(File file) {
FileInputStream in;
if (file.getName().endsWith("telem")) {
try {
FileInputStream in;
if (file.getName().endsWith("telem")) {
try {
}
static AltosReplayReader replay_file(File file) {
}
static AltosReplayReader replay_file(File file) {
- AltosStateIterable states = record_iterable(file);
- if (states == null)
+ AltosRecordSet set = record_set(file);
+ if (set == null)
- return new AltosReplayReader(states.iterator(), file);
+// return new AltosReplayReader(states.iterator(), file);
+ return null;
}
static boolean process_replay(File file) {
}
static boolean process_replay(File file) {
}
static boolean process_graph(File file) {
}
static boolean process_graph(File file) {
- AltosStateIterable states = record_iterable(file);
- if (states == null)
+ AltosRecordSet set = record_set(file);
+ if (set == null)
- new AltosGraphUI(states, new AltosEepromRecordSet(new FileReader(file)), file);
+ new AltosGraphUI(set, file);
return true;
} catch (InterruptedException ie) {
} catch (IOException ie) {
return true;
} catch (InterruptedException ie) {
} catch (IOException ie) {
}
static boolean process_summary(File file) {
}
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());
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)
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 {
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);
} catch (Exception e) {
System.out.printf("Failed to open file '%s'\n", file);