X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=altosui%2FAltosConfigData.java;h=c14dc5a18a78c186f1d503591d89b6fd8298969a;hp=016033a3fa93782e4cefa24ebdef54051c9e5c9b;hb=c3314dae2d3df82e188daf6ba8520cce833592c6;hpb=c8c01684fa011acf3bbe5c3ebbc84aa8e8457a5e diff --git a/altosui/AltosConfigData.java b/altosui/AltosConfigData.java index 016033a3..c14dc5a1 100644 --- a/altosui/AltosConfigData.java +++ b/altosui/AltosConfigData.java @@ -36,6 +36,7 @@ public class AltosConfigData implements Iterable { String manufacturer; String product; String version; + int log_format; int serial; /* Strings returned */ @@ -53,7 +54,9 @@ 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; static String get_string(String line, String label) throws ParseException { if (line.startsWith(label)) { @@ -82,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\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) @@ -94,6 +116,7 @@ public class AltosConfigData implements Iterable { continue; lines.add(line); try { serial = get_int(line, "serial-number"); } catch (Exception e) {} + try { log_format = get_int(line, "log-format"); } catch (Exception e) {} try { main_deploy = get_int(line, "Main deploy:"); } catch (Exception e) {} try { apogee_delay = get_int(line, "Apogee delay:"); } catch (Exception e) {} try { radio_channel = get_int(line, "Radio channel:"); } catch (Exception e) {} @@ -114,6 +137,10 @@ 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) {} + /* signals the end of the version info */ if (line.startsWith("software-version")) break;