X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=altoslib%2FAltosConfigData.java;h=2f36e215a36cbac3367382db5c263c3402ce6161;hp=edaf4601bbebc9632fb6b9ee8a8e83bc10cdf613;hb=302842ccda46a0a3d58b60d5c7fc82e05f614b0b;hpb=99c729495a8cc589718607ee35d22454c6af2994 diff --git a/altoslib/AltosConfigData.java b/altoslib/AltosConfigData.java index edaf4601..2f36e215 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_3; +package org.altusmetrum.altoslib_4; 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; @@ -77,6 +80,9 @@ public class AltosConfigData implements Iterable { /* Log listing replies */ public int stored_flight; + /* HAS_TRACKER */ + public int[] tracker_distances; + public static String get_string(String line, String label) throws ParseException { if (line.startsWith(label)) { String quoted = line.substring(label.length()).trim(); @@ -100,6 +106,20 @@ public class AltosConfigData implements Iterable { throw new ParseException("mismatch", 0); } + public static int[] get_distances(String line, String label) throws NumberFormatException, ParseException { + if (line.startsWith(label)) { + String tail = line.substring(label.length()).trim(); + String[] tokens = tail.split("\\s+"); + if (tokens.length > 1) { + int[] distances = new int[2]; + distances[0] = Integer.parseInt(tokens[0]); + distances[1] = Integer.parseInt(tokens[1]); + return distances; + } + } + throw new ParseException("mismatch", 0); + } + public Iterator iterator() { return lines.iterator(); } @@ -210,6 +230,10 @@ public class AltosConfigData implements Iterable { aprs_interval = -1; + beep = -1; + + tracker_distances = null; + storage_size = -1; storage_erase_unit = -1; stored_flight = 0; @@ -286,6 +310,12 @@ 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) {} + + /* HAS_TRACKER */ + try { tracker_distances = get_distances(line, "Tracker 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) {} @@ -373,7 +403,7 @@ public class AltosConfigData implements Iterable { return 1024; } - public void get_values(AltosConfigValues source) { + public void get_values(AltosConfigValues source) throws AltosConfigDataException { /* HAS_FLIGHT */ if (main_deploy >= 0) @@ -409,8 +439,16 @@ 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(); + /* HAS_TRACKER */ + if (tracker_distances != null) + tracker_distances = source.tracker_distances(); } public void set_values(AltosConfigValues dest) { @@ -449,6 +487,8 @@ public class AltosConfigData implements Iterable { else dest.set_pyros(null); dest.set_aprs_interval(aprs_interval); + dest.set_beep(beep); + dest.set_tracker_distances(tracker_distances); } public void save(AltosLink link, boolean remote) throws InterruptedException, TimeoutException { @@ -515,6 +555,14 @@ 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); + + /* HAS_TRACKER */ + if (tracker_distances != null) + link.printf("c t %d %d\n", tracker_distances[0], tracker_distances[1]); + link.printf("c w\n"); link.flush_output(); }