diff options
author | Keith Packard <keithp@keithp.com> | 2013-09-05 11:33:48 -0700 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2013-09-05 11:35:14 -0700 |
commit | 5b976a6651f4eb05d30afc08b9e1f27c7e52ae00 (patch) | |
tree | 3a8f38d92fdc3b3e9e62d7744ff93a0f9ca8f7dc /altoslib/AltosTelemetryIterable.java | |
parent | b984ff81d6b8979574e0248ffe8876634b8e1942 (diff) |
altoslib: Finish AltosState changes. Update version number.
Removes all of the AltosRecord bits, changes the monitor idle bits to
have per-object state updaters.
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'altoslib/AltosTelemetryIterable.java')
-rw-r--r-- | altoslib/AltosTelemetryIterable.java | 65 |
1 files changed, 63 insertions, 2 deletions
diff --git a/altoslib/AltosTelemetryIterable.java b/altoslib/AltosTelemetryIterable.java index b7489f77..8075b8a3 100644 --- a/altoslib/AltosTelemetryIterable.java +++ b/altoslib/AltosTelemetryIterable.java @@ -15,17 +15,78 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2; import java.io.*; import java.util.*; import java.text.*; +class AltosTelemetryOrdered implements Comparable<AltosTelemetryOrdered> { + AltosTelemetry telem; + int index; + int tick; + + public int compareTo(AltosTelemetryOrdered o) { + int tick_diff = tick - o.tick; + + if (tick_diff != 0) + return tick_diff; + return index - o.index; + } + + AltosTelemetryOrdered (AltosTelemetry telem, int index, int tick) { + this.telem = telem; + this.index = index; + this.tick = tick; + } +} + +class AltosTelemetryOrderedIterator implements Iterator<AltosTelemetry> { + TreeSet<AltosTelemetryOrdered> olist; + Iterator<AltosTelemetryOrdered> oiterator; + + public AltosTelemetryOrderedIterator(Iterable<AltosTelemetry> telems) { + olist = new TreeSet<AltosTelemetryOrdered>(); + + int tick = 0; + int index = 0; + boolean first = true; + + for (AltosTelemetry e : telems) { + int t = e.tick; + if (first) + tick = t; + else { + while (t < tick - 32767) + t += 65536; + tick = t; + } + olist.add(new AltosTelemetryOrdered(e, index++, tick)); + first = false; + } + + oiterator = olist.iterator(); + } + + public boolean hasNext() { + return oiterator.hasNext(); + } + + public AltosTelemetry next() { + return oiterator.next().telem; + } + + public void remove () { + } +} + public class AltosTelemetryIterable implements Iterable<AltosTelemetry> { LinkedList<AltosTelemetry> telems; public Iterator<AltosTelemetry> iterator () { - return telems.iterator(); + if (telems == null) + telems = new LinkedList<AltosTelemetry>(); + return new AltosTelemetryOrderedIterator(telems); } public AltosTelemetryIterable (FileInputStream input) { |