private AltosFlightStatus flightStatus;
private AltosInfoTable flightInfo;
- static final int tab_pad = 1;
- static final int tab_ascent = 2;
- static final int tab_descent = 3;
- static final int tab_landed = 4;
-
- int cur_tab = 0;
-
boolean exit_on_close = false;
- int which_tab(AltosState state) {
+ JComponent cur_tab = null;
+ JComponent which_tab(AltosState state) {
if (state.state < Altos.ao_flight_boost)
- return tab_pad;
+ return pad;
if (state.state <= Altos.ao_flight_coast)
- return tab_ascent;
+ return ascent;
if (state.state <= Altos.ao_flight_main)
- return tab_descent;
- return tab_landed;
+ return descent;
+ return landed;
}
void stop_display() {
}
public void show(AltosState state, int crc_errors) {
- int tab = which_tab(state);
+ JComponent tab = which_tab(state);
pad.show(state, crc_errors);
ascent.show(state, crc_errors);
descent.show(state, crc_errors);
landed.show(state, crc_errors);
if (tab != cur_tab) {
- switch (tab) {
- case tab_pad:
- pane.setSelectedComponent(pad);
- break;
- case tab_ascent:
- pane.setSelectedComponent(ascent);
- break;
- case tab_descent:
- pane.setSelectedComponent(descent);
- break;
- case tab_landed:
- pane.setSelectedComponent(landed);
+ if (cur_tab == pane.getSelectedComponent()) {
+ pane.setSelectedComponent(tab);
}
cur_tab = tab;
}
// if insufficient gps data, nothing to update
if (state.gps == null)
return;
- if (state.pad_lat == 0 && state.pad_lon == 0)
+ if (!state.gps.locked && state.gps.nsat < 4)
return;
- if (!state.gps.locked) {
- if (state.gps.nsat < 4)
- return;
- }
if (!initialised) {
- initMaps(state.pad_lat, state.pad_lon);
- initialised = true;
+ if (state.pad_lat != 0 || state.pad_lon != 0) {
+ initMaps(state.pad_lat, state.pad_lon);
+ initialised = true;
+ } else if (state.gps.lat != 0 || state.gps.lon != 0) {
+ initMaps(state.gps.lat, state.gps.lon);
+ initialised = true;
+ } else {
+ return;
+ }
}
final Point2D.Double pt = pt(state.gps.lat, state.gps.lon);
<section>
<title>Graph Data</title>
<para>
- This section should be written by AJ.
+ Select this button and you are prompted to select a flight
+ record file, either a .telem file recording telemetry data or a
+ .eeprom file containing flight data saved from the TeleMetrum
+ flash memory.
+ </para>
+ <para>
+ Once a flight record is selected, the acceleration (blue),
+ velocity (green) and altitude (red) of the flight are plotted and
+ displayed, measured in metric units.
+ </para>
+ <para>
+ The graph can be zoomed into a particular area by clicking and
+ dragging down and to the right. Once zoomed, the graph can be
+ reset by clicking and dragging up and to the left. Holding down
+ control and clicking and dragging allows the graph to be panned.
+ The right mouse button causes a popup menu to be displayed, giving
+ you the option save or print the plot.
+ </para>
+ <para>
+ Note that telemetry files will generally produce poor graphs
+ due to the lower sampling rate and missed telemetry packets,
+ and will also often have significant amounts of data received
+ while the rocket was waiting on the pad. Use saved flight data
+ for graphing where possible.
</para>
</section>
<section>