diff options
author | Keith Packard <keithp@keithp.com> | 2013-12-21 08:56:00 -0800 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2013-12-21 08:56:00 -0800 |
commit | 081455dcba860f3e4df8cd66f3fe686b204034ad (patch) | |
tree | 4734ccd23bc9d299df6e6e8b8b53d19253ada43c /altoslib/AltosIgnite.java | |
parent | 9cf9a67f937185c0c0bb5b2bae4f420755965799 (diff) |
altosui: Extend Fire Igniter to additional channels
This lets the UI test fire other pyro channels on TeleMega
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'altoslib/AltosIgnite.java')
-rw-r--r-- | altoslib/AltosIgnite.java | 59 |
1 files changed, 36 insertions, 23 deletions
diff --git a/altoslib/AltosIgnite.java b/altoslib/AltosIgnite.java index ca9f419c..d3c21796 100644 --- a/altoslib/AltosIgnite.java +++ b/altoslib/AltosIgnite.java @@ -17,6 +17,7 @@ package org.altusmetrum.altoslib_3; +import java.util.*; import java.io.*; import java.util.concurrent.*; @@ -24,10 +25,12 @@ public class AltosIgnite { AltosLink link; boolean remote; boolean link_started; + boolean have_npyro = false; + int npyro; - public final static int None = 0; - public final static int Apogee = 1; - public final static int Main = 2; + public final static String None = null; + public final static String Apogee = "drogue"; + public final static String Main = "main"; public final static int Unknown = 0; public final static int Ready = 1; @@ -81,7 +84,7 @@ public class AltosIgnite { } */ - private int status(String status_name) { + private int map_status(String status_name) { if (status_name.equals("unknown")) return Unknown; if (status_name.equals("ready")) @@ -93,13 +96,34 @@ public class AltosIgnite { return Unknown; } - public int status(int igniter) throws InterruptedException, TimeoutException { - int status = Unknown; + private void get_npyro() throws InterruptedException, TimeoutException { + AltosConfigData config_data = link.config_data(); + npyro = config_data.npyro; + have_npyro = true; + } + + public int npyro() throws InterruptedException, TimeoutException { + if (!have_npyro) { + start_link(); + get_npyro(); + stop_link(); + } + return npyro; + } + + public HashMap<String,Integer> status() throws InterruptedException, TimeoutException { + HashMap<String,Integer> status = new HashMap<String,Integer>(); + if (link == null) return status; - //string_ref status_name = new string_ref(); try { start_link(); + get_npyro(); + + String last_igniter = Main; + if (npyro > 0) + last_igniter = String.format("%d", npyro - 1); + link.printf("t\n"); for (;;) { String line = link.get_reply(5000); @@ -116,14 +140,10 @@ public class AltosIgnite { if (!items[2].equals("Status:")) continue; - if (items[1].equals("drogue")) { - if (igniter == Apogee) - status = status(items[3]); - } else if (items[1].equals("main")) { - if (igniter == Main) - status = status(items[3]); + status.put(items[1], map_status(items[3])); + + if (items[1].equals(last_igniter)) break; - } } } finally { stop_link(); @@ -141,19 +161,12 @@ public class AltosIgnite { } } - public void fire(int igniter) throws InterruptedException { + public void fire(String igniter) throws InterruptedException { if (link == null) return; try { start_link(); - switch (igniter) { - case Main: - link.printf("i DoIt main\n"); - break; - case Apogee: - link.printf("i DoIt drogue\n"); - break; - } + link.printf("i DoIt %s\n", igniter); } catch (TimeoutException te) { } finally { stop_link(); |