+ try {
+ link.set_radio_frequency(AltosPreferences.frequency(link.serial));
+ link.set_telemetry(AltosLib.ao_telemetry_standard);
+ link.set_telemetry_rate(AltosPreferences.telemetry_rate(link.serial));
+ } catch (InterruptedException ee) {
+ close();
+ } catch (TimeoutException te) {
+ close();
+ }
+ }
+
+ 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 TelemetryReader(AltosLink link, Handler handler) {
+ this(link, handler, existing_data(link));