X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=altosui%2FAltosEepromDownload.java;h=a7f64904679cc079bf3f060787f5b3526d31386f;hb=HEAD;hp=af70b15c5603139c318559c189e941535fae3872;hpb=deb3c7b9206be0c9c46f75d35c8f766c26d9838f;p=fw%2Faltos diff --git a/altosui/AltosEepromDownload.java b/altosui/AltosEepromDownload.java deleted file mode 100644 index af70b15c..00000000 --- a/altosui/AltosEepromDownload.java +++ /dev/null @@ -1,241 +0,0 @@ -/* - * Copyright © 2010 Keith Packard - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. - */ - -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.*; - -public class AltosEepromDownload implements Runnable { - - JFrame frame; - AltosSerial serial_line; - boolean remote; - Thread eeprom_thread; - AltosEepromMonitor monitor; - - int flight; - int year, month, day; - boolean want_file; - FileWriter eeprom_file; - LinkedList eeprom_pending; - - AltosEepromList flights; - ActionListener listener; - boolean success; - - private void FlushPending() throws IOException { - for (String s : flights.config_data) { - eeprom_file.write(s); - eeprom_file.write('\n'); - } - - for (String s : eeprom_pending) - eeprom_file.write(s); - } - - private void CheckFile(boolean force) throws IOException { - if (eeprom_file != null) - return; - if (force || (flight != 0 && want_file)) { - AltosFile eeprom_name; - if (year != 0 && month != 0 && day != 0) - eeprom_name = new AltosFile(year, month, day, flights.config_data.serial, flight, "eeprom"); - else - eeprom_name = new AltosFile(flights.config_data.serial, flight, "eeprom"); - - eeprom_file = new FileWriter(eeprom_name); - if (eeprom_file != null) { - monitor.set_file(eeprom_name.getName()); - FlushPending(); - eeprom_pending = null; - } - } - } - - void CaptureLog(AltosEepromLog log) throws IOException, InterruptedException, TimeoutException { - int block, state_block = 0; - int state = 0; - boolean done = false; - int record; - - if (flights.config_data.serial == 0) - throw new IOException("no serial number found"); - - /* Reset per-capture variables */ - flight = 0; - year = 0; - month = 0; - day = 0; - want_file = false; - eeprom_file = null; - eeprom_pending = new LinkedList(); - - /* Set serial number in the monitor dialog window */ - monitor.set_serial(flights.config_data.serial); - /* Now scan the eeprom, reading blocks of data and converting to .eeprom file form */ - - 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); - - AltosEepromBlock eeblock = new AltosEepromBlock(serial_line, block); - - if (eeblock.has_flight) { - flight = eeblock.flight; - monitor.set_flight(flight); - } - if (eeblock.has_date) { - year = eeblock.year; - month = eeblock.month; - day = eeblock.day; - want_file = true; - } - - if (eeblock.size() == 0 || - eeblock.has_state && eeblock.state == Altos.ao_flight_landed) - done = true; - - /* Monitor state transitions to update display */ - if (eeblock.has_state) { - if (eeblock.state > Altos.ao_flight_pad) - want_file = true; - if (eeblock.state > state) - state = eeblock.state; - } - - CheckFile(false); - - for (record = 0; record < eeblock.size(); record++) { - AltosEepromRecord r = eeblock.get(record); - - String log_line = String.format("%c %4x %4x %4x\n", - r.cmd, r.tick, r.a, r.b); - if (eeprom_file != null) - eeprom_file.write(log_line); - else - eeprom_pending.add(log_line); - } - } - CheckFile(true); - if (eeprom_file != null) { - eeprom_file.flush(); - eeprom_file.close(); - } - } - - private void show_error_internal(String message, String title) { - JOptionPane.showMessageDialog(frame, - message, - title, - JOptionPane.ERROR_MESSAGE); - } - - private void show_error(String in_message, String in_title) { - final String message = in_message; - final String title = in_title; - Runnable r = new Runnable() { - public void run() { - try { - show_error_internal(message, title); - } catch (Exception ex) { - } - } - }; - SwingUtilities.invokeLater(r); - } - - public void run () { - if (remote) - serial_line.start_remote(); - - try { - for (AltosEepromLog log : flights) { - if (log.download) { - monitor.reset(); - CaptureLog(log); - } - } - System.out.printf("All flights successfully downloaded\n"); - success = true; - } catch (IOException ee) { - show_error (serial_line.device.toShortString(), - ee.getLocalizedMessage()); - } catch (InterruptedException ie) { - } catch (TimeoutException te) { - show_error (String.format("Connection to \"%s\" failed", - serial_line.device.toShortString()), - "Connection Failed"); - } - if (remote) - serial_line.stop_remote(); - monitor.done(); - serial_line.flush_output(); - 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); - } - } - - public void start() { - eeprom_thread = new Thread(this); - eeprom_thread.start(); - } - - public void addActionListener(ActionListener l) { - listener = l; - } - - public AltosEepromDownload(JFrame given_frame, - AltosSerial given_serial_line, - boolean given_remote, - AltosEepromList given_flights) { - - frame = given_frame; - serial_line = given_serial_line; - 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(); - } - }); - } -}