summaryrefslogtreecommitdiff
path: root/altoslib
diff options
context:
space:
mode:
Diffstat (limited to 'altoslib')
-rw-r--r--altoslib/AltosRecord.java12
-rw-r--r--altoslib/AltosRecordMM.java10
-rw-r--r--altoslib/AltosRecordNone.java4
-rw-r--r--altoslib/AltosRecordTM.java8
-rw-r--r--altoslib/AltosState.java8
5 files changed, 22 insertions, 20 deletions
diff --git a/altoslib/AltosRecord.java b/altoslib/AltosRecord.java
index 09169515..2c4b6fa5 100644
--- a/altoslib/AltosRecord.java
+++ b/altoslib/AltosRecord.java
@@ -126,6 +126,8 @@ public abstract class AltosRecord implements Comparable <AltosRecord>, Cloneable
return tick - o.tick;
}
+ abstract public AltosRecord clone();
+
public void copy(AltosRecord old) {
seen = old.seen;
version = old.version;
@@ -144,16 +146,6 @@ public abstract class AltosRecord implements Comparable <AltosRecord>, Cloneable
kalman_height = old.kalman_height;
}
- public AltosRecord clone() {
- try {
- AltosRecord n = (AltosRecord) super.clone();
- n.copy(this);
- return n;
- } catch (CloneNotSupportedException e) {
- return null;
- }
- }
-
public AltosRecord() {
seen = 0;
version = 0;
diff --git a/altoslib/AltosRecordMM.java b/altoslib/AltosRecordMM.java
index 9f529234..546f3055 100644
--- a/altoslib/AltosRecordMM.java
+++ b/altoslib/AltosRecordMM.java
@@ -131,10 +131,10 @@ public class AltosRecordMM extends AltosRecord {
mag = old.mag;
}
+
+
public AltosRecordMM clone() {
- AltosRecordMM n = (AltosRecordMM) super.clone();
- n.copy(this);
- return n;
+ return new AltosRecordMM(this);
}
void make_missing() {
@@ -167,6 +167,10 @@ public class AltosRecordMM extends AltosRecord {
make_missing();
}
+ public AltosRecordMM(AltosRecordMM old) {
+ copy(old);
+ }
+
public AltosRecordMM() {
super();
make_missing();
diff --git a/altoslib/AltosRecordNone.java b/altoslib/AltosRecordNone.java
index ca0a5fe3..d4ea305f 100644
--- a/altoslib/AltosRecordNone.java
+++ b/altoslib/AltosRecordNone.java
@@ -28,6 +28,10 @@ public class AltosRecordNone extends AltosRecord {
super.copy(old);
}
+ public AltosRecordNone clone() {
+ return new AltosRecordNone(this);
+ }
+
public AltosRecordNone() {
super();
}
diff --git a/altoslib/AltosRecordTM.java b/altoslib/AltosRecordTM.java
index 9530be31..f6ed4966 100644
--- a/altoslib/AltosRecordTM.java
+++ b/altoslib/AltosRecordTM.java
@@ -149,9 +149,7 @@ public class AltosRecordTM extends AltosRecord {
}
public AltosRecordTM clone() {
- AltosRecordTM n = (AltosRecordTM) super.clone();
- n.copy(this);
- return n;
+ return new AltosRecordTM(this);
}
void make_missing() {
@@ -177,6 +175,10 @@ public class AltosRecordTM extends AltosRecord {
make_missing();
}
+ public AltosRecordTM(AltosRecordTM old) {
+ copy(old);
+ }
+
public AltosRecordTM() {
super();
make_missing();
diff --git a/altoslib/AltosState.java b/altoslib/AltosState.java
index 218c598a..4f59c840 100644
--- a/altoslib/AltosState.java
+++ b/altoslib/AltosState.java
@@ -200,10 +200,10 @@ public class AltosState {
}
ngps++;
}
- } else
- pad_alt = ground_altitude;
-
- data.new_gps = false;
+ } else {
+ if (ngps == 0)
+ pad_alt = ground_altitude;
+ }
gps_waiting = MIN_PAD_SAMPLES - npad;
if (gps_waiting < 0)