diff options
| author | Keith Packard <keithp@keithp.com> | 2011-08-22 23:12:30 -0700 | 
|---|---|---|
| committer | Keith Packard <keithp@keithp.com> | 2011-08-22 23:30:55 -0700 | 
| commit | 3a84e8e0cc86481c301f4335843a0e1a94bad5c0 (patch) | |
| tree | bc9cd0165a77d3d976da4b15397e1f65382afb37 /altosui/AltosConfigData.java | |
| parent | afe6aba9cb91e93234ffee2a22eee40f848ddedd (diff) | |
altosui: Make monitor-idle display correct 'On-board data logging' status
Count number of stored flights and see if there's space for another
one.
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'altosui/AltosConfigData.java')
| -rw-r--r-- | altosui/AltosConfigData.java | 23 | 
1 files changed, 22 insertions, 1 deletions
diff --git a/altosui/AltosConfigData.java b/altosui/AltosConfigData.java index 272dd402..c14dc5a1 100644 --- a/altosui/AltosConfigData.java +++ b/altosui/AltosConfigData.java @@ -54,6 +54,7 @@ public class AltosConfigData implements Iterable<String> {  	int	radio_calibration;  	int	flight_log_max;  	int	ignite_mode; +	int	stored_flight;  	int	storage_size;  	int	storage_erase_unit; @@ -84,10 +85,29 @@ public class AltosConfigData implements Iterable<String> {  		return lines.iterator();  	} +	public int log_available() { +		switch (log_format) { +		case Altos.AO_LOG_FORMAT_TINY: +			if (stored_flight == 0) +				return 1; +			return 0; +		default: +			if (flight_log_max <= 0) +				return 1; +			int	log_space = storage_size - storage_erase_unit; +			int	log_used = stored_flight * flight_log_max; + +			if (log_used >= log_space) +				return 0; +			return (log_space - log_used) / flight_log_max; +		} +	} +  	public AltosConfigData(AltosSerial serial_line) throws InterruptedException, TimeoutException { -		serial_line.printf("c s\nf\nv\n"); +		serial_line.printf("c s\nf\nl\nv\n");  		lines = new LinkedList<String>();  		radio_setting = 0; +		stored_flight = 0;  		for (;;) {  			String line = serial_line.get_reply();  			if (line == null) @@ -117,6 +137,7 @@ public class AltosConfigData implements Iterable<String> {  			try { version = get_string(line,"software-version"); } catch (Exception e) {}  			try { product = get_string(line,"product"); } catch (Exception e) {} +			try { get_int(line, "flight"); stored_flight++; }  catch (Exception e) {}  			try { storage_size = get_int(line, "Storage size:"); } catch (Exception e) {}  			try { storage_erase_unit = get_int(line, "Storage erase unit"); } catch (Exception e) {}  | 
