X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=altoslib%2FAltosLog.java;h=17b04970ae613c7eb514d2fd9914a29bc68ceeb7;hb=e9e9c6592c49109288a4e02e780b130fadb97db7;hp=08c45ca80d9563a70774d2e26e61145570ec1003;hpb=69e6df07976a56b49e07c242cd6e5b2cbd2a578d;p=fw%2Faltos diff --git a/altoslib/AltosLog.java b/altoslib/AltosLog.java index 08c45ca8..17b04970 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,14 +53,13 @@ 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); - System.out.printf("open %s\n", a.toString()); log_file = new FileWriter(a, true); if (log_file != null) { while (!pending_queue.isEmpty()) { @@ -81,22 +78,25 @@ 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 = new AltosTelemetryLegacy(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; + open(state); } - previous = telem; } catch (ParseException pe) { } catch (AltosCRCException ce) { }