2 // Copyright (c) 2010 Anthony Towns
7 import java.io.IOException;
8 import java.text.ParseException;
9 import java.lang.UnsupportedOperationException;
10 import java.util.NoSuchElementException;
11 import java.util.Iterator;
13 import altosui.AltosDataPoint;
14 import altosui.AltosRecordIterable;
15 import altosui.AltosRecord;
16 import altosui.AltosState;
18 class AltosDataPointReader implements Iterable<AltosDataPoint> {
19 Iterator<AltosRecord> iter;
23 public AltosDataPointReader(Iterable<AltosRecord> reader) {
24 this.iter = reader.iterator();
28 private void read_next_record()
29 throws NoSuchElementException
32 state = new AltosState(record, state);
35 private AltosDataPoint current_dp() {
36 assert this.record != null;
38 return new AltosDataPoint() {
39 public int version() { return record.version; }
40 public int serial() { return record.serial; }
41 public int flight() { return record.flight; }
42 public String callsign() { return record.callsign; }
43 public double time() { return record.time; }
44 public double rssi() { return record.rssi; }
46 public int state() { return record.state; }
47 public String state_name() { return record.state(); }
49 public double acceleration() { return record.acceleration(); }
50 public double pressure() { return record.raw_pressure(); }
51 public double altitude() { return record.raw_altitude(); }
52 public double height() { return record.raw_height(); }
53 public double accel_speed() { return record.accel_speed(); }
54 public double baro_speed() { return state.baro_speed; }
55 public double temperature() { return record.temperature(); }
56 public double battery_voltage() { return record.battery_voltage(); }
57 public double drogue_voltage() { return record.drogue_voltage(); }
58 public double main_voltage() { return record.main_voltage(); }
62 public Iterator<AltosDataPoint> iterator() {
63 return new Iterator<AltosDataPoint>() {
64 public void remove() {
65 throw new UnsupportedOperationException();
67 public boolean hasNext() {
68 return iter.hasNext();
70 public AltosDataPoint next() {