altoslib: Add a 'seconds' method to AltosGPS
authorKeith Packard <keithp@keithp.com>
Tue, 2 Aug 2016 23:33:52 +0000 (16:33 -0700)
committerKeith Packard <keithp@keithp.com>
Tue, 2 Aug 2016 23:55:11 +0000 (16:55 -0700)
This computes the time in seconds since the epoch from GPS time
information.

Signed-off-by: Keith Packard <keithp@keithp.com>
altoslib/AltosGPS.java
altosui/AltosUI.java

index 99d48c388d3269c46d3846a2470b0e219ad210bc..0b30ed456593f75587ca57b2ff6a7954810f82db 100644 (file)
@@ -21,6 +21,7 @@ package org.altusmetrum.altoslib_11;
 import java.text.*;
 import java.util.concurrent.*;
 import java.io.*;
+import java.time.*;
 
 public class AltosGPS implements Cloneable {
 
@@ -73,6 +74,24 @@ 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);
index 2121690c87b367ddde06fb711c9bd41fe47dfd1c..019bbb9e79e00dbcdbf7dc81229fd38aedabd27c 100644 (file)
@@ -546,14 +546,22 @@ public class AltosUI extends AltosUIFrame {
                        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) {