}
}
- static final int log_full = 1;
- static final int log_tiny = 2;
-
boolean done;
int state;
int s = v ^ 0x8000;
if (Altos.ao_flight_startup <= s && s <= Altos.ao_flight_invalid) {
- r = new AltosEepromRecord(Altos.AO_LOG_STATE, tiny_tick, s, 0);
- if (s == Altos.ao_flight_landed)
+ state = s;
+ r = new AltosEepromRecord(Altos.AO_LOG_STATE, tiny_tick, state, 0);
+ if (state == Altos.ao_flight_landed)
done = true;
state = s;
any_valid = true;
} else {
if (v != 0xffff)
any_valid = true;
- r = new AltosEepromRecord(Altos.AO_LOG_HEIGHT, tiny_tick, v, 0);
+
+ r = new AltosEepromRecord(Altos.AO_LOG_PRESSURE, tiny_tick, 0, v);
/*
* The flight software records ascent data every 100ms, and descent
void CaptureLog(AltosEepromLog log) throws IOException, InterruptedException, TimeoutException {
int block, state_block = 0;
- int log_style = 0;
+ int log_format = flights.config_data.log_format;
state = 0;
done = false;
AltosEepromChunk eechunk = new AltosEepromChunk(serial_line, block);
/*
- * Figure out what kind of data is there
+ * Guess what kind of data is there if the device
+ * didn't tell us
*/
- if (block == log.start_block) {
- if (eechunk.data(0) == Altos.AO_LOG_FLIGHT)
- log_style = log_full;
- else
- log_style = log_tiny;
+ if (log_format == Altos.AO_LOG_FORMAT_UNKNOWN) {
+ if (block == log.start_block) {
+ if (eechunk.data(0) == Altos.AO_LOG_FLIGHT)
+ log_format = Altos.AO_LOG_FORMAT_FULL;
+ else
+ log_format = Altos.AO_LOG_FORMAT_TINY;
+ }
}
- switch (log_style) {
- case log_full:
+ switch (log_format) {
+ case Altos.AO_LOG_FORMAT_FULL:
CaptureFull(eechunk);
break;
- case log_tiny:
+ case Altos.AO_LOG_FORMAT_TINY:
CaptureTiny(eechunk);
break;
}
}
public void run () {
- if (remote)
- serial_line.start_remote();
-
try {
boolean failed = false;
+ if (remote)
+ serial_line.start_remote();
+
for (AltosEepromLog log : flights) {
parse_exception = null;
if (log.download) {
serial_line.device.toShortString()),
"Connection Failed",
JOptionPane.ERROR_MESSAGE);
+ } finally {
+ if (remote)
+ serial_line.stop_remote();
+ serial_line.flush_output();
}
- if (remote)
- serial_line.stop_remote();
monitor.done();
- serial_line.flush_output();
if (listener != null) {
Runnable r = new Runnable() {
public void run() {