diff options
author | Keith Packard <keithp@keithp.com> | 2013-02-09 20:24:33 -0800 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2013-02-10 00:30:32 -0800 |
commit | 0169e56ad030c0096b1068d00f06957990dfb31f (patch) | |
tree | 9a70b183d8170a8633cfac932a0ed8f2f17660f0 /micropeak | |
parent | 518b16f64f4be096ceff13ab31b96d6909fe3ae2 (diff) |
altosuilib/micropeak: Add state markers to micropeak graph
I think this makes the micropeak graph as functional as the altosui graph
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'micropeak')
-rw-r--r-- | micropeak/MicroData.java | 2 | ||||
-rw-r--r-- | micropeak/MicroDataPoint.java | 31 | ||||
-rw-r--r-- | micropeak/MicroGraph.java | 8 | ||||
-rw-r--r-- | micropeak/MicroPeak.java | 12 | ||||
-rw-r--r-- | micropeak/MicroStats.java | 37 | ||||
-rw-r--r-- | micropeak/MicroStatsTable.java | 4 |
6 files changed, 75 insertions, 19 deletions
diff --git a/micropeak/MicroData.java b/micropeak/MicroData.java index 26e3c07d..4c0ed4c3 100644 --- a/micropeak/MicroData.java +++ b/micropeak/MicroData.java @@ -98,6 +98,7 @@ public class MicroData implements AltosUIDataSet { private double ground_altitude; private ArrayList<Integer> bytes; String name; + MicroStats stats; class FileEndedException extends Exception { } @@ -380,6 +381,7 @@ public class MicroData implements AltosUIDataSet { crc_valid = crc == current_crc; time_step = 0.192; + stats = new MicroStats(this); } catch (FileEndedException fe) { throw new IOException("File Ended Unexpectedly"); } catch (NonHexcharException ne) { diff --git a/micropeak/MicroDataPoint.java b/micropeak/MicroDataPoint.java index a81eb0d3..61faf794 100644 --- a/micropeak/MicroDataPoint.java +++ b/micropeak/MicroDataPoint.java @@ -20,15 +20,17 @@ package org.altusmetrum.micropeak; import org.altusmetrum.altosuilib_1.*; public class MicroDataPoint implements AltosUIDataPoint { - public double time; - public double pressure; - public double height; - public double speed; - public double accel; + public double time; + public double pressure; + public double height; + public double speed; + public double accel; + public MicroStats stats; public static final int data_height = 0; public static final int data_speed = 1; public static final int data_accel = 2; + public static final int data_state = 3; public double x() { return time; @@ -47,12 +49,26 @@ public class MicroDataPoint implements AltosUIDataPoint { } } - public MicroDataPoint (double pressure, double height, double speed, double accel, double time) { + public int id(int index) { + if (index == data_state) { + return stats.state(time); + } + return 0; + } + + public String id_name(int index) { + if (index == data_state) + return stats.state_name(time); + return ""; + } + + public MicroDataPoint (double pressure, double height, double speed, double accel, double time, MicroStats stats) { this.pressure = pressure; this.height = height; this.speed = speed; this.accel = accel; this.time = time; + this.stats = stats; } public MicroDataPoint(MicroData data, int i) { @@ -60,6 +76,7 @@ public class MicroDataPoint implements AltosUIDataPoint { data.height(i), data.speed(i), data.acceleration(i), - data.time(i)); + data.time(i), + data.stats); } }
\ No newline at end of file diff --git a/micropeak/MicroGraph.java b/micropeak/MicroGraph.java index 0071a160..50508a61 100644 --- a/micropeak/MicroGraph.java +++ b/micropeak/MicroGraph.java @@ -40,12 +40,14 @@ public class MicroGraph extends AltosUIGraph { static final private Color height_color = new Color(194,31,31); static final private Color speed_color = new Color(31,194,31); static final private Color accel_color = new Color(31,31,194); + static final private Color state_color = new Color(3,3,3); public MicroGraph(AltosUIEnable enable) { super(enable); - addSeries(0, "Height", MicroDataPoint.data_height, AltosConvert.height, height_color); - addSeries(1, "Speed", MicroDataPoint.data_speed, AltosConvert.speed, speed_color); - addSeries(2, "Acceleration", MicroDataPoint.data_accel, AltosConvert.accel, accel_color); + addSeries("Height", MicroDataPoint.data_height, AltosConvert.height, height_color); + addSeries("Speed", MicroDataPoint.data_speed, AltosConvert.speed, speed_color); + addSeries("Acceleration", MicroDataPoint.data_accel, AltosConvert.accel, accel_color); + addMarker("State", MicroDataPoint.data_state, state_color); } }
\ No newline at end of file diff --git a/micropeak/MicroPeak.java b/micropeak/MicroPeak.java index 871d5cc3..57f17dbe 100644 --- a/micropeak/MicroPeak.java +++ b/micropeak/MicroPeak.java @@ -31,9 +31,10 @@ public class MicroPeak extends MicroFrame implements ActionListener, ItemListene File filename; MicroGraph graph; AltosUIEnable enable; - MicroStatsTable stats; + MicroStatsTable statsTable; MicroRaw raw; MicroData data; + MicroStats stats; Container container; JTabbedPane pane; static int number_of_windows; @@ -45,8 +46,9 @@ public class MicroPeak extends MicroFrame implements ActionListener, ItemListene return mp.SetData(data); } this.data = data; + stats = new MicroStats(data); graph.setDataSet(data); - stats.setData(data); + statsTable.setStats(stats); raw.setData(data); setTitle(data.name); return this; @@ -232,18 +234,18 @@ public class MicroPeak extends MicroFrame implements ActionListener, ItemListene addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { - stats.tell_closing(); + statsTable.tell_closing(); Close(); } }); enable = new AltosUIEnable(); graph = new MicroGraph(enable); - stats = new MicroStatsTable(); + statsTable = new MicroStatsTable(); raw = new MicroRaw(); pane.add(graph.panel, "Graph"); pane.add(enable, "Configure Graph"); - pane.add(stats, "Statistics"); + pane.add(statsTable, "Statistics"); JScrollPane scroll = new JScrollPane(raw); pane.add(scroll, "Raw Data"); pane.doLayout(); diff --git a/micropeak/MicroStats.java b/micropeak/MicroStats.java index abc1296b..99479cb4 100644 --- a/micropeak/MicroStats.java +++ b/micropeak/MicroStats.java @@ -150,6 +150,43 @@ public class MicroStats { return descent_height() / descent_duration(); } + public static final int state_startup = -1; + public static final int state_pad = 0; + public static final int state_boost = 1; + public static final int state_coast = 2; + public static final int state_descent = 3; + public static final int state_landed = 4; + + static final String state_names[] = { + "pad", + "boost", + "coast", + "descent", + "landed" + }; + + public int state(double t) { + if (t >= landed_time) + return state_landed; + if (t >= apogee_time) + return state_descent; + if (t >= coast_time) + return state_coast; + if (t >= 0) + return state_boost; + return state_pad; + } + + public static String state_name(int state) { + if (state < 0 || state > state_landed) + return "unknown"; + return state_names[state]; + } + + public String state_name(double t) { + return state_name(state(t)); + } + public MicroStats(MicroData data) { this.data = data; diff --git a/micropeak/MicroStatsTable.java b/micropeak/MicroStatsTable.java index 5bdf5cb6..145bb70e 100644 --- a/micropeak/MicroStatsTable.java +++ b/micropeak/MicroStatsTable.java @@ -116,10 +116,6 @@ public class MicroStatsTable extends JComponent implements AltosFontListener { set_font(); } - public void setData(MicroData data) { - setStats(new MicroStats(data)); - } - public MicroStatsTable(MicroStats stats) { layout = new GridBagLayout(); |