X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=altosui%2FAltosUI.java;h=ac46ae5cc1c10aacffb7294f45703580ee12709c;hp=f50c32e3d38127d2e98e307f85dfa6e449bd56ce;hb=af3c7938f24dcf5ffbce024ed596655b26282cf1;hpb=f28db1102685c87b9f4278268f7e91f5df18374a diff --git a/altosui/AltosUI.java b/altosui/AltosUI.java index f50c32e3..ac46ae5c 100644 --- a/altosui/AltosUI.java +++ b/altosui/AltosUI.java @@ -3,7 +3,8 @@ * * 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. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of @@ -309,12 +310,13 @@ public class AltosUI extends AltosUIFrame { AltosDataChooser chooser = new AltosDataChooser( AltosUI.this); - Iterable states = chooser.runDialog(); - if (states != null) { - AltosFlightReader reader = new AltosReplayReader(states.iterator(), - chooser.file()); - new AltosFlightUI(voice, reader); - } + AltosRecordSet set = chooser.runDialog(); +/* XXX fixme */ +// if (states != null) { +// AltosFlightReader reader = new AltosReplayReader(states.iterator(), +// chooser.file()); +// new AltosFlightUI(voice, reader); +// } } /* Connect to TeleMetrum, either directly or through @@ -324,6 +326,12 @@ public class AltosUI extends AltosUIFrame { new AltosEepromManage(AltosUI.this, AltosLib.product_any); } + private static AltosFlightSeries make_series(AltosRecordSet set) { + AltosFlightSeries series = new AltosFlightSeries(set.cal_data()); + set.capture_series(series); + return series; + } + /* Load a flight log file and write out a CSV file containing * all of the data in standard units */ @@ -331,10 +339,11 @@ public class AltosUI extends AltosUIFrame { private void ExportData() { AltosDataChooser chooser; chooser = new AltosDataChooser(this); - AltosStateIterable states = chooser.runDialog(); - if (states == null) + AltosRecordSet set = chooser.runDialog(); + if (set == null) return; - new AltosCSVUI(AltosUI.this, states, chooser.file()); + AltosFlightSeries series = make_series(set); + new AltosCSVUI(AltosUI.this, series, series.cal_data, chooser.file()); } /* Load a flight log CSV file and display a pretty graph. @@ -343,11 +352,11 @@ public class AltosUI extends AltosUIFrame { private void GraphData() { AltosDataChooser chooser; chooser = new AltosDataChooser(this); - AltosStateIterable states = chooser.runDialog(); - if (states == null) + AltosRecordSet set = chooser.runDialog(); + if (set == null) return; try { - new AltosGraphUI(states, chooser.file()); + new AltosGraphUI(set, chooser.file()); } catch (InterruptedException ie) { } catch (IOException ie) { } @@ -364,18 +373,18 @@ public class AltosUI extends AltosUIFrame { } } - static AltosStateIterable open_logfile(File file) { + static AltosRecordSet open_logfile(File file) { try { - FileInputStream in; - - in = new FileInputStream(file); if (file.getName().endsWith("telem")) - return new AltosTelemetryFile(in); + return new AltosTelemetryFile(new FileInputStream(file)); else - return new AltosEepromFile(in); + return new AltosEepromFile(new FileReader(file)); } catch (FileNotFoundException fe) { System.out.printf("%s\n", fe.getMessage()); return null; + } catch (IOException ie) { + System.out.printf("%s\n", ie.getMessage()); + return null; } } @@ -403,11 +412,10 @@ public class AltosUI extends AltosUIFrame { static final int process_graph = 3; static final int process_replay = 4; static final int process_summary = 5; - static final int process_cat = 6; static boolean process_csv(File input) { - AltosStateIterable states = open_logfile(input); - if (states == null) + AltosRecordSet set = open_logfile(input); + if (set == null) return false; File output = Altos.replace_extension(input,".csv"); @@ -419,15 +427,16 @@ public class AltosUI extends AltosUIFrame { AltosWriter writer = open_csv(output); if (writer == null) return false; - writer.write(states); + AltosFlightSeries series = make_series(set); + writer.write(series); writer.close(); } return true; } static boolean process_kml(File input) { - AltosStateIterable states = open_logfile(input); - if (states == null) + AltosRecordSet set = open_logfile(input); + if (set == null) return false; File output = Altos.replace_extension(input,".kml"); @@ -439,31 +448,39 @@ public class AltosUI extends AltosUIFrame { AltosWriter writer = open_kml(output); if (writer == null) return false; - writer.write(states); + AltosFlightSeries series = make_series(set); + writer.write(series); writer.close(); return true; } } - static AltosStateIterable record_iterable(File file) { + static AltosRecordSet record_set(File file) { FileInputStream in; - try { - in = new FileInputStream(file); - } catch (Exception e) { - System.out.printf("Failed to open file '%s'\n", file); - return null; + if (file.getName().endsWith("telem")) { + try { + in = new FileInputStream(file); + return new AltosTelemetryFile(in); + } catch (Exception e) { + System.out.printf("Failed to open file '%s'\n", file); + } + } else { + + try { + AltosEepromFile f = new AltosEepromFile(new FileReader(file)); + return f; + } catch (Exception e) { + System.out.printf("Failed to open file '%s'\n", file); + } } - if (file.getName().endsWith("telem")) - return new AltosTelemetryFile(in); - else - return new AltosEepromFile(in); + return null; } static AltosReplayReader replay_file(File file) { - AltosStateIterable states = record_iterable(file); - if (states == null) + AltosRecordSet set = record_set(file); + if (set == null) return null; - return new AltosReplayReader(states.iterator(), file); + return new AltosReplayReader(set, file); } static boolean process_replay(File file) { @@ -475,11 +492,11 @@ public class AltosUI extends AltosUIFrame { } static boolean process_graph(File file) { - AltosStateIterable states = record_iterable(file); - if (states == null) + AltosRecordSet set = record_set(file); + if (set == null) return false; try { - new AltosGraphUI(states, file); + new AltosGraphUI(set, file); return true; } catch (InterruptedException ie) { } catch (IOException ie) { @@ -488,12 +505,13 @@ public class AltosUI extends AltosUIFrame { } static boolean process_summary(File file) { - AltosStateIterable states = record_iterable(file); - if (states == null) + AltosRecordSet set = record_set(file); + if (set == null) return false; try { - AltosFlightStats stats = new AltosFlightStats(states); System.out.printf("%s:\n", file.toString()); + AltosFlightSeries series = make_series(set); + AltosFlightStats stats = new AltosFlightStats(series); if (stats.serial != AltosLib.MISSING) System.out.printf("Serial: %5d\n", stats.serial); if (stats.flight != AltosLib.MISSING) @@ -540,28 +558,6 @@ public class AltosUI extends AltosUIFrame { return false; } - static boolean process_cat(File file) { - try { - AltosStateIterable eef = record_iterable(file); - - for (AltosState state : eef) { - System.out.printf ("tick %d state %d height %g\n", - state.tick, state.state(), state.height()); - if ((state.set & AltosState.set_gps) != 0) - System.out.printf ("time %g lat %g lon %g alt %g\n", - state.time_since_boost(), - state.gps.lat, - state.gps.lon, - state.gps.alt); - } - - } catch (Exception e) { - System.out.printf("Failed to open file '%s'\n", file); - return false; - } - return true; - } - public static void help(int code) { System.out.printf("Usage: altosui [OPTION]... [FILE]...\n"); System.out.printf(" Options:\n"); @@ -604,8 +600,6 @@ public class AltosUI extends AltosUIFrame { process = process_graph; else if (args[i].equals("--summary")) process = process_summary; - else if (args[i].equals("--cat")) - process = process_cat; else if (args[i].startsWith("--")) help(1); else { @@ -634,9 +628,6 @@ public class AltosUI extends AltosUIFrame { if (!process_summary(file)) ++errors; break; - case process_cat: - if (!process_cat(file)) - ++errors; } } }