diff options
author | Keith Packard <keithp@keithp.com> | 2012-12-31 14:17:26 -0800 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2012-12-31 14:17:26 -0800 |
commit | 2bd6aca54fc465995d6985c8799cd0d016c9a543 (patch) | |
tree | 86837459a95308ae286d2b8bae4d9e0e20e6d37f /micropeak/MicroData.java | |
parent | 56a1210a7b04a3623d19ec282f26fecc79c126dd (diff) |
micropeak: Add flight stats pane
Shows graph or stats in alternate panes
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'micropeak/MicroData.java')
-rw-r--r-- | micropeak/MicroData.java | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/micropeak/MicroData.java b/micropeak/MicroData.java index 783ae40f..ec9b83d8 100644 --- a/micropeak/MicroData.java +++ b/micropeak/MicroData.java @@ -22,6 +22,87 @@ import java.io.*; import java.util.*; import org.altusmetrum.AltosLib.*; +abstract class MicroIterator implements Iterator<Double> { + int i; + MicroData data; + + public boolean hasNext() { + return i < data.pressures.length; + } + + public MicroIterator (MicroData data) { + this.data = data; + i = 0; + } + + public void remove() { + } +} + +class MicroHeightIterator extends MicroIterator { + public Double next() { + return data.height(i++); + } + + public MicroHeightIterator(MicroData data) { + super(data); + } +} + +class MicroHeightIterable implements Iterable<Double> { + MicroData data; + + public Iterator<Double> iterator() { + return new MicroHeightIterator(data); + } + + public MicroHeightIterable(MicroData data) { + this.data = data; + } +} + +class MicroSpeedIterator extends MicroIterator { + public Double next() { + return data.speed(i++); + } + public MicroSpeedIterator(MicroData data) { + super(data); + } +} + +class MicroSpeedIterable implements Iterable<Double> { + MicroData data; + + public Iterator<Double> iterator() { + return new MicroSpeedIterator(data); + } + + public MicroSpeedIterable(MicroData data) { + this.data = data; + } +} + +class MicroAccelIterator extends MicroIterator { + public Double next() { + return data.acceleration(i++); + } + public MicroAccelIterator(MicroData data) { + super(data); + } +} + +class MicroAccelIterable implements Iterable<Double> { + MicroData data; + + public Iterator<Double> iterator() { + return new MicroAccelIterator(data); + } + + public MicroAccelIterable(MicroData data) { + this.data = data; + } +} + public class MicroData { public int ground_pressure; public int min_pressure; @@ -143,6 +224,18 @@ public class MicroData { return AltosConvert.pressure_to_altitude(pressures[i]); } + public Iterable<Double> heights() { + return new MicroHeightIterable(this); + } + + public Iterable<Double> speeds() { + return new MicroSpeedIterable(this); + } + + public Iterable<Double> accels() { + return new MicroAccelIterable(this); + } + int fact(int n) { if (n == 0) return 1; @@ -266,5 +359,12 @@ public class MicroData { throw new IOException(); } } + + public MicroData() { + ground_pressure = 101000; + min_pressure = 101000; + pressures = new int[1]; + pressures[0] = 101000; + } } |