diff options
| author | Keith Packard <keithp@keithp.com> | 2013-09-06 16:54:07 -0700 | 
|---|---|---|
| committer | Keith Packard <keithp@keithp.com> | 2013-09-06 16:54:07 -0700 | 
| commit | 4e22b34bde421a9df090c9196fd4347468c8176a (patch) | |
| tree | a8289aa26c816e74a99b15cc3625adc810befa4f | |
| parent | 0ad95614685a73856bb26a94866909e5fc025434 (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.java | 33 | ||||
| -rw-r--r-- | altoslib/AltosLog.java | 17 | ||||
| -rw-r--r-- | altoslib/AltosState.java | 8 | 
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; | 
