summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2013-09-06 16:54:07 -0700
committerKeith Packard <keithp@keithp.com>2013-09-06 16:54:07 -0700
commit4e22b34bde421a9df090c9196fd4347468c8176a (patch)
treea8289aa26c816e74a99b15cc3625adc810befa4f
parent0ad95614685a73856bb26a94866909e5fc025434 (diff)
altoslib: Add receiver serial to telem file names
Makes it easy to record telemetry from multiple sites and compare them later. Signed-off-by: Keith Packard <keithp@keithp.com>
-rw-r--r--altoslib/AltosFile.java33
-rw-r--r--altoslib/AltosLog.java17
-rw-r--r--altoslib/AltosState.java8
3 files changed, 45 insertions, 13 deletions
diff --git a/altoslib/AltosFile.java b/altoslib/AltosFile.java
index 9802f883..f39c3962 100644
--- a/altoslib/AltosFile.java
+++ b/altoslib/AltosFile.java
@@ -24,15 +24,35 @@ public class AltosFile extends File {
static String number(int n) {
if (n == AltosLib.MISSING)
- return "unk";
+ return "unkn";
else
- return String.format("%03d", n);
+ return String.format("%04d", n);
}
- public AltosFile(int year, int month, int day, int serial, int flight, String extension) {
+ static String receiver(int receiver) {
+ if (receiver == AltosLib.MISSING)
+ return "";
+ return String.format("-via-%04d", receiver);
+ }
+
+ public AltosFile(int year, int month, int day, int serial, int flight, int receiver, String extension) {
super (AltosPreferences.logdir(),
- String.format("%04d-%02d-%02d-serial-%s-flight-%s.%s",
- year, month, day, number(serial), number(flight), extension));
+ String.format("%04d-%02d-%02d-serial-%s-flight-%s%s.%s",
+ year, month, day, number(serial), number(flight), receiver(receiver), extension));
+ }
+
+ public AltosFile(int year, int month, int day, int serial, int flight, String extension) {
+ this(year, month, day, serial, flight, AltosLib.MISSING, extension);
+ }
+
+ public AltosFile(int serial, int flight, int receiver, String extension) {
+ this(Calendar.getInstance().get(Calendar.YEAR),
+ Calendar.getInstance().get(Calendar.MONTH) + 1,
+ Calendar.getInstance().get(Calendar.DAY_OF_MONTH),
+ serial,
+ flight,
+ receiver,
+ extension);
}
public AltosFile(int serial, int flight, String extension) {
@@ -41,10 +61,11 @@ public class AltosFile extends File {
Calendar.getInstance().get(Calendar.DAY_OF_MONTH),
serial,
flight,
+ AltosLib.MISSING,
extension);
}
public AltosFile(AltosState state) {
- this(state.serial, state.flight, "telem");
+ this(state.serial, state.flight, state.receiver_serial, "telem");
}
}
diff --git a/altoslib/AltosLog.java b/altoslib/AltosLog.java
index ed59ef71..015d9f65 100644
--- a/altoslib/AltosLog.java
+++ b/altoslib/AltosLog.java
@@ -18,8 +18,8 @@
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<String> 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,17 +80,16 @@ 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 = AltosTelemetry.parse(line.line);
- if (state != null)
- state = state.clone();
- else
- state = new AltosState();
+ state = state.clone();
telem.update_state(state);
if (state.serial != serial || state.flight != flight || log_file == null)
{
@@ -109,6 +110,7 @@ public class AltosLog implements Runnable {
pending_queue.put(line.line);
}
} catch (InterruptedException ie) {
+ } catch (TimeoutException te) {
} catch (IOException ie) {
}
close();
@@ -120,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();
diff --git a/altoslib/AltosState.java b/altoslib/AltosState.java
index 42259057..5a805fc6 100644
--- a/altoslib/AltosState.java
+++ b/altoslib/AltosState.java
@@ -269,6 +269,7 @@ public class AltosState implements Cloneable {
public int state;
public int flight;
public int serial;
+ public int receiver_serial;
public boolean landed;
public boolean ascent; /* going up? */
public boolean boost; /* under power */
@@ -604,6 +605,7 @@ public class AltosState implements Cloneable {
log_format = AltosLib.MISSING;
serial = AltosLib.MISSING;
+ receiver_serial = AltosLib.MISSING;
baro = null;
companion = null;
@@ -725,6 +727,7 @@ public class AltosState implements Cloneable {
log_format = old.log_format;
serial = old.serial;
+ receiver_serial = old.receiver_serial;
baro = old.baro;
companion = old.companion;
@@ -847,6 +850,11 @@ public class AltosState implements Cloneable {
}
}
+ public void set_receiver_serial(int serial) {
+ if (serial != AltosLib.MISSING)
+ receiver_serial = serial;
+ }
+
public int rssi() {
if (rssi == AltosLib.MISSING)
return 0;