summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--altoslib/AltosEepromIterable.java2
-rw-r--r--altoslib/AltosEepromMegaIterable.java2
-rw-r--r--altoslib/AltosIdleMonitor.java2
-rw-r--r--altoslib/AltosRecord.java6
-rw-r--r--altoslib/AltosState.java7
-rw-r--r--altoslib/AltosTelemetryRecordLegacy.java6
-rw-r--r--altoslib/AltosTelemetryRecordLocation.java2
7 files changed, 15 insertions, 12 deletions
diff --git a/altoslib/AltosEepromIterable.java b/altoslib/AltosEepromIterable.java
index 7a8bbdea..b84574ef 100644
--- a/altoslib/AltosEepromIterable.java
+++ b/altoslib/AltosEepromIterable.java
@@ -125,7 +125,7 @@ public class AltosEepromIterable extends AltosRecordIterable {
state.gps.locked = (flags & AltosLib.AO_GPS_VALID) != 0;
state.gps.nsat = (flags & AltosLib.AO_GPS_NUM_SAT_MASK) >>
AltosLib.AO_GPS_NUM_SAT_SHIFT;
- state.new_gps = true;
+ state.gps_sequence++;
has_gps = true;
break;
case AltosLib.AO_LOG_GPS_LAT:
diff --git a/altoslib/AltosEepromMegaIterable.java b/altoslib/AltosEepromMegaIterable.java
index a127f435..5736f937 100644
--- a/altoslib/AltosEepromMegaIterable.java
+++ b/altoslib/AltosEepromMegaIterable.java
@@ -136,7 +136,7 @@ public class AltosEepromMegaIterable extends AltosRecordIterable {
state.gps.locked = (flags & AltosLib.AO_GPS_VALID) != 0;
state.gps.nsat = (flags & AltosLib.AO_GPS_NUM_SAT_MASK) >>
AltosLib.AO_GPS_NUM_SAT_SHIFT;
- state.new_gps = true;
+ state.gps_sequence++;
has_gps = true;
eeprom.seen |= seen_gps_time | seen_gps_lat | seen_gps_lon;
break;
diff --git a/altoslib/AltosIdleMonitor.java b/altoslib/AltosIdleMonitor.java
index 2e4ddef2..b3ce5b20 100644
--- a/altoslib/AltosIdleMonitor.java
+++ b/altoslib/AltosIdleMonitor.java
@@ -112,7 +112,7 @@ public class AltosIdleMonitor extends Thread {
record.status = 0;
record.state = AltosLib.ao_flight_idle;
record.gps = gps;
- record.new_gps = true;
+ record.gps_sequence++;
state = new AltosState (record, state);
} finally {
if (remote) {
diff --git a/altoslib/AltosRecord.java b/altoslib/AltosRecord.java
index 07e910eb..5e4ed927 100644
--- a/altoslib/AltosRecord.java
+++ b/altoslib/AltosRecord.java
@@ -44,7 +44,7 @@ public class AltosRecord implements Comparable <AltosRecord>, Cloneable {
public int tick;
public AltosGPS gps;
- public boolean new_gps;
+ public int gps_sequence;
public double time; /* seconds since boost */
@@ -143,7 +143,7 @@ public class AltosRecord implements Comparable <AltosRecord>, Cloneable {
state = old.state;
tick = old.tick;
gps = new AltosGPS(old.gps);
- new_gps = old.new_gps;
+ gps_sequence = old.gps_sequence;
companion = old.companion;
kalman_acceleration = old.kalman_acceleration;
kalman_speed = old.kalman_speed;
@@ -161,7 +161,7 @@ public class AltosRecord implements Comparable <AltosRecord>, Cloneable {
state = AltosLib.ao_flight_startup;
tick = 0;
gps = null;
- new_gps = false;
+ gps_sequence = 0;
companion = null;
kalman_acceleration = MISSING;
diff --git a/altoslib/AltosState.java b/altoslib/AltosState.java
index ccbe498d..825306be 100644
--- a/altoslib/AltosState.java
+++ b/altoslib/AltosState.java
@@ -54,6 +54,7 @@ public class AltosState {
public double max_baro_speed;
public AltosGPS gps;
+ public int gps_sequence;
public AltosIMU imu;
public AltosMag mag;
@@ -133,6 +134,7 @@ public class AltosState {
npad = prev_state.npad;
ngps = prev_state.ngps;
gps = prev_state.gps;
+ gps_sequence = prev_state.gps_sequence;
pad_lat = prev_state.pad_lat;
pad_lon = prev_state.pad_lon;
pad_alt = prev_state.pad_alt;
@@ -187,6 +189,7 @@ public class AltosState {
npad = 0;
ngps = 0;
gps = null;
+ gps_sequence = 0;
baro_speed = AltosRecord.MISSING;
accel_speed = AltosRecord.MISSING;
pad_alt = AltosRecord.MISSING;
@@ -199,7 +202,7 @@ public class AltosState {
time = tick / 100.0;
- if (cur.new_gps && (state < AltosLib.ao_flight_boost)) {
+ if (data.gps != null && data.gps_sequence != gps_sequence && (state < AltosLib.ao_flight_boost)) {
/* Track consecutive 'good' gps reports, waiting for 10 of them */
if (data.gps != null && data.gps.locked && data.gps.nsat >= 4)
@@ -226,7 +229,7 @@ public class AltosState {
pad_alt = ground_altitude;
}
- data.new_gps = false;
+ gps_sequence = data.gps_sequence;
gps_waiting = MIN_PAD_SAMPLES - npad;
if (gps_waiting < 0)
diff --git a/altoslib/AltosTelemetryRecordLegacy.java b/altoslib/AltosTelemetryRecordLegacy.java
index a734b188..f2d3f868 100644
--- a/altoslib/AltosTelemetryRecordLegacy.java
+++ b/altoslib/AltosTelemetryRecordLegacy.java
@@ -267,7 +267,7 @@ public class AltosTelemetryRecordLegacy extends AltosTelemetryRecord {
if (map.has(AO_TELEM_GPS_STATE)) {
record.gps = new AltosGPS(map);
- record.new_gps = true;
+ record.gps_sequence++;
}
else
record.gps = null;
@@ -357,7 +357,7 @@ public class AltosTelemetryRecordLegacy extends AltosTelemetryRecord {
}
record.gps = new AltosGPS(words, i, record.version);
- record.new_gps = true;
+ record.gps_sequence++;
}
public AltosTelemetryRecordLegacy(String line) throws ParseException, AltosCRCException {
@@ -476,7 +476,7 @@ public class AltosTelemetryRecordLegacy extends AltosTelemetryRecord {
if ((gps_flags & (AO_GPS_VALID|AO_GPS_RUNNING)) != 0) {
record.gps = new AltosGPS();
- record.new_gps = true;
+ record.gps_sequence++;
record.seen |= AltosRecord.seen_gps_time | AltosRecord.seen_gps_lat | AltosRecord.seen_gps_lon;
record.gps.nsat = (gps_flags & AO_GPS_NUM_SAT_MASK);
diff --git a/altoslib/AltosTelemetryRecordLocation.java b/altoslib/AltosTelemetryRecordLocation.java
index 02999696..0236d291 100644
--- a/altoslib/AltosTelemetryRecordLocation.java
+++ b/altoslib/AltosTelemetryRecordLocation.java
@@ -85,7 +85,7 @@ public class AltosTelemetryRecordLocation extends AltosTelemetryRecordRaw {
next.gps.hdop = hdop;
next.gps.vdop = vdop;
next.seen |= AltosRecord.seen_gps_time | AltosRecord.seen_gps_lat | AltosRecord.seen_gps_lon;
- next.new_gps = true;
+ next.gps_sequence++;
}
return next;