blob: 7704310b6f676ba9e3abfb5eae0a7ee6a9e6e2e6 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
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();
}
};
}
}
|