summaryrefslogtreecommitdiff
path: root/altosui/AltosEepromList.java
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2011-01-12 12:40:45 -0800
committerKeith Packard <keithp@keithp.com>2011-01-12 12:40:45 -0800
commit8801b8c1947bd39f7c985b91a2ba8dbc81bcc91a (patch)
tree083998aea43274f7c65460abc2348537d1bca88d /altosui/AltosEepromList.java
parent440d52e34364fdeeddc76a2d744cc6d1c934364f (diff)
altosui: Add eeprom 'manage' ui to download and delete multiple flights
This shows the list of available flights and provides options to download and/or delete each one. Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'altosui/AltosEepromList.java')
-rw-r--r--altosui/AltosEepromList.java31
1 files changed, 30 insertions, 1 deletions
diff --git a/altosui/AltosEepromList.java b/altosui/AltosEepromList.java
index ac4a29de..a932dd12 100644
--- a/altosui/AltosEepromList.java
+++ b/altosui/AltosEepromList.java
@@ -30,6 +30,12 @@ import java.util.concurrent.*;
import libaltosJNI.*;
+/*
+ * Temporary structure to hold the list of stored flights;
+ * each of these will be queried in turn to generate more
+ * complete information
+ */
+
class AltosEepromFlight {
int flight;
int start;
@@ -42,10 +48,16 @@ class AltosEepromFlight {
}
}
+/*
+ * Construct a list of flights available in a connected device
+ */
+
public class AltosEepromList extends ArrayList<AltosEepromLog> {
AltosConfigData config_data;
- public AltosEepromList (AltosSerial serial_line, boolean remote) throws IOException, InterruptedException, TimeoutException {
+ public AltosEepromList (AltosSerial serial_line, boolean remote)
+ throws IOException, InterruptedException, TimeoutException
+ {
try {
if (remote)
serial_line.start_remote();
@@ -54,7 +66,13 @@ public class AltosEepromList extends ArrayList<AltosEepromLog> {
throw new IOException("no serial number found");
ArrayList<AltosEepromFlight> flights = new ArrayList<AltosEepromFlight>();
+
if (config_data.flight_log_max != 0) {
+
+ /* Devices with newer firmware will support the 'l'
+ * command which will list the region of storage
+ * occupied by each available flight
+ */
serial_line.printf("l\n");
for (;;) {
String line = serial_line.get_reply(5000);
@@ -83,8 +101,19 @@ public class AltosEepromList extends ArrayList<AltosEepromLog> {
} catch (ParseException pe) { System.out.printf("Parse error %s\n", pe.toString()); }
}
} else {
+
+ /* Older devices will hold only a single
+ * flight. This also assumes that any older
+ * device will have a 1MB flash device
+ */
flights.add(new AltosEepromFlight(0, 0, 0xfff));
}
+
+ /* With the list of flights collected, collect more complete
+ * information on them by reading the first block or two of
+ * data. This will add GPS coordinates and a date. For older
+ * firmware, this will also extract the flight number.
+ */
for (AltosEepromFlight flight : flights) {
System.out.printf("Scanning flight %d %x %x\n", flight.flight, flight.start, flight.end);
add(new AltosEepromLog(serial_line, config_data.serial,