*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
*/
-package org.altusmetrum.altoslib_5;
+package org.altusmetrum.altoslib_11;
import java.text.*;
import java.io.*;
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");
+ AltosLine l;
+ do {
+ l = telem.take();
+ if (l.line == null)
+ throw new IOException("IO error");
+ } while (!link.get_monitor());
AltosTelemetry telem = AltosTelemetry.parse(l.line);
if (state == null)
state = new AltosState();
public void reset() {
flush();
+ state = null;
}
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);
- }
}