summaryrefslogtreecommitdiff
path: root/micropeak
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2013-02-09 20:24:33 -0800
committerKeith Packard <keithp@keithp.com>2013-02-10 00:30:32 -0800
commit0169e56ad030c0096b1068d00f06957990dfb31f (patch)
tree9a70b183d8170a8633cfac932a0ed8f2f17660f0 /micropeak
parent518b16f64f4be096ceff13ab31b96d6909fe3ae2 (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.java2
-rw-r--r--micropeak/MicroDataPoint.java31
-rw-r--r--micropeak/MicroGraph.java8
-rw-r--r--micropeak/MicroPeak.java12
-rw-r--r--micropeak/MicroStats.java37
-rw-r--r--micropeak/MicroStatsTable.java4
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();