From 3a84e8e0cc86481c301f4335843a0e1a94bad5c0 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Mon, 22 Aug 2011 23:12:30 -0700 Subject: [PATCH] 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 --- altosui/AltosConfigData.java | 23 ++++++++++++++++++++++- altosui/AltosIdleMonitorUI.java | 2 +- 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 { 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 { 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(); 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 { 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; -- 2.30.2