diff options
author | Keith Packard <keithp@keithp.com> | 2010-11-24 21:00:52 -0800 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2010-11-24 21:00:52 -0800 |
commit | 51c7741040d95c5deece939dae5e4136cc04afc4 (patch) | |
tree | 96631ee5aa9fd0c8c45f019ff154cc4fc8ca85d0 /altosui/AltosDataPointReader.java | |
parent | d1dbe3b69e6f95ef8ecd4cf959863b922ab47c66 (diff) | |
parent | 4e47c44d335276cf0dc5ed3a0756e50c98c1b9b9 (diff) |
Merge branch 'buttonbox'
Conflicts:
doc/telemetrum-doc.xsl
Pull the buttbox version of the docs in as it had been updated.
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'altosui/AltosDataPointReader.java')
-rw-r--r-- | altosui/AltosDataPointReader.java | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/altosui/AltosDataPointReader.java b/altosui/AltosDataPointReader.java new file mode 100644 index 00000000..7704310b --- /dev/null +++ b/altosui/AltosDataPointReader.java @@ -0,0 +1,72 @@ + +// Copyright (c) 2010 Anthony Towns +// GPL v2 or later + +package altosui; + +import java.io.IOException; +import java.text.ParseException; +import java.lang.UnsupportedOperationException; +import java.util.NoSuchElementException; +import java.util.Iterator; + +class AltosDataPointReader implements Iterable<AltosDataPoint> { + Iterator<AltosRecord> iter; + AltosState state; + AltosRecord record; + + public AltosDataPointReader(Iterable<AltosRecord> reader) { + this.iter = reader.iterator(); + this.state = null; + } + + private void read_next_record() + throws NoSuchElementException + { + record = iter.next(); + state = new AltosState(record, state); + } + + private AltosDataPoint current_dp() { + assert this.record != null; + + return new AltosDataPoint() { + public int version() { return record.version; } + public int serial() { return record.serial; } + public int flight() { return record.flight; } + public String callsign() { return record.callsign; } + public double time() { return record.time; } + public double rssi() { return record.rssi; } + + public int state() { return record.state; } + public String state_name() { return record.state(); } + + public double acceleration() { return record.acceleration(); } + public double pressure() { return record.raw_pressure(); } + public double altitude() { return record.raw_altitude(); } + public double height() { return record.raw_height(); } + public double accel_speed() { return record.accel_speed(); } + public double baro_speed() { return state.baro_speed; } + public double temperature() { return record.temperature(); } + public double battery_voltage() { return record.battery_voltage(); } + public double drogue_voltage() { return record.drogue_voltage(); } + public double main_voltage() { return record.main_voltage(); } + }; + } + + public Iterator<AltosDataPoint> iterator() { + return new Iterator<AltosDataPoint>() { + public void remove() { + throw new UnsupportedOperationException(); + } + public boolean hasNext() { + return iter.hasNext(); + } + public AltosDataPoint next() { + read_next_record(); + return current_dp(); + } + }; + } +} + |