summaryrefslogtreecommitdiff
path: root/altoslib/AltosTelemetryIterable.java
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2013-08-31 01:48:02 -0500
committerKeith Packard <keithp@keithp.com>2013-08-31 01:48:58 -0500
commitf07f6d55edf5b97020680b3ce1d9e00bb3df64a6 (patch)
treed701ad9e7a598d2436eb66d3cd958409c364a374 /altoslib/AltosTelemetryIterable.java
parentde8d9c5630ae46378c50faf97f7d2e97fe139e30 (diff)
altoslib/altosui: Get legacy telem working with new AltosState structure
Make AltosTelemetry work without AltosRecord Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'altoslib/AltosTelemetryIterable.java')
-rw-r--r--altoslib/AltosTelemetryIterable.java71
1 files changed, 8 insertions, 63 deletions
diff --git a/altoslib/AltosTelemetryIterable.java b/altoslib/AltosTelemetryIterable.java
index 57033638..b7489f77 100644
--- a/altoslib/AltosTelemetryIterable.java
+++ b/altoslib/AltosTelemetryIterable.java
@@ -21,27 +21,15 @@ import java.io.*;
import java.util.*;
import java.text.*;
-public class AltosTelemetryIterable extends AltosRecordIterable {
- TreeSet<AltosRecord> records;
+public class AltosTelemetryIterable implements Iterable<AltosTelemetry> {
+ LinkedList<AltosTelemetry> telems;
- public Iterator<AltosRecord> iterator () {
- return records.iterator();
+ public Iterator<AltosTelemetry> iterator () {
+ return telems.iterator();
}
- boolean has_gps = false;
- boolean has_accel = false;
- boolean has_ignite = false;
- public boolean has_gps() { return has_gps; }
- public boolean has_accel() { return has_accel; }
- public boolean has_ignite() { return has_ignite; };
-
public AltosTelemetryIterable (FileInputStream input) {
- boolean saw_boost = false;
- int current_tick = 0;
- int boost_tick = 0;
-
- AltosRecord previous = null;
- records = new TreeSet<AltosRecord> ();
+ telems = new LinkedList<AltosTelemetry> ();
try {
for (;;) {
@@ -50,32 +38,10 @@ public class AltosTelemetryIterable extends AltosRecordIterable {
break;
}
try {
- AltosRecord record = AltosTelemetry.parse(line, previous);
- if (record == null)
+ AltosTelemetry telem = AltosTelemetry.parse(line);
+ if (telem == null)
break;
- if (records.isEmpty()) {
- current_tick = record.tick;
- } else {
- int tick = record.tick;
- while (tick < current_tick - 0x1000)
- tick += 0x10000;
- current_tick = tick;
- record.tick = current_tick;
- }
- if (!saw_boost && record.state >= AltosLib.ao_flight_boost)
- {
- saw_boost = true;
- boost_tick = record.tick;
- }
- if (record.acceleration() != AltosRecord.MISSING)
- has_accel = true;
- if (record.gps != null)
- has_gps = true;
- if (record.main_voltage() != AltosRecord.MISSING)
- has_ignite = true;
- if (previous != null && previous.tick != record.tick)
- records.add(previous);
- previous = record;
+ telems.add(telem);
} catch (ParseException pe) {
System.out.printf("parse exception %s\n", pe.getMessage());
} catch (AltosCRCException ce) {
@@ -84,26 +50,5 @@ public class AltosTelemetryIterable extends AltosRecordIterable {
} catch (IOException io) {
System.out.printf("io exception\n");
}
-
- if (previous != null)
- records.add(previous);
-
- /* Adjust all tick counts to match expected eeprom values,
- * which starts with a 16-bit tick count 16 samples before boost
- */
-
- int tick_adjust = (boost_tick - 16) & 0xffff0000;
- for (AltosRecord r : this)
- r.tick -= tick_adjust;
- boost_tick -= tick_adjust;
-
- /* adjust all tick counts to be relative to boost time */
- for (AltosRecord r : this)
- r.time = (r.tick - boost_tick) / 100.0;
-
- try {
- input.close();
- } catch (IOException ie) {
- }
}
}