summaryrefslogtreecommitdiff
path: root/micropeak/MicroData.java
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2012-12-31 14:17:26 -0800
committerKeith Packard <keithp@keithp.com>2012-12-31 14:17:26 -0800
commit2bd6aca54fc465995d6985c8799cd0d016c9a543 (patch)
tree86837459a95308ae286d2b8bae4d9e0e20e6d37f /micropeak/MicroData.java
parent56a1210a7b04a3623d19ec282f26fecc79c126dd (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.java100
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;
+ }
}