X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=altoslib%2FAltosConfigData.java;h=213d8f1311b56f35bf66469a898dacd8bea4a4f4;hp=5760560762bebdca7082dd1493a48697a955d338;hb=eeacc001ba089b4bf5552b8ef36e61a0a96efabe;hpb=398c02b945a58634c8932f07df2c2be8438da7d1 diff --git a/altoslib/AltosConfigData.java b/altoslib/AltosConfigData.java index 57605607..213d8f13 100644 --- a/altoslib/AltosConfigData.java +++ b/altoslib/AltosConfigData.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_3; import java.util.*; import java.text.*; @@ -70,6 +70,9 @@ public class AltosConfigData implements Iterable { /* HAS_APRS */ public int aprs_interval; + /* HAS_BEEP */ + public int beep; + /* Storage info replies */ public int storage_size; public int storage_erase_unit; @@ -210,6 +213,8 @@ public class AltosConfigData implements Iterable { aprs_interval = -1; + beep = -1; + storage_size = -1; storage_erase_unit = -1; stored_flight = 0; @@ -286,6 +291,9 @@ public class AltosConfigData implements Iterable { /* HAS_APRS */ try { aprs_interval = get_int(line, "APRS interval:"); } catch (Exception e) {} + /* HAS_BEEP */ + try { beep = get_int(line, "Beeper setting:"); } catch (Exception e) {} + /* Storage info replies */ try { storage_size = get_int(line, "Storage size:"); } catch (Exception e) {} try { storage_erase_unit = get_int(line, "Storage erase unit:"); } catch (Exception e) {} @@ -336,6 +344,10 @@ public class AltosConfigData implements Iterable { public double frequency() { int channel = radio_channel; int setting = radio_setting; + + if (radio_frequency < 0 && channel < 0 && setting < 0) + return -1; + if (channel < 0) channel = 0; if (setting < 0) @@ -347,9 +359,22 @@ public class AltosConfigData implements Iterable { channel); } + boolean use_flash_for_config() { + if (product.startsWith("TeleMega")) + return false; + if (product.startsWith("TeleMetrum-v2")) + return false; + return true; + } + + public int log_limit() { - if (storage_size > 0 && storage_erase_unit > 0) { - int log_limit = storage_size - storage_erase_unit; + if (storage_size > 0) { + int log_limit = storage_size; + + if (storage_erase_unit > 0 && use_flash_for_config()) + log_limit -= storage_erase_unit; + if (log_limit > 0) return log_limit / 1024; } @@ -392,8 +417,13 @@ public class AltosConfigData implements Iterable { if (npyro > 0) pyros = source.pyros(); + /* HAS_APRS */ if (aprs_interval >= 0) aprs_interval = source.aprs_interval(); + + /* HAS_BEEP */ + if (beep >= 0) + beep = source.beep(); } public void set_values(AltosConfigValues dest) { @@ -406,15 +436,20 @@ public class AltosConfigData implements Iterable { dest.set_radio_calibration(radio_calibration); dest.set_radio_frequency(frequency()); boolean max_enabled = true; + + if (log_limit() == 0) + max_enabled = false; + switch (log_format) { case AltosLib.AO_LOG_FORMAT_TINY: max_enabled = false; break; default: - if (stored_flight >= 0) + if (stored_flight > 0) max_enabled = false; break; } + dest.set_flight_log_max_enabled(max_enabled); dest.set_radio_enable(radio_enable); dest.set_flight_log_max_limit(log_limit()); @@ -427,6 +462,7 @@ public class AltosConfigData implements Iterable { else dest.set_pyros(null); dest.set_aprs_interval(aprs_interval); + dest.set_beep(beep); } public void save(AltosLink link, boolean remote) throws InterruptedException, TimeoutException { @@ -493,6 +529,10 @@ public class AltosConfigData implements Iterable { if (aprs_interval >= 0) link.printf("c A %d\n", aprs_interval); + /* HAS_BEEP */ + if (beep >= 0) + link.printf("c b %d\n", beep); + link.printf("c w\n"); link.flush_output(); } @@ -504,7 +544,7 @@ public class AltosConfigData implements Iterable { switch (log_format) { case AltosLib.AO_LOG_FORMAT_FULL: case AltosLib.AO_LOG_FORMAT_TINY: - case AltosLib.AO_LOG_FORMAT_MEGAMETRUM: + case AltosLib.AO_LOG_FORMAT_TELEMEGA: link.printf("l\n"); read_link(link, "done"); default: