altosuilib: Track open frames, exit when none remain
[fw/altos] / altoslib / AltosIgnite.java
index d3c21796690fec5585f8460e9f9e20d30dff8554..f3c07339b0fc411ec52ef195723a9f1b05869db5 100644 (file)
@@ -15,7 +15,7 @@
  * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
  */
 
-package org.altusmetrum.altoslib_3;
+package org.altusmetrum.altoslib_11;
 
 import java.util.*;
 import java.io.*;
@@ -24,9 +24,11 @@ import java.util.concurrent.*;
 public class AltosIgnite {
        AltosLink       link;
        boolean         remote;
+       boolean         close_on_exit;
        boolean         link_started;
        boolean         have_npyro = false;
        int             npyro;
+       AltosConfigData config_data;
 
        public final static String      None = null;
        public final static String      Apogee = "drogue";
@@ -97,8 +99,12 @@ public class AltosIgnite {
        }
 
        private void get_npyro() throws InterruptedException, TimeoutException {
-               AltosConfigData config_data = link.config_data();
-               npyro = config_data.npyro;
+               if (config_data == null)
+                       config_data = new AltosConfigData(link);
+               if (config_data != null)
+                       npyro = config_data.npyro;
+               else
+                       npyro = 0;
                have_npyro = true;
        }
 
@@ -175,14 +181,18 @@ public class AltosIgnite {
 
        public void close() throws InterruptedException {
                stop_link();
-               link.close();
+               if (close_on_exit)
+                       link.close();
                link = null;
        }
 
-       public AltosIgnite(AltosLink in_link, boolean in_remote)
-               throws FileNotFoundException, TimeoutException, InterruptedException {
-
+       public AltosIgnite(AltosLink in_link, boolean in_remote, boolean in_close_on_exit) {
                link = in_link;
                remote = in_remote;
+               close_on_exit = in_close_on_exit;
+       }
+
+       public AltosIgnite(AltosLink in_link, boolean in_remote) {
+               this(in_link, in_remote, true);
        }
-}
\ No newline at end of file
+}