diff options
Diffstat (limited to 'altosui')
-rw-r--r-- | altosui/AltosConfigUI.java | 64 | ||||
-rw-r--r-- | altosui/AltosGraphTime.java | 17 | ||||
-rw-r--r-- | altosui/AltosGraphUI.java | 16 |
3 files changed, 82 insertions, 15 deletions
diff --git a/altosui/AltosConfigUI.java b/altosui/AltosConfigUI.java index 2c3435c1..95780e2b 100644 --- a/altosui/AltosConfigUI.java +++ b/altosui/AltosConfigUI.java @@ -39,6 +39,7 @@ public class AltosConfigUI JLabel radio_calibration_label; JLabel radio_frequency_label; JLabel radio_enable_label; + JLabel aprs_interval_label; JLabel flight_log_max_label; JLabel ignite_mode_label; JLabel pad_orientation_label; @@ -56,6 +57,7 @@ public class AltosConfigUI AltosFreqList radio_frequency_value; JTextField radio_calibration_value; JRadioButton radio_enable_value; + JComboBox aprs_interval_value; JComboBox flight_log_max_value; JComboBox ignite_mode_value; JComboBox pad_orientation_value; @@ -97,6 +99,13 @@ public class AltosConfigUI "Redundant Main", }; + static String[] aprs_interval_values = { + "Disabled", + "2", + "5", + "10" + }; + static String[] pad_orientation_values = { "Antenna Up", "Antenna Down", @@ -141,6 +150,13 @@ public class AltosConfigUI radio_enable_value.setToolTipText("Firmware version does not support disabling radio"); } + void set_aprs_interval_tool_tip() { + if (aprs_interval_value.isEnabled()) + aprs_interval_value.setToolTipText("Enable APRS and set the interval between APRS reports"); + else + aprs_interval_value.setToolTipText("Hardware doesn't support APRS"); + } + void set_flight_log_max_tool_tip() { if (flight_log_max_value.isEnabled()) flight_log_max_value.setToolTipText("Size reserved for each flight log (in kB)"); @@ -393,7 +409,7 @@ public class AltosConfigUI c.anchor = GridBagConstraints.LINE_START; c.insets = il; c.ipady = 5; - radio_enable_label = new JLabel("Telemetry/RDF Enable:"); + radio_enable_label = new JLabel("Telemetry/RDF/APRS Enable:"); pane.add(radio_enable_label, c); c = new GridBagConstraints(); @@ -410,6 +426,32 @@ public class AltosConfigUI set_radio_enable_tool_tip(); row++; + /* APRS interval */ + c = new GridBagConstraints(); + c.gridx = 0; c.gridy = row; + c.gridwidth = 4; + c.fill = GridBagConstraints.NONE; + c.anchor = GridBagConstraints.LINE_START; + c.insets = il; + c.ipady = 5; + aprs_interval_label = new JLabel("APRS Interval(s):"); + pane.add(aprs_interval_label, c); + + c = new GridBagConstraints(); + c.gridx = 4; c.gridy = row; + c.gridwidth = 4; + c.fill = GridBagConstraints.HORIZONTAL; + c.weightx = 1; + c.anchor = GridBagConstraints.LINE_START; + c.insets = ir; + c.ipady = 5; + aprs_interval_value = new JComboBox(aprs_interval_values); + aprs_interval_value.setEditable(true); + aprs_interval_value.addItemListener(this); + pane.add(aprs_interval_value, c); + set_aprs_interval_tool_tip(); + row++; + /* Callsign */ c = new GridBagConstraints(); c.gridx = 0; c.gridy = row; @@ -843,4 +885,24 @@ public class AltosConfigUI pyros = pyro_ui.get_pyros(); return pyros; } + + public void set_aprs_interval(int new_aprs_interval) { + String s; + + if (new_aprs_interval <= 0) + s = "Disabled"; + else + s = Integer.toString(new_aprs_interval); + aprs_interval_value.setSelectedItem(s); + aprs_interval_value.setEnabled(new_aprs_interval >= 0); + set_aprs_interval_tool_tip(); + } + + public int aprs_interval() { + String s = aprs_interval_value.getSelectedItem().toString(); + + if (s.equals("Disabled")) + return 0; + return Integer.parseInt(s); + } } diff --git a/altosui/AltosGraphTime.java b/altosui/AltosGraphTime.java index 75e536c5..62d516b2 100644 --- a/altosui/AltosGraphTime.java +++ b/altosui/AltosGraphTime.java @@ -68,11 +68,13 @@ class AltosGraphTime extends AltosGraph { abstract static class TimeSeries implements Element { protected XYSeries series; private String axisName; + private String axisUnits; private Color color; - public TimeSeries(String axisName, String label, Color color) { + public TimeSeries(String axisName, String axisUnits, String label, Color color) { this.series = new XYSeries(label); - this.axisName = axisName; + this.axisName = String.format("%s (%s)", axisName, axisUnits); + this.axisUnits = axisUnits; this.color = color; } @@ -85,8 +87,14 @@ class AltosGraphTime extends AltosGraph { XYSeriesCollection dataset = new XYSeriesCollection(); dataset.addSeries(this.series); - XYItemRenderer renderer = new StandardXYItemRenderer(); + XYItemRenderer renderer = new XYLineAndShapeRenderer(true, false); renderer.setSeriesPaint(0, color); + StandardXYToolTipGenerator tool_tip; + + tool_tip = new StandardXYToolTipGenerator(String.format("{1}s: {2}%s ({0})", axisUnits), + new java.text.DecimalFormat("0.00"), + new java.text.DecimalFormat("0.00")); + renderer.setBaseToolTipGenerator(tool_tip); int dataNum = g.getDataNum(this); int axisNum = g.getAxisNum(this); @@ -192,10 +200,8 @@ class AltosGraphTime extends AltosGraph { public JFreeChart createChart() { NumberAxis xAxis = new NumberAxis("Time (s)"); xAxis.setAutoRangeIncludesZero(false); - XYItemRenderer renderer = new XYLineAndShapeRenderer(true, false); XYPlot plot = new XYPlot(); plot.setDomainAxis(xAxis); - plot.setRenderer(renderer); plot.setOrientation(PlotOrientation.VERTICAL); if (serial != null && flight != null) { @@ -205,7 +211,6 @@ class AltosGraphTime extends AltosGraph { title = callsign + " - " + title; } - renderer.setBaseToolTipGenerator(new StandardXYToolTipGenerator()); JFreeChart chart = new JFreeChart(title, JFreeChart.DEFAULT_TITLE_FONT, plot, true); ChartUtilities.applyCurrentTheme(chart); diff --git a/altosui/AltosGraphUI.java b/altosui/AltosGraphUI.java index f59f70ba..b7c2e92e 100644 --- a/altosui/AltosGraphUI.java +++ b/altosui/AltosGraphUI.java @@ -29,7 +29,7 @@ public class AltosGraphUI extends AltosFrame static private class OverallGraphs { AltosGraphTime.Element height = - new AltosGraphTime.TimeSeries(String.format("Height (%s)", AltosConvert.height.show_units()), "Height (AGL)", red) { + new AltosGraphTime.TimeSeries("Height", AltosConvert.height.show_units(), "Height (AGL)", red) { public void gotTimeData(double time, AltosDataPoint d) { double height = d.height(); if (height != AltosRecord.MISSING) @@ -38,7 +38,7 @@ public class AltosGraphUI extends AltosFrame }; AltosGraphTime.Element speed = - new AltosGraphTime.TimeSeries(String.format("Speed (%s)", AltosConvert.speed.show_units()), "Vertical Speed", green) { + new AltosGraphTime.TimeSeries("Speed", AltosConvert.speed.show_units(), "Vertical Speed", green) { public void gotTimeData(double time, AltosDataPoint d) { double speed = d.speed(); if (speed != AltosRecord.MISSING) @@ -47,8 +47,8 @@ public class AltosGraphUI extends AltosFrame }; AltosGraphTime.Element acceleration = - new AltosGraphTime.TimeSeries(String.format("Acceleration (%s)", - AltosConvert.accel.show_units()), + new AltosGraphTime.TimeSeries("Acceleration", + AltosConvert.accel.show_units(), "Axial Acceleration", blue) { public void gotTimeData(double time, AltosDataPoint d) { @@ -59,8 +59,8 @@ public class AltosGraphUI extends AltosFrame }; AltosGraphTime.Element temperature = - new AltosGraphTime.TimeSeries("Temperature (\u00B0C)", - "Board temperature", red) + new AltosGraphTime.TimeSeries("Temperature", "\u00B0C", + "Board temperature", red) { public void gotTimeData(double time, AltosDataPoint d) { double temp = d.temperature(); @@ -70,7 +70,7 @@ public class AltosGraphUI extends AltosFrame }; AltosGraphTime.Element drogue_voltage = - new AltosGraphTime.TimeSeries("Voltage (V)", "Drogue Continuity", yellow) + new AltosGraphTime.TimeSeries("Voltage", "(V)", "Drogue Continuity", yellow) { public void gotTimeData(double time, AltosDataPoint d) { double v = d.drogue_voltage(); @@ -80,7 +80,7 @@ public class AltosGraphUI extends AltosFrame }; AltosGraphTime.Element main_voltage = - new AltosGraphTime.TimeSeries("Voltage (V)", "Main Continuity", magenta) + new AltosGraphTime.TimeSeries("Voltage", "(V)", "Main Continuity", magenta) { public void gotTimeData(double time, AltosDataPoint d) { double v = d.main_voltage(); |