summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2011-08-22 23:12:30 -0700
committerKeith Packard <keithp@keithp.com>2011-08-22 23:30:55 -0700
commit3a84e8e0cc86481c301f4335843a0e1a94bad5c0 (patch)
treebc9cd0165a77d3d976da4b15397e1f65382afb37
parentafe6aba9cb91e93234ffee2a22eee40f848ddedd (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>
-rw-r--r--altosui/AltosConfigData.java23
-rw-r--r--altosui/AltosIdleMonitorUI.java2
2 files changed, 23 insertions, 2 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) {}
diff --git a/altosui/AltosIdleMonitorUI.java b/altosui/AltosIdleMonitorUI.java
index 0370efa9..142f0278 100644
--- a/altosui/AltosIdleMonitorUI.java
+++ b/altosui/AltosIdleMonitorUI.java
@@ -193,7 +193,7 @@ class AltosIdleMonitor extends Thread {
record.version = 0;
record.callsign = config_data.callsign;
record.serial = config_data.serial;
- record.flight = 0;
+ record.flight = config_data.log_available() > 0 ? 255 : 0;
record.rssi = 0;
record.status = 0;
record.state = Altos.ao_flight_idle;