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:
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;
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) {
public int tick;
public AltosGPS gps;
- public boolean new_gps;
+ public int gps_sequence;
public double time; /* seconds since boost */
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;
state = AltosLib.ao_flight_startup;
tick = 0;
gps = null;
- new_gps = false;
+ gps_sequence = 0;
companion = null;
kalman_acceleration = MISSING;
public double max_baro_speed;
public AltosGPS gps;
+ public int gps_sequence;
public AltosIMU imu;
public AltosMag mag;
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;
npad = 0;
ngps = 0;
gps = null;
+ gps_sequence = 0;
baro_speed = AltosRecord.MISSING;
accel_speed = AltosRecord.MISSING;
pad_alt = AltosRecord.MISSING;
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)
pad_alt = ground_altitude;
}
- data.new_gps = false;
+ gps_sequence = data.gps_sequence;
gps_waiting = MIN_PAD_SAMPLES - npad;
if (gps_waiting < 0)
if (map.has(AO_TELEM_GPS_STATE)) {
record.gps = new AltosGPS(map);
- record.new_gps = true;
+ record.gps_sequence++;
}
else
record.gps = null;
}
record.gps = new AltosGPS(words, i, record.version);
- record.new_gps = true;
+ record.gps_sequence++;
}
public AltosTelemetryRecordLegacy(String line) throws ParseException, AltosCRCException {
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);
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;