X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=altosui%2FAltosIgnite.java;h=3e52ea369d471f82efb91d96281745670a816bb2;hp=3cbd8a751e1e53af63fa54c4de70ffcc3b0bab80;hb=c3314dae2d3df82e188daf6ba8520cce833592c6;hpb=f01096c4b42f9a4720ed0414826c2a283a992545 diff --git a/altosui/AltosIgnite.java b/altosui/AltosIgnite.java index 3cbd8a75..3e52ea36 100644 --- a/altosui/AltosIgnite.java +++ b/altosui/AltosIgnite.java @@ -19,6 +19,12 @@ package altosui; import java.io.*; import java.util.concurrent.*; +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import javax.swing.filechooser.FileNameExtensionFilter; +import javax.swing.table.*; +import javax.swing.event.*; public class AltosIgnite { AltosDevice device; @@ -34,13 +40,10 @@ public class AltosIgnite { final static int Active = 2; final static int Open = 3; - private void start_serial() throws InterruptedException { + private void start_serial() throws InterruptedException, TimeoutException { serial_started = true; - if (remote) { - serial.set_radio(); - serial.printf("p\nE 0\n"); - serial.flush_input(); - } + if (remote) + serial.start_remote(); } private void stop_serial() throws InterruptedException { @@ -49,10 +52,8 @@ public class AltosIgnite { serial_started = false; if (serial == null) return; - if (remote) { - serial.printf("~"); - serial.flush_output(); - } + if (remote) + serial.stop_remote(); } class string_ref { @@ -101,26 +102,29 @@ public class AltosIgnite { if (serial == null) return status; string_ref status_name = new string_ref(); - start_serial(); - serial.printf("t\n"); - for (;;) { - String line = serial.get_reply(5000); - if (line == null) - throw new TimeoutException(); - if (get_string(line, "Igniter: drogue Status: ", status_name)) - if (igniter == Apogee) - status = status(status_name.get()); - if (get_string(line, "Igniter: main Status: ", status_name)) { - if (igniter == Main) - status = status(status_name.get()); - break; + try { + start_serial(); + serial.printf("t\n"); + for (;;) { + String line = serial.get_reply(5000); + if (line == null) + throw new TimeoutException(); + if (get_string(line, "Igniter: drogue Status: ", status_name)) + if (igniter == Apogee) + status = status(status_name.get()); + if (get_string(line, "Igniter: main Status: ", status_name)) { + if (igniter == Main) + status = status(status_name.get()); + break; + } } + } finally { + stop_serial(); } - stop_serial(); return status; } - public String status_string(int status) { + public static String status_string(int status) { switch (status) { case Unknown: return "Unknown"; case Ready: return "Ready"; @@ -144,6 +148,7 @@ public class AltosIgnite { break; } } catch (InterruptedException ie) { + } catch (TimeoutException te) { } finally { try { stop_serial(); @@ -161,13 +166,18 @@ public class AltosIgnite { serial = null; } - public AltosIgnite(AltosDevice in_device) throws FileNotFoundException, AltosSerialInUseException { + public void set_frame(Frame frame) { + serial.set_frame(frame); + } + + public AltosIgnite(AltosDevice in_device) + throws FileNotFoundException, AltosSerialInUseException, TimeoutException, InterruptedException { device = in_device; serial = new AltosSerial(device); remote = false; - if (!device.matchProduct(AltosDevice.product_telemetrum)) + if (!device.matchProduct(Altos.product_telemetrum)) remote = true; } } \ No newline at end of file