altosui: remove un-used import
[fw/altos] / altosui / AltosEepromDownload.java
index b44a1451b241db864a3790df8ff00389e95678a3..a8cb24ff0c287f670c255a5524a12ded19a8c524 100644 (file)
 
 package altosui;
 
-import java.awt.*;
 import java.awt.event.*;
 import javax.swing.*;
-import javax.swing.filechooser.FileNameExtensionFilter;
-import javax.swing.table.*;
 import java.io.*;
 import java.util.*;
 import java.text.*;
-import java.util.prefs.*;
 import java.util.concurrent.*;
-
-import libaltosJNI.*;
+import org.altusmetrum.AltosLib.*;
 
 public class AltosEepromDownload implements Runnable {
 
@@ -112,7 +107,7 @@ public class AltosEepromDownload implements Runnable {
 
                extension = "eeprom";
                set_serial(flights.config_data.serial);
-               for (int i = 0; i < eechunk.chunk_size && !done; i += AltosEepromRecord.record_length) {
+               for (int i = 0; i < AltosEepromChunk.chunk_size && !done; i += AltosEepromRecord.record_length) {
                        try {
                                AltosEepromRecord r = new AltosEepromRecord(eechunk, i);
                                if (r.cmd == Altos.AO_LOG_FLIGHT)
@@ -133,7 +128,8 @@ public class AltosEepromDownload implements Runnable {
                                }
                                if (r.cmd == Altos.AO_LOG_STATE && r.a == Altos.ao_flight_landed)
                                        done = true;
-                               any_valid = true;
+                               if (r.cmd != AltosLib.AO_LOG_INVALID)
+                                       any_valid = true;
                                Log(r);
                        } catch (ParseException pe) {
                                if (parse_exception == null)
@@ -218,7 +214,7 @@ public class AltosEepromDownload implements Runnable {
                boolean any_valid = false;
 
                extension = "science";
-               for (int i = 0; i < eechunk.chunk_size && !done; i += AltosEepromTeleScience.record_length) {
+               for (int i = 0; i < AltosEepromChunk.chunk_size && !done; i += AltosEepromTeleScience.record_length) {
                        try {
                                AltosEepromTeleScience r = new AltosEepromTeleScience(eechunk, i);
                                if (r.type == AltosEepromTeleScience.AO_LOG_TELESCIENCE_START) {
@@ -248,6 +244,68 @@ public class AltosEepromDownload implements Runnable {
                        done = true;
        }
 
+       void LogMega(AltosEepromMega r) throws IOException {
+               if (r.cmd != Altos.AO_LOG_INVALID) {
+                       String log_line = String.format("%c %4x %2x %2x %2x %2x %2x %2x %2x %2x %2x %2x %2x %2x %2x %2x %2x %2x %2x %2x %2x %2x %2x %2x %2x %2x %2x %2x %2x %2x\n",
+                                                       r.cmd, r.tick,
+                                                       r.data8[0], r.data8[1], r.data8[2], r.data8[3],
+                                                       r.data8[4], r.data8[5], r.data8[6], r.data8[7],
+                                                       r.data8[8], r.data8[9], r.data8[10], r.data8[11],
+                                                       r.data8[12], r.data8[13], r.data8[14], r.data8[15],
+                                                       r.data8[16], r.data8[17], r.data8[18], r.data8[19],
+                                                       r.data8[20], r.data8[21], r.data8[22], r.data8[23],
+                                                       r.data8[24], r.data8[25], r.data8[26], r.data8[27]);
+                       if (eeprom_file != null)
+                               eeprom_file.write(log_line);
+                       else
+                               eeprom_pending.add(log_line);
+               }
+       }
+
+       void CaptureMega(AltosEepromChunk eechunk) throws IOException {
+               boolean any_valid = false;
+
+               extension = "mega";
+               set_serial(flights.config_data.serial);
+               for (int i = 0; i < AltosEepromChunk.chunk_size && !done; i += AltosEepromMega.record_length) {
+                       try {
+                               AltosEepromMega r = new AltosEepromMega(eechunk, i);
+                               if (r.cmd == Altos.AO_LOG_FLIGHT)
+                                       set_flight(r.data16(0));
+
+                               /* Monitor state transitions to update display */
+                               if (r.cmd == Altos.AO_LOG_STATE && r.data16(0) <= Altos.ao_flight_landed) {
+                                       state = r.data16(0);
+                                       if (state > Altos.ao_flight_pad)
+                                               want_file = true;
+                               }
+
+                               if (r.cmd == Altos.AO_LOG_GPS_TIME) {
+                                       year = 2000 + r.data8(14);
+                                       month = r.data8(15);
+                                       day = r.data8(14);
+                                       want_file = true;
+                               }
+
+                               if (r.cmd == Altos.AO_LOG_STATE && r.data16(0) == Altos.ao_flight_landed)
+                                       done = true;
+                               any_valid = true;
+                               LogMega(r);
+                       } catch (ParseException pe) {
+                               if (parse_exception == null)
+                                       parse_exception = pe;
+                       }
+               }
+               if (!any_valid)
+                       done = true;
+
+               CheckFile(false);
+       }
+       
+       void CaptureTelemetry(AltosEepromChunk eechunk) throws IOException {
+               
+       }
+
        void CaptureLog(AltosEepromLog log) throws IOException, InterruptedException, TimeoutException {
                int                     block, state_block = 0;
                int                     log_format = flights.config_data.log_format;
@@ -273,7 +331,7 @@ public class AltosEepromDownload implements Runnable {
 
                state = 0; state_block = log.start_block;
                for (block = log.start_block; !done && block < log.end_block; block++) {
-                       monitor.set_value(Altos.state_to_string[state], state, block - state_block);
+                       monitor.set_value(AltosLib.state_name(state), state, block - state_block);
 
                        AltosEepromChunk        eechunk = new AltosEepromChunk(serial_line, block, block == log.start_block);
 
@@ -292,22 +350,25 @@ public class AltosEepromDownload implements Runnable {
                        }
 
                        switch (log_format) {
-                       case Altos.AO_LOG_FORMAT_FULL:
+                       case AltosLib.AO_LOG_FORMAT_FULL:
                                extension = "eeprom";
                                CaptureFull(eechunk);
                                break;
-                       case Altos.AO_LOG_FORMAT_TINY:
+                       case AltosLib.AO_LOG_FORMAT_TINY:
                                extension = "eeprom";
                                CaptureTiny(eechunk);
                                break;
-//                     case Altos.AO_LOG_FORMAT_TELEMETRY:
-//                             extension = "telem";
-//                             CaptureTelemetry(eechunk);
-//                             break;
-                       case Altos.AO_LOG_FORMAT_TELESCIENCE:
+                       case AltosLib.AO_LOG_FORMAT_TELEMETRY:
+                               extension = "telem";
+                               CaptureTelemetry(eechunk);
+                               break;
+                       case AltosLib.AO_LOG_FORMAT_TELESCIENCE:
                                extension = "science";
                                CaptureTeleScience(eechunk);
                                break;
+                       case AltosLib.AO_LOG_FORMAT_MEGAMETRUM:
+                               extension = "mega";
+                               CaptureMega(eechunk);
                        }
                }
                CheckFile(true);
@@ -347,7 +408,7 @@ public class AltosEepromDownload implements Runnable {
 
                        for (AltosEepromLog log : flights) {
                                parse_exception = null;
-                               if (log.download) {
+                               if (log.selected) {
                                        monitor.reset();
                                        CaptureLog(log);
                                }
@@ -373,8 +434,12 @@ public class AltosEepromDownload implements Runnable {
                                     "Connection Failed",
                                     JOptionPane.ERROR_MESSAGE);
                } finally {
-                       if (remote)
-                               serial_line.stop_remote();
+                       if (remote) {
+                               try {
+                                       serial_line.stop_remote();
+                               } catch (InterruptedException ie) {
+                               }
+                       }
                        serial_line.flush_output();
                }
                monitor.done();