X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=altoslib%2FAltosLog.java;h=ed59ef713eb44cd1a27c58e9cbbdefe5157a81b2;hb=59f0deff6d7bae22fb1b9a0649f3481b3d287d8e;hp=55a25bb46b7e1ac563eed538bd998d717dbe76b7;hpb=f078a591cf2fafe89bb1bb883f49d80750129d44;p=fw%2Faltos diff --git a/altoslib/AltosLog.java b/altoslib/AltosLog.java index 55a25bb4..ed59ef71 100644 --- a/altoslib/AltosLog.java +++ b/altoslib/AltosLog.java @@ -15,11 +15,9 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.AltosLib; +package org.altusmetrum.altoslib_2; import java.io.*; -import java.lang.*; -import java.util.*; import java.text.ParseException; import java.util.concurrent.LinkedBlockingQueue; @@ -27,7 +25,7 @@ import java.util.concurrent.LinkedBlockingQueue; * This creates a thread to capture telemetry data and write it to * a log file */ -class AltosLog implements Runnable { +public class AltosLog implements Runnable { LinkedBlockingQueue input_queue; LinkedBlockingQueue pending_queue; @@ -47,7 +45,7 @@ class AltosLog implements Runnable { } } - void close() { + public void close() { close_log_file(); if (log_thread != null) { log_thread.interrupt(); @@ -55,12 +53,12 @@ class AltosLog implements Runnable { } } - File file() { + public File file() { 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) { @@ -80,22 +78,26 @@ 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.serial != 0 && telem.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) { }