X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=altosui%2FAltosEepromDownload.java;h=6ce420d323523eb40d6277d0f5617f3cfb78b744;hb=45db3076b257adcf2c9f69ed0927f09d94af7a50;hp=f034d73c81193dbe44756f052dcbbb7d8db16b4d;hpb=a299a5a9a1b89c7ebc00ebd33a789793a6835181;p=fw%2Faltos diff --git a/altosui/AltosEepromDownload.java b/altosui/AltosEepromDownload.java index f034d73c..6ce420d3 100644 --- a/altosui/AltosEepromDownload.java +++ b/altosui/AltosEepromDownload.java @@ -17,8 +17,6 @@ package altosui; -import java.awt.event.*; -import javax.swing.*; import java.io.*; import java.util.*; import java.text.*; @@ -27,7 +25,6 @@ import org.altusmetrum.altoslib_2.*; public class AltosEepromDownload implements Runnable { - JFrame frame; AltosSerial serial_line; boolean remote; Thread eeprom_thread; @@ -38,7 +35,6 @@ public class AltosEepromDownload implements Runnable { LinkedList eeprom_pending; AltosEepromList flights; - ActionListener listener; boolean success; ParseException parse_exception; AltosState state; @@ -72,7 +68,7 @@ public class AltosEepromDownload implements Runnable { eeprom_file = new FileWriter(eeprom_name); if (eeprom_file != null) { - monitor.set_file(eeprom_name.getName()); + monitor.set_filename(eeprom_name.getName()); FlushPending(); eeprom_pending = null; } @@ -92,12 +88,14 @@ public class AltosEepromDownload implements Runnable { } } - void CaptureEeprom(AltosEepromChunk eechunk, int log_format) throws IOException { + void CaptureEeprom(AltosEepromChunk eechunk, int log_format) throws IOException, ParseException { boolean any_valid = false; + boolean got_flight = false; int record_length = 8; state.set_serial(flights.config_data.serial); + monitor.set_serial(flights.config_data.serial); for (int i = 0; i < AltosEepromChunk.chunk_size && !done; i += record_length) { AltosEeprom r = eechunk.eeprom(i, log_format, state); @@ -109,6 +107,9 @@ public class AltosEepromDownload implements Runnable { r.update_state(state); + if (!got_flight && state.flight != AltosLib.MISSING) + monitor.set_flight(state.flight); + /* Monitor state transitions to update display */ if (state.state != AltosLib.ao_flight_invalid && state.state <= AltosLib.ao_flight_landed) @@ -133,7 +134,7 @@ public class AltosEepromDownload implements Runnable { CheckFile(false); } - void CaptureLog(AltosEepromLog log) throws IOException, InterruptedException, TimeoutException { + void CaptureLog(AltosEepromLog log) throws IOException, InterruptedException, TimeoutException, ParseException { int block, state_block = 0; int log_format = flights.config_data.log_format; @@ -185,28 +186,6 @@ public class AltosEepromDownload implements Runnable { } } - private void show_message_internal(String message, String title, int message_type) { - JOptionPane.showMessageDialog(frame, - message, - title, - message_type); - } - - private void show_message(String in_message, String in_title, int in_message_type) { - final String message = in_message; - final String title = in_title; - final int message_type = in_message_type; - Runnable r = new Runnable() { - public void run() { - try { - show_message_internal(message, title, message_type); - } catch (Exception ex) { - } - } - }; - SwingUtilities.invokeLater(r); - } - public void run () { try { boolean failed = false; @@ -217,29 +196,36 @@ public class AltosEepromDownload implements Runnable { parse_exception = null; if (log.selected) { monitor.reset(); - CaptureLog(log); + try { + CaptureLog(log); + } catch (ParseException e) { + parse_exception = e; + } } if (parse_exception != null) { failed = true; - show_message(String.format("Flight %d download error\n%s\nValid log data saved", - log.flight, - parse_exception.getMessage()), - serial_line.device.toShortString(), - JOptionPane.WARNING_MESSAGE); + monitor.show_message(String.format("Flight %d download error\n%s\nValid log data saved", + log.flight, + parse_exception.getMessage()), + serial_line.device.toShortString(), + AltosEepromMonitor.WARNING_MESSAGE); } } success = !failed; } catch (IOException ee) { - show_message(ee.getLocalizedMessage(), - serial_line.device.toShortString(), - JOptionPane.ERROR_MESSAGE); + monitor.show_message(ee.getLocalizedMessage(), + serial_line.device.toShortString(), + AltosEepromMonitor.ERROR_MESSAGE); } catch (InterruptedException ie) { - System.out.printf("download interrupted\n"); + monitor.show_message(String.format("Connection to \"%s\" interrupted", + serial_line.device.toShortString()), + "Connection Interrupted", + AltosEepromMonitor.ERROR_MESSAGE); } catch (TimeoutException te) { - show_message(String.format("Connection to \"%s\" failed", - serial_line.device.toShortString()), - "Connection Failed", - JOptionPane.ERROR_MESSAGE); + monitor.show_message(String.format("Connection to \"%s\" failed", + serial_line.device.toShortString()), + "Connection Failed", + AltosEepromMonitor.ERROR_MESSAGE); } finally { if (remote) { try { @@ -249,20 +235,7 @@ public class AltosEepromDownload implements Runnable { } serial_line.flush_output(); } - monitor.done(); - if (listener != null) { - Runnable r = new Runnable() { - public void run() { - try { - listener.actionPerformed(new ActionEvent(this, - success ? 1 : 0, - "download")); - } catch (Exception ex) { - } - } - }; - SwingUtilities.invokeLater(r); - } + monitor.done(success); } public void start() { @@ -270,28 +243,20 @@ public class AltosEepromDownload implements Runnable { eeprom_thread.start(); } - public void addActionListener(ActionListener l) { - listener = l; - } - - public AltosEepromDownload(JFrame given_frame, + public AltosEepromDownload(AltosEepromMonitor given_monitor, AltosSerial given_serial_line, boolean given_remote, AltosEepromList given_flights) { - frame = given_frame; + monitor = given_monitor; serial_line = given_serial_line; - serial_line.set_frame(frame); remote = given_remote; flights = given_flights; success = false; - monitor = new AltosEepromMonitor(frame, Altos.ao_flight_boost, Altos.ao_flight_landed); - monitor.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - if (eeprom_thread != null) - eeprom_thread.interrupt(); - } - }); + monitor.set_states(Altos.ao_flight_boost, Altos.ao_flight_landed); + + monitor.set_thread(eeprom_thread); + monitor.start(); } }