From b16b873723ee3e5097e6725c59ce191119439ad7 Mon Sep 17 00:00:00 2001 From: Anthony Towns Date: Thu, 11 Nov 2010 15:38:27 +1000 Subject: use value_font for values --- ao-tools/altosui/AltosAscent.java | 14 +++++++------- ao-tools/altosui/AltosDescent.java | 6 +++--- ao-tools/altosui/AltosLanded.java | 6 +++--- ao-tools/altosui/AltosPad.java | 8 ++++---- 4 files changed, 17 insertions(+), 17 deletions(-) diff --git a/ao-tools/altosui/AltosAscent.java b/ao-tools/altosui/AltosAscent.java index 40df7af8..51fa1a89 100644 --- a/ao-tools/altosui/AltosAscent.java +++ b/ao-tools/altosui/AltosAscent.java @@ -53,8 +53,8 @@ public class AltosAscent extends JComponent implements AltosFlightDisplay { layout.setConstraints(label, c); add(label); - value = new JTextField(20); - value.setFont(label_font); + value = new JTextField(30); + value.setFont(value_font); value.setHorizontalAlignment(SwingConstants.RIGHT); c.gridx = 1; c.gridy = y; c.anchor = GridBagConstraints.WEST; @@ -98,16 +98,16 @@ public class AltosAscent extends JComponent implements AltosFlightDisplay { layout.setConstraints(label, c); add(label); - value = new JTextField(10); - value.setFont(label_font); + value = new JTextField(15); + value.setFont(value_font); value.setHorizontalAlignment(SwingConstants.RIGHT); c.gridx = 1; c.gridy = y; c.anchor = GridBagConstraints.EAST; layout.setConstraints(value, c); add(value); - max_value = new JTextField(10); - max_value.setFont(label_font); + max_value = new JTextField(15); + max_value.setFont(value_font); max_value.setHorizontalAlignment(SwingConstants.RIGHT); c.gridx = 2; c.gridy = y; c.anchor = GridBagConstraints.EAST; @@ -231,7 +231,7 @@ public class AltosAscent extends JComponent implements AltosFlightDisplay { layout = new GridBagLayout(); label_font = new Font("Dialog", Font.PLAIN, 24); - value_font = new Font("Monospace", Font.PLAIN, 24); + value_font = new Font("Monospaced", Font.PLAIN, 24); setLayout(layout); /* Elements in ascent display: diff --git a/ao-tools/altosui/AltosDescent.java b/ao-tools/altosui/AltosDescent.java index 0d3d17f0..0b7c8036 100644 --- a/ao-tools/altosui/AltosDescent.java +++ b/ao-tools/altosui/AltosDescent.java @@ -58,8 +58,8 @@ public class AltosDescent extends JComponent implements AltosFlightDisplay { layout.setConstraints(label, c); add(label); - value = new JTextField(20); - value.setFont(label_font); + value = new JTextField(30); + value.setFont(value_font); value.setHorizontalAlignment(SwingConstants.RIGHT); c.gridx = 1; c.gridy = y; c.anchor = GridBagConstraints.WEST; @@ -196,7 +196,7 @@ public class AltosDescent extends JComponent implements AltosFlightDisplay { layout = new GridBagLayout(); label_font = new Font("Dialog", Font.PLAIN, 24); - value_font = new Font("Monospace", Font.PLAIN, 24); + value_font = new Font("Monospaced", Font.PLAIN, 24); setLayout(layout); /* Elements in descent display */ diff --git a/ao-tools/altosui/AltosLanded.java b/ao-tools/altosui/AltosLanded.java index 4b74aaa3..d170ccad 100644 --- a/ao-tools/altosui/AltosLanded.java +++ b/ao-tools/altosui/AltosLanded.java @@ -58,8 +58,8 @@ public class AltosLanded extends JComponent implements AltosFlightDisplay { layout.setConstraints(label, c); add(label); - value = new JTextField(20); - value.setFont(label_font); + value = new JTextField(30); + value.setFont(value_font); value.setHorizontalAlignment(SwingConstants.RIGHT); c.gridx = 1; c.gridy = y; c.anchor = GridBagConstraints.WEST; @@ -193,7 +193,7 @@ public class AltosLanded extends JComponent implements AltosFlightDisplay { layout = new GridBagLayout(); label_font = new Font("Dialog", Font.PLAIN, 24); - value_font = new Font("Monospace", Font.PLAIN, 24); + value_font = new Font("Monospaced", Font.PLAIN, 24); setLayout(layout); /* Elements in descent display */ diff --git a/ao-tools/altosui/AltosPad.java b/ao-tools/altosui/AltosPad.java index 7b72be20..da047072 100644 --- a/ao-tools/altosui/AltosPad.java +++ b/ao-tools/altosui/AltosPad.java @@ -64,8 +64,8 @@ public class AltosPad extends JComponent implements AltosFlightDisplay { layout.setConstraints(label, c); add(label); - value = new JTextField(10); - value.setFont(label_font); + value = new JTextField(15); + value.setFont(value_font); value.setHorizontalAlignment(SwingConstants.RIGHT); c.gridx = 2; c.gridy = y; c.anchor = GridBagConstraints.WEST; @@ -95,8 +95,8 @@ public class AltosPad extends JComponent implements AltosFlightDisplay { layout.setConstraints(label, c); add(label); - value = new JTextField(20); - value.setFont(label_font); + value = new JTextField(30); + value.setFont(value_font); value.setHorizontalAlignment(SwingConstants.RIGHT); c.gridx = 2; c.gridy = y; c.anchor = GridBagConstraints.EAST; -- cgit v1.2.3 From 1f3e091efdfb2fe6f06a066cac60f5d267b94856 Mon Sep 17 00:00:00 2001 From: Anthony Towns Date: Thu, 11 Nov 2010 15:40:37 +1000 Subject: add --replay command line argument --- ao-tools/altosui/AltosUI.java | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/ao-tools/altosui/AltosUI.java b/ao-tools/altosui/AltosUI.java index ded9e733..2861444d 100644 --- a/ao-tools/altosui/AltosUI.java +++ b/ao-tools/altosui/AltosUI.java @@ -456,7 +456,26 @@ public class AltosUI extends JFrame { public static void main(final String[] args) { int process = 0; /* Handle batch-mode */ - if (args.length > 0) { + if (args.length == 2 && args[0].equals("--replay")) { + String filename = args[1]; + FileInputStream in; + try { + in = new FileInputStream(filename); + } catch (Exception e) { + System.out.printf("Failed to open file '%s'\n", filename); + return; + } + AltosRecordIterable recs; + AltosReplayReader reader; + if (filename.endsWith("eeprom")) { + recs = new AltosEepromIterable(in); + } else { + recs = new AltosTelemetryIterable(in); + } + reader = new AltosReplayReader(recs.iterator(), filename); + new AltosFlightUI(new AltosVoice(), reader); + return; + } else if (args.length > 0) { for (int i = 0; i < args.length; i++) { if (args[i].equals("--kml")) process |= process_kml; -- cgit v1.2.3 From 3ffaa5d1c00b28be20fd4a26deb7bd41d953e92a Mon Sep 17 00:00:00 2001 From: Anthony Towns Date: Thu, 11 Nov 2010 15:43:05 +1000 Subject: read preferences for --replay --- ao-tools/altosui/AltosFlightUI.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ao-tools/altosui/AltosFlightUI.java b/ao-tools/altosui/AltosFlightUI.java index 558b0395..3581c54c 100644 --- a/ao-tools/altosui/AltosFlightUI.java +++ b/ao-tools/altosui/AltosFlightUI.java @@ -122,6 +122,8 @@ public class AltosFlightUI extends JFrame implements AltosFlightDisplay { } public AltosFlightUI(AltosVoice in_voice, AltosFlightReader in_reader, final int serial) { + AltosPreferences.init(this); + voice = in_voice; reader = in_reader; -- cgit v1.2.3 From 8503943e3613f8670b128012b12ff14fb54321d7 Mon Sep 17 00:00:00 2001 From: Anthony Towns Date: Thu, 11 Nov 2010 15:45:43 +1000 Subject: reduce font size for FlightInfoTable --- ao-tools/altosui/AltosInfoTable.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ao-tools/altosui/AltosInfoTable.java b/ao-tools/altosui/AltosInfoTable.java index 9964ab10..2f326e07 100644 --- a/ao-tools/altosui/AltosInfoTable.java +++ b/ao-tools/altosui/AltosInfoTable.java @@ -37,8 +37,8 @@ public class AltosInfoTable { private AltosFlightInfoTableModel model[]; private Box ibox[]; - private Font infoLabelFont = new Font("SansSerif", Font.PLAIN, 14); - private Font infoValueFont = new Font("Monospaced", Font.PLAIN, 14); + private Font infoLabelFont = new Font("SansSerif", Font.PLAIN, 12); + private Font infoValueFont = new Font("Monospaced", Font.PLAIN, 12); static final int info_columns = 3; static final int info_rows = 17; -- cgit v1.2.3 From 317ec72a34906faad88c6924e634617b074e71db Mon Sep 17 00:00:00 2001 From: Anthony Towns Date: Thu, 11 Nov 2010 15:52:01 +1000 Subject: use grayled.png for off --- ao-tools/altosui/AltosLights.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ao-tools/altosui/AltosLights.java b/ao-tools/altosui/AltosLights.java index f1ed47c2..2fa38412 100644 --- a/ao-tools/altosui/AltosLights.java +++ b/ao-tools/altosui/AltosLights.java @@ -58,16 +58,16 @@ public class AltosLights extends JComponent { setLayout(gridbag); c = new GridBagConstraints(); - red = new AltosLed("/redled.png", "/redoff.png"); + red = new AltosLed("/redled.png", "/grayled.png"); c.gridx = 0; c.gridy = 0; c.insets = new Insets (0, 5, 0, 5); gridbag.setConstraints(red, c); add(red); red.set(true); - green = new AltosLed("/greenled.png", "/greenoff.png"); + green = new AltosLed("/greenled.png", "/grayled.png"); c.gridx = 1; c.gridy = 0; gridbag.setConstraints(green, c); add(green); green.set(false); } -} \ No newline at end of file +} -- cgit v1.2.3 From cc0a730de093c49be2a921101d27622b6f592e92 Mon Sep 17 00:00:00 2001 From: Anthony Towns Date: Thu, 11 Nov 2010 15:57:52 +1000 Subject: add compass bearing to voice output --- ao-tools/altosui/AltosDisplayThread.java | 4 +++- ao-tools/altosui/AltosGreatCircle.java | 25 +++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/ao-tools/altosui/AltosDisplayThread.java b/ao-tools/altosui/AltosDisplayThread.java index b5b2777e..375965b9 100644 --- a/ao-tools/altosui/AltosDisplayThread.java +++ b/ao-tools/altosui/AltosDisplayThread.java @@ -69,8 +69,10 @@ public class AltosDisplayThread extends Thread { state.state < Altos.ao_flight_landed && state.range >= 0) { - voice.speak("Height %d, bearing %d, elevation %d, range %d.\n", + voice.speak("Height %d, bearing %s %d, elevation %d, range %d.\n", (int) (state.height + 0.5), + state.from_pad.bearing_words( + AltosGreatCircle.BEARING_VOICE), (int) (state.from_pad.bearing + 0.5), (int) (state.elevation + 0.5), (int) (state.range + 0.5)); diff --git a/ao-tools/altosui/AltosGreatCircle.java b/ao-tools/altosui/AltosGreatCircle.java index 07c02c16..aa6ae3b9 100644 --- a/ao-tools/altosui/AltosGreatCircle.java +++ b/ao-tools/altosui/AltosGreatCircle.java @@ -30,6 +30,31 @@ public class AltosGreatCircle { static final double rad = Math.PI / 180; static final double earth_radius = 6371.2 * 1000; /* in meters */ + static int BEARING_LONG = 0; + static int BEARING_SHORT = 1; + static int BEARING_VOICE = 2; + String bearing_words(int length) { + String [][] bearing_string = { + { + "North", "North North East", "North East", "East North East", + "East", "East South East", "South East", "South South East", + "South", "South South West", "South West", "West South West", + "West", "West North West", "North West", "North North West" + }, { + "N", "NNE", "NE", "ENE", + "E", "ESE", "SE", "SSE", + "S", "SSW", "SW", "WSW", + "W", "WNW", "NW", "NNW" + }, { + "north", "nor nor east", "north east", "east nor east", + "east", "east sow east", "south east", "sow sow east", + "south", "sow sow west", "south west", "west sow west", + "west", "west nor west", "north west", "nor nor west " + } + }; + return bearing_string[length][(int)((bearing / 90 * 8 + 1) / 2)%16]; + } + public AltosGreatCircle (double start_lat, double start_lon, double end_lat, double end_lon) { -- cgit v1.2.3 From 75f7698b99a661ed17a91748a99699fa6761772a Mon Sep 17 00:00:00 2001 From: Anthony Towns Date: Thu, 11 Nov 2010 16:06:32 +1000 Subject: add compass bearing during descent --- ao-tools/altosui/AltosDescent.java | 50 ++++++++++++++++++++++++++++++++++---- 1 file changed, 45 insertions(+), 5 deletions(-) diff --git a/ao-tools/altosui/AltosDescent.java b/ao-tools/altosui/AltosDescent.java index 0b7c8036..56d3e4fe 100644 --- a/ao-tools/altosui/AltosDescent.java +++ b/ao-tools/altosui/AltosDescent.java @@ -62,6 +62,7 @@ public class AltosDescent extends JComponent implements AltosFlightDisplay { value.setFont(value_font); value.setHorizontalAlignment(SwingConstants.RIGHT); c.gridx = 1; c.gridy = y; + c.gridwidth = 2; c.anchor = GridBagConstraints.WEST; c.fill = GridBagConstraints.HORIZONTAL; layout.setConstraints(value, c); @@ -133,15 +134,54 @@ public class AltosDescent extends JComponent implements AltosFlightDisplay { Lon lon; - class Bearing extends DescentValue { + class Bearing { + JLabel label; + JTextField value; + JTextField value_deg; + void reset () { + value.setText(""); + value_deg.setText(""); + } void show (AltosState state, int crc_errors) { - if (state.from_pad != null) - show("%3.0f°", state.from_pad.bearing); - else + if (state.from_pad != null) { + value.setText(state.from_pad.bearing_words( + AltosGreatCircle.BEARING_LONG)); + value_deg.setText(String.format("%3.0f°", state.from_pad.bearing)); + } else { value.setText("???"); + value_deg.setText("???"); + } } public Bearing (GridBagLayout layout, int y) { - super (layout, y, "Bearing"); + GridBagConstraints c = new GridBagConstraints(); + + label = new JLabel("Bearing"); + label.setFont(label_font); + label.setHorizontalAlignment(SwingConstants.LEFT); + c.gridx = 0; c.gridy = y; + c.insets = new Insets(10, 10, 10, 10); + c.anchor = GridBagConstraints.WEST; + layout.setConstraints(label, c); + add(label); + + value = new JTextField(30); + value.setFont(value_font); + value.setHorizontalAlignment(SwingConstants.RIGHT); + c.gridx = 1; c.gridy = y; + c.anchor = GridBagConstraints.EAST; + c.fill = GridBagConstraints.HORIZONTAL; + layout.setConstraints(value, c); + add(value); + + value_deg = new JTextField(5); + value_deg.setFont(value_font); + value_deg.setHorizontalAlignment(SwingConstants.RIGHT); + c.gridx = 2; c.gridy = y; + c.anchor = GridBagConstraints.EAST; + c.fill = GridBagConstraints.HORIZONTAL; + + layout.setConstraints(value_deg, c); + add(value_deg); } } -- cgit v1.2.3