X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=altoslib%2FAltosLog.java;h=015d9f65aa13ad28ef3aadef04bcf044becabf12;hp=7f69bb65afea25e4082f5b1f2e7ae2649914f9e8;hb=4e22b34bde421a9df090c9196fd4347468c8176a;hpb=f07f6d55edf5b97020680b3ce1d9e00bb3df64a6 diff --git a/altoslib/AltosLog.java b/altoslib/AltosLog.java index 7f69bb65..015d9f65 100644 --- a/altoslib/AltosLog.java +++ b/altoslib/AltosLog.java @@ -15,11 +15,11 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_2; import java.io.*; -import java.text.ParseException; -import java.util.concurrent.LinkedBlockingQueue; +import java.text.*; +import java.util.concurrent.*; /* * This creates a thread to capture telemetry data and write it to @@ -31,9 +31,11 @@ public class AltosLog implements Runnable { LinkedBlockingQueue pending_queue; int serial; int flight; + int receiver_serial; FileWriter log_file; Thread log_thread; AltosFile file; + AltosLink link; private void close_log_file() { if (log_file != null) { @@ -78,24 +80,24 @@ public class AltosLog implements Runnable { public void run () { try { - AltosState state = null; + AltosState state = new AltosState(); + AltosConfigData receiver_config = link.config_data(); + state.set_receiver_serial(receiver_config.serial); for (;;) { AltosLine line = input_queue.take(); if (line.line == null) continue; try { - AltosTelemetry telem = new AltosTelemetryLegacy(line.line); - if (state != null) - state = state.clone(); - else - state = new AltosState(); + AltosTelemetry telem = AltosTelemetry.parse(line.line); + state = state.clone(); telem.update_state(state); if (state.serial != serial || state.flight != flight || log_file == null) { close_log_file(); serial = state.serial; flight = state.flight; - open(state); + if (state.serial != AltosLib.MISSING && state.flight != AltosLib.MISSING) + open(state); } } catch (ParseException pe) { } catch (AltosCRCException ce) { @@ -108,6 +110,7 @@ public class AltosLog implements Runnable { pending_queue.put(line.line); } } catch (InterruptedException ie) { + } catch (TimeoutException te) { } catch (IOException ie) { } close(); @@ -119,6 +122,7 @@ public class AltosLog implements Runnable { link.add_monitor(input_queue); serial = -1; flight = -1; + this.link = link; log_file = null; log_thread = new Thread(this); log_thread.start();