summaryrefslogtreecommitdiff
path: root/altosui
diff options
context:
space:
mode:
Diffstat (limited to 'altosui')
-rw-r--r--altosui/AltosConfigUI.java64
-rw-r--r--altosui/AltosGraphTime.java17
-rw-r--r--altosui/AltosGraphUI.java16
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();