X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=altosui%2FAltosUI.java;h=fa259906769a9da7101c9bf1c064ce43a21bab93;hp=cc1cf6f2f1b4681e5a56d15bd702d25fc42fa33e;hb=383dec4449f8160c06804fba06290e7a07335934;hpb=75d5368cb2a95f3f7385952669a14765460f549d diff --git a/altosui/AltosUI.java b/altosui/AltosUI.java index cc1cf6f2..fa259906 100644 --- a/altosui/AltosUI.java +++ b/altosui/AltosUI.java @@ -22,8 +22,8 @@ import java.awt.event.*; import javax.swing.*; import java.io.*; import java.util.concurrent.*; -import org.altusmetrum.altoslib_5.*; -import org.altusmetrum.altosuilib_3.*; +import org.altusmetrum.altoslib_11.*; +import org.altusmetrum.altosuilib_11.*; public class AltosUI extends AltosUIFrame { public AltosVoice voice = new AltosVoice(); @@ -463,7 +463,7 @@ public class AltosUI extends AltosUIFrame { AltosStateIterable states = record_iterable(file); if (states == null) return null; - return new AltosReplayReader(states.iterator(), file, true); + return new AltosReplayReader(states.iterator(), file); } static boolean process_replay(File file) { @@ -471,7 +471,6 @@ public class AltosUI extends AltosUIFrame { if (reader == null) return false; AltosFlightUI flight_ui = new AltosFlightUI(new AltosVoice(), reader); - flight_ui.set_exit_on_close(); return true; } @@ -493,39 +492,47 @@ public class AltosUI extends AltosUIFrame { if (states == null) return false; try { + System.out.printf("%s:\n", file.toString()); AltosFlightStats stats = new AltosFlightStats(states); - if (stats.serial > 0) + if (stats.serial != AltosLib.MISSING) System.out.printf("Serial: %5d\n", stats.serial); - if (stats.flight > 0) + if (stats.flight != AltosLib.MISSING) System.out.printf("Flight: %5d\n", stats.flight); - if (stats.year > 0) + if (stats.year != AltosLib.MISSING) System.out.printf("Date: %04d-%02d-%02d\n", stats.year, stats.month, stats.day); - if (stats.hour > 0) + if (stats.hour != AltosLib.MISSING) System.out.printf("Time: %02d:%02d:%02d UTC\n", stats.hour, stats.minute, stats.second); - System.out.printf("Max height: %6.0f m %6.0f ft\n", - stats.max_height, - AltosConvert.meters_to_feet(stats.max_height)); - System.out.printf("Max speed: %6.0f m/s %6.0f ft/s %6.4f Mach\n", - stats.max_speed, - AltosConvert.meters_to_feet(stats.max_speed), - AltosConvert.meters_to_mach(stats.max_speed)); + if (stats.max_height != AltosLib.MISSING) + System.out.printf("Max height: %6.0f m %6.0f ft\n", + stats.max_height, + AltosConvert.meters_to_feet(stats.max_height)); + if (stats.max_speed != AltosLib.MISSING) + System.out.printf("Max speed: %6.0f m/s %6.0f ft/s %6.4f Mach\n", + stats.max_speed, + AltosConvert.meters_to_feet(stats.max_speed), + AltosConvert.meters_to_mach(stats.max_speed)); if (stats.max_acceleration != AltosLib.MISSING) { System.out.printf("Max accel: %6.0f m/s² %6.0f ft/s² %6.2f g\n", stats.max_acceleration, AltosConvert.meters_to_feet(stats.max_acceleration), AltosConvert.meters_to_g(stats.max_acceleration)); } - System.out.printf("Drogue rate: %6.0f m/s %6.0f ft/s\n", - stats.state_speed[Altos.ao_flight_drogue], - AltosConvert.meters_to_feet(stats.state_speed[Altos.ao_flight_drogue])); - System.out.printf("Main rate: %6.0f m/s %6.0f ft/s\n", - stats.state_speed[Altos.ao_flight_main], - AltosConvert.meters_to_feet(stats.state_speed[Altos.ao_flight_main])); - System.out.printf("Flight time: %6.0f s\n", - stats.state_end[Altos.ao_flight_main] - - stats.state_start[Altos.ao_flight_boost]); + if (stats.state_speed[Altos.ao_flight_drogue] != AltosLib.MISSING) + System.out.printf("Drogue rate: %6.0f m/s %6.0f ft/s\n", + stats.state_speed[Altos.ao_flight_drogue], + AltosConvert.meters_to_feet(stats.state_speed[Altos.ao_flight_drogue])); + if (stats.state_speed[Altos.ao_flight_main] != AltosLib.MISSING) + System.out.printf("Main rate: %6.0f m/s %6.0f ft/s\n", + stats.state_speed[Altos.ao_flight_main], + AltosConvert.meters_to_feet(stats.state_speed[Altos.ao_flight_main])); + if (stats.state_end[Altos.ao_flight_main] != AltosLib.MISSING && + stats.state_start[Altos.ao_flight_boost] != AltosLib.MISSING) + System.out.printf("Flight time: %6.0f s\n", + stats.state_end[Altos.ao_flight_main] - + stats.state_start[Altos.ao_flight_boost]); + System.out.printf("\n"); return true; } catch (InterruptedException ie) { } catch (IOException ie) { @@ -537,10 +544,9 @@ public class AltosUI extends AltosUIFrame { try { AltosStateIterable eef = record_iterable(file); - System.out.printf ("process cat\n"); for (AltosState state : eef) { System.out.printf ("tick %d state %d height %g\n", - state.tick, state.state, state.height()); + 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(), @@ -559,9 +565,9 @@ public class AltosUI extends AltosUIFrame { public static void help(int code) { System.out.printf("Usage: altosui [OPTION]... [FILE]...\n"); System.out.printf(" Options:\n"); - System.out.printf(" --fetchmaps \tpre-fetch maps for site map view\n"); System.out.printf(" --replay \t\trelive the glory of past flights \n"); System.out.printf(" --graph \t\tgraph a flight\n"); + System.out.printf(" --summary \t\tText summary of a flight\n"); System.out.printf(" --csv\tgenerate comma separated output for spreadsheets, etc\n"); System.out.printf(" --kml\tgenerate KML output for use with Google Earth\n"); System.exit(code); @@ -574,10 +580,11 @@ public class AltosUI extends AltosUIFrame { UIManager.setLookAndFeel(AltosUIPreferences.look_and_feel()); } catch (Exception e) { } + AltosUI altosui = null; + /* Handle batch-mode */ if (args.length == 0) { - AltosUI altosui = new AltosUI(); - + altosui = new AltosUI(); java.util.List devices = AltosUSBDevice.list(Altos.product_basestation); if (devices != null) for (AltosDevice device : devices) @@ -587,16 +594,7 @@ public class AltosUI extends AltosUIFrame { for (int i = 0; i < args.length; i++) { if (args[i].equals("--help")) help(0); - else if (args[i].equals("--fetchmaps")) { - if (args.length < i + 3) { - help(1); - } else { - double lat = Double.parseDouble(args[i+1]); - double lon = Double.parseDouble(args[i+2]); -// AltosSiteMap.prefetchMaps(lat, lon); - i += 2; - } - } else if (args[i].equals("--replay")) + else if (args[i].equals("--replay")) process = process_replay; else if (args[i].equals("--kml")) process = process_kml; @@ -614,6 +612,8 @@ public class AltosUI extends AltosUIFrame { File file = new File(args[i]); switch (process) { case process_none: + if (altosui == null) + altosui = new AltosUI(); case process_graph: if (!process_graph(file)) ++errors;