summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--altoslib/AltosEeprom.java4
-rw-r--r--altoslib/AltosEepromGPS.java11
-rw-r--r--altoslib/AltosEepromIterable.java9
3 files changed, 23 insertions, 1 deletions
diff --git a/altoslib/AltosEeprom.java b/altoslib/AltosEeprom.java
index be18ba24..020590eb 100644
--- a/altoslib/AltosEeprom.java
+++ b/altoslib/AltosEeprom.java
@@ -43,6 +43,10 @@ public abstract class AltosEeprom implements AltosStateUpdate {
return data8[i] | (data8[i+1] << 8) | (data8[i+2] << 16) | (data8[i+3] << 24);
}
+ public boolean has_seconds() { return false; }
+
+ public int seconds() { return 0; }
+
public final static int header_length = 4;
public abstract int record_length();
diff --git a/altoslib/AltosEepromGPS.java b/altoslib/AltosEepromGPS.java
index 1820cd61..3c1852c0 100644
--- a/altoslib/AltosEepromGPS.java
+++ b/altoslib/AltosEepromGPS.java
@@ -53,6 +53,17 @@ public class AltosEepromGPS extends AltosEeprom {
public int vdop() { return data8(24); }
public int mode() { return data8(25); }
+ public boolean has_seconds() { return cmd == AltosLib.AO_LOG_GPS_TIME; }
+
+ public int seconds() {
+ switch (cmd) {
+ case AltosLib.AO_LOG_GPS_TIME:
+ return second() + 60 * (minute() + 60 * (hour() + 24 * (day() + 31 * month())));
+ default:
+ return 0;
+ }
+ }
+
public AltosEepromGPS (AltosEepromChunk chunk, int start) throws ParseException {
parse_chunk(chunk, start);
}
diff --git a/altoslib/AltosEepromIterable.java b/altoslib/AltosEepromIterable.java
index 415c5b62..d6832c1b 100644
--- a/altoslib/AltosEepromIterable.java
+++ b/altoslib/AltosEepromIterable.java
@@ -38,6 +38,13 @@ class AltosEepromOrdered implements Comparable<AltosEepromOrdered> {
if (cmd_diff != 0)
return cmd_diff;
+ if (eeprom.has_seconds() && o.eeprom.has_seconds()) {
+ int seconds_diff = eeprom.seconds() - o.eeprom.seconds();
+
+ if (seconds_diff != 0)
+ return seconds_diff;
+ }
+
int tick_diff = tick - o.tick;
if (tick_diff != 0)
@@ -116,4 +123,4 @@ public class AltosEepromIterable implements Iterable<AltosEeprom> {
eeproms = new LinkedList<AltosEeprom>();
return new AltosEepromOrderedIterator(eeproms);
}
-} \ No newline at end of file
+}