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(); | 
