X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=altoslib%2FAltosGPS.java;h=8037eb93deb37ec63e44b49d5b3975c7e31b8dd8;hp=99d48c388d3269c46d3846a2470b0e219ad210bc;hb=bed019b64d9e37f276ad5aa2dabb7681aae122ec;hpb=1085ec5d57e0ed5d132f2bbdac1a0b6a32c0ab4a diff --git a/altoslib/AltosGPS.java b/altoslib/AltosGPS.java index 99d48c38..8037eb93 100644 --- a/altoslib/AltosGPS.java +++ b/altoslib/AltosGPS.java @@ -16,11 +16,12 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_11; +package org.altusmetrum.altoslib_13; 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); @@ -364,17 +383,13 @@ public class AltosGPS implements Cloneable { } } - static public void update_state(AltosState state, AltosLink link, AltosConfigData config_data) throws InterruptedException { + static public void provide_data(AltosDataListener listener, AltosLink link) throws InterruptedException { try { - AltosGPS gps = new AltosGPS(link, config_data); - - if (gps != null) { - state.set_gps(gps, state.gps_sequence++); - return; - } + AltosGPS gps = new AltosGPS(link, link.config_data()); + if (gps != null) + listener.set_gps(gps); } catch (TimeoutException te) { } - state.set_gps(null, 0); } public AltosGPS (AltosLink link, AltosConfigData config_data) throws TimeoutException, InterruptedException {