X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=altoslib%2FAltosLog.java;h=ed59ef713eb44cd1a27c58e9cbbdefe5157a81b2;hp=ab707edd40b74c46d7fa6019b43d22b48a286b77;hb=e17e3691d93636eebbd7381f2df1303dc46ea96c;hpb=5a3c5de6657d1c26e52015a8acec0cd05e294cef diff --git a/altoslib/AltosLog.java b/altoslib/AltosLog.java index ab707edd..ed59ef71 100644 --- a/altoslib/AltosLog.java +++ b/altoslib/AltosLog.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib; +package org.altusmetrum.altoslib_2; import java.io.*; import java.text.ParseException; @@ -57,8 +57,8 @@ public class AltosLog implements Runnable { return file; } - boolean open (AltosRecord telem) throws IOException { - AltosFile a = new AltosFile(telem); + boolean open (AltosState state) throws IOException { + AltosFile a = new AltosFile(state); log_file = new FileWriter(a, true); if (log_file != null) { @@ -78,22 +78,26 @@ public class AltosLog implements Runnable { public void run () { try { - AltosRecord previous = null; + AltosState state = null; for (;;) { AltosLine line = input_queue.take(); if (line.line == null) continue; try { - AltosRecord telem = AltosTelemetry.parse(line.line, previous); - if ((telem.seen & AltosRecord.seen_flight) != 0 && - (telem.serial != serial || telem.flight != flight || log_file == null)) + AltosTelemetry telem = AltosTelemetry.parse(line.line); + if (state != null) + state = state.clone(); + else + state = new AltosState(); + telem.update_state(state); + if (state.serial != serial || state.flight != flight || log_file == null) { close_log_file(); - serial = telem.serial; - flight = telem.flight; - open(telem); + serial = state.serial; + flight = state.flight; + if (state.serial != AltosLib.MISSING && state.flight != AltosLib.MISSING) + open(state); } - previous = telem; } catch (ParseException pe) { } catch (AltosCRCException ce) { }