X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=altoslib%2FAltosIgnite.java;h=b458911ec61884d4bd144a5b50d934d8fd2fc454;hp=a48d0b69121e007912015bc65904bc98bf3ed3cd;hb=34d5be68ca23e8beb05db9a480faef63ecc911d0;hpb=639f3e5e5171769429eac9e2f17a7b315fd62135 diff --git a/altoslib/AltosIgnite.java b/altoslib/AltosIgnite.java index a48d0b69..b458911e 100644 --- a/altoslib/AltosIgnite.java +++ b/altoslib/AltosIgnite.java @@ -15,8 +15,9 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.AltosLib; +package org.altusmetrum.altoslib_5; +import java.util.*; import java.io.*; import java.util.concurrent.*; @@ -24,10 +25,13 @@ public class AltosIgnite { AltosLink link; boolean remote; boolean link_started; + boolean have_npyro = false; + int npyro; + AltosConfigData config_data; - 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 +85,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 +97,38 @@ public class AltosIgnite { return Unknown; } - public int status(int igniter) throws InterruptedException, TimeoutException { - int status = Unknown; + private void get_npyro() throws InterruptedException, TimeoutException { + if (config_data == null) + config_data = new AltosConfigData(link); + if (config_data != null) + npyro = config_data.npyro; + else + npyro = 0; + have_npyro = true; + } + + public int npyro() throws InterruptedException, TimeoutException { + if (!have_npyro) { + start_link(); + get_npyro(); + stop_link(); + } + return npyro; + } + + public HashMap status() throws InterruptedException, TimeoutException { + HashMap status = new HashMap(); + 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 +145,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,34 +166,20 @@ public class AltosIgnite { } } - public void fire(int igniter) { + 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; - } - } catch (InterruptedException ie) { + link.printf("i DoIt %s\n", igniter); } catch (TimeoutException te) { } finally { - try { - stop_link(); - } catch (InterruptedException ie) { - } + stop_link(); } } - public void close() { - try { - stop_link(); - } catch (InterruptedException ie) { - } + public void close() throws InterruptedException { + stop_link(); link.close(); link = null; }