summaryrefslogtreecommitdiff
path: root/altoslib
diff options
context:
space:
mode:
Diffstat (limited to 'altoslib')
-rw-r--r--altoslib/AltosIdleReader.java16
-rw-r--r--altoslib/AltosReplayReader.java4
2 files changed, 19 insertions, 1 deletions
diff --git a/altoslib/AltosIdleReader.java b/altoslib/AltosIdleReader.java
index 49d0cf61..3307cf26 100644
--- a/altoslib/AltosIdleReader.java
+++ b/altoslib/AltosIdleReader.java
@@ -25,6 +25,7 @@ import java.util.concurrent.*;
public class AltosIdleReader extends AltosFlightReader {
AltosLink link;
boolean remote;
+ AltosCalData cal_data = null;
AltosState state = null;
AltosIdleFetch fetch;
long next_millis;
@@ -44,6 +45,19 @@ public class AltosIdleReader extends AltosFlightReader {
return link.reply_abort;
}
+ public AltosCalData cal_data() {
+ if (cal_data == null) {
+ try {
+ cal_data = new AltosCalData(link.config_data());
+ } catch (InterruptedException ie) {
+ } catch (TimeoutException te) {
+ }
+ if (cal_data == null)
+ cal_data = new AltosCalData();
+ }
+ return cal_data;
+ }
+
public AltosState read() throws InterruptedException, ParseException, AltosCRCException, IOException {
boolean worked = false;
boolean aborted = false;
@@ -57,7 +71,7 @@ public class AltosIdleReader extends AltosFlightReader {
try {
start_link();
if (state == null)
- state = new AltosState(new AltosCalData(link.config_data()));
+ state = new AltosState(cal_data());
fetch.provide_data(state, state.cal_data);
if (!link.has_error && !link.reply_abort)
worked = true;
diff --git a/altoslib/AltosReplayReader.java b/altoslib/AltosReplayReader.java
index 2117bc87..a26d1e84 100644
--- a/altoslib/AltosReplayReader.java
+++ b/altoslib/AltosReplayReader.java
@@ -107,6 +107,10 @@ public class AltosReplayReader extends AltosFlightReader {
Thread t;
int reads;
+ public AltosCalData cal_data() {
+ return replay.state.cal_data;
+ }
+
public AltosState read() {
switch (reads) {
case 0: