import java.text.*;
import java.util.concurrent.*;
import java.io.*;
+import java.time.*;
public class AltosGPS implements Cloneable {
hour = minute = second = AltosLib.MISSING;
}
+ /* Return time since epoc in seconds */
+ public long seconds() {
+ if (year == AltosLib.MISSING)
+ return AltosLib.MISSING;
+ if (month == AltosLib.MISSING)
+ return AltosLib.MISSING;
+ if (day == AltosLib.MISSING)
+ return AltosLib.MISSING;
+ if (hour == AltosLib.MISSING)
+ return AltosLib.MISSING;
+ if (minute == AltosLib.MISSING)
+ return AltosLib.MISSING;
+ if (second == AltosLib.MISSING)
+ return AltosLib.MISSING;
+ OffsetDateTime odt = OffsetDateTime.of(year, month, day, hour, minute, second, 0, ZoneOffset.UTC);
+ return odt.toEpochSecond();
+ }
+
public AltosGPS(AltosTelemetryMap map) throws ParseException {
String state = map.get_string(AltosTelemetryLegacy.AO_TELEM_GPS_STATE,
AltosTelemetryLegacy.AO_TELEM_GPS_STATE_ERROR);
AltosStateIterable eef = record_iterable(file);
for (AltosState state : eef) {
- System.out.printf ("tick %d state %d height %g\n",
- state.tick, state.state(), state.height());
- if ((state.set & AltosState.set_gps) != 0)
- System.out.printf ("time %g lat %g lon %g alt %g\n",
- state.time_since_boost(),
+ if ((state.set & AltosState.set_gps) != 0) {
+ System.out.printf ("time %d %d-%d-%d %d:%d:%d lat %g lon %g alt %g\n",
+ state.gps.seconds(),
+ state.gps.year,
+ state.gps.month,
+ state.gps.day,
+ state.gps.hour,
+ state.gps.minute,
+ state.gps.second,
state.gps.lat,
state.gps.lon,
state.gps.alt);
+ } else {
+ System.out.printf ("tick %d state %d height %g\n",
+ state.tick, state.state(), state.height());
+ }
}
} catch (Exception e) {