altos/altosui: Report log format in the version command
[fw/altos] / altosui / AltosEepromDownload.java
index 82f01ef52ea360dc53dc59ecda51203777c5067a..417aab000f25158489ccc7255145117824029973 100644 (file)
@@ -89,9 +89,6 @@ public class AltosEepromDownload implements Runnable {
                }
        }
 
-       static final int        log_full = 1;
-       static final int        log_tiny = 2;
-
        boolean                 done;
        int                     state;
 
@@ -186,7 +183,7 @@ public class AltosEepromDownload implements Runnable {
 
        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;
@@ -215,21 +212,24 @@ public class AltosEepromDownload implements Runnable {
                        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;
                        }
@@ -264,11 +264,11 @@ public class AltosEepromDownload implements Runnable {
        }
 
        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) {
@@ -295,11 +295,12 @@ public class AltosEepromDownload implements Runnable {
                                                   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() {