public class AltosReplayReader extends AltosFlightReader {
Iterator<AltosState> iterator;
File file;
- boolean real_time;
public AltosState read() {
if (iterator.hasNext())
public void update(AltosState state) throws InterruptedException {
/* Make it run in realtime after the rocket leaves the pad */
- if (real_time && state.state > AltosLib.ao_flight_pad && state.time_change > 0)
- Thread.sleep((int) (Math.min(state.time_change,10) * 1000));
+ if (state.state > AltosLib.ao_flight_pad && state.time_change > 0)
+ Thread.sleep((int) (Math.min(state.time_change,10) * 100));
state.set_received_time(System.currentTimeMillis());
}
public File backing_file() { return file; }
- public AltosReplayReader(Iterator<AltosState> in_iterator, File in_file,
- boolean in_real_time) {
+ public AltosReplayReader(Iterator<AltosState> in_iterator, File in_file) {
iterator = in_iterator;
file = in_file;
- real_time = in_real_time;
name = file.getName();
}
-
- public AltosReplayReader(Iterator<AltosState> in_iterator, File in_file) {
- this(in_iterator, in_file, false);
- }
}
int telemetry;
int telemetry_rate;
AltosState state = null;
- AltosFlightReader stacked;
LinkedBlockingQueue<AltosLine> telem;
public AltosState read() throws InterruptedException, ParseException, AltosCRCException, IOException {
- if (stacked != null) {
- state = stacked.read();
- if (state != null)
- return state;
- stacked = null;
- }
AltosLine l = telem.take();
if (l.line == null)
throw new IOException("IO error");
public void close(boolean interrupted) {
- if (stacked != null) {
- stacked.close(interrupted);
- stacked = null;
- }
-
link.remove_monitor(telem);
log.close();
try {
return link.monitor_battery();
}
- public AltosTelemetryReader (AltosLink in_link, AltosFlightReader in_stacked)
+ public AltosTelemetryReader (AltosLink in_link)
throws IOException, InterruptedException, TimeoutException {
link = in_link;
- stacked = in_stacked;
boolean success = false;
try {
log = new AltosLog(link);
close(true);
}
}
-
- private static AltosFlightReader existing_data(AltosLink link) {
- if (link == null)
- return null;
-
- File file = AltosPreferences.logfile(link.serial);
- if (file != null) {
- AltosStateIterable iterable = AltosStateIterable.iterable(file);
- if (iterable != null)
- return new AltosReplayReader(iterable.iterator(), file, false);
- }
- return null;
- }
-
- public AltosTelemetryReader(AltosLink link)
- throws IOException, InterruptedException, TimeoutException {
- this(link, null);
- }
}
AltosStateIterable states = record_iterable(file);
if (states == null)
return null;
- return new AltosReplayReader(states.iterator(), file, true);
+ return new AltosReplayReader(states.iterator(), file);
}
static boolean process_replay(File file) {