summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2010-11-24 10:55:18 -0800
committerKeith Packard <keithp@keithp.com>2010-11-24 10:55:18 -0800
commit7a50837ea0d92db3f469f197ec8210aee22aa143 (patch)
tree8f96a8198ebacdcc7beea586863632b6c9b488c5
parent7d90e2f6009e060fb59c519f7e564483a7ca6872 (diff)
altosui: Make sure packet mode is turned off when the connection fails
When the packet connection times out, turn packet mode off when closing the serial port. Signed-off-by: Keith Packard <keithp@keithp.com>
-rw-r--r--ao-tools/altosui/AltosConfig.java10
-rw-r--r--ao-tools/altosui/AltosIgnite.java9
2 files changed, 18 insertions, 1 deletions
diff --git a/ao-tools/altosui/AltosConfig.java b/ao-tools/altosui/AltosConfig.java
index b1acd410..1c42870f 100644
--- a/ao-tools/altosui/AltosConfig.java
+++ b/ao-tools/altosui/AltosConfig.java
@@ -74,7 +74,7 @@ public class AltosConfig implements Runnable, ActionListener {
string_ref product;
string_ref callsign;
AltosConfigUI config_ui;
-
+ boolean serial_started;
boolean get_int(String line, String label, int_ref x) {
if (line.startsWith(label)) {
@@ -108,6 +108,7 @@ public class AltosConfig implements Runnable, ActionListener {
}
void start_serial() throws InterruptedException {
+ serial_started = true;
if (remote) {
serial_line.set_radio();
serial_line.printf("p\nE 0\n");
@@ -116,6 +117,9 @@ public class AltosConfig implements Runnable, ActionListener {
}
void stop_serial() throws InterruptedException {
+ if (!serial_started)
+ return;
+ serial_started = false;
if (remote) {
serial_line.printf("~");
serial_line.flush_output();
@@ -160,6 +164,10 @@ public class AltosConfig implements Runnable, ActionListener {
device.toShortString()),
"Connection Failed",
JOptionPane.ERROR_MESSAGE);
+ try {
+ stop_serial();
+ } catch (InterruptedException ie) {
+ }
serial_line.close();
serial_line = null;
}
diff --git a/ao-tools/altosui/AltosIgnite.java b/ao-tools/altosui/AltosIgnite.java
index 75c0a17a..3cbd8a75 100644
--- a/ao-tools/altosui/AltosIgnite.java
+++ b/ao-tools/altosui/AltosIgnite.java
@@ -24,6 +24,7 @@ public class AltosIgnite {
AltosDevice device;
AltosSerial serial;
boolean remote;
+ boolean serial_started;
final static int None = 0;
final static int Apogee = 1;
final static int Main = 2;
@@ -34,6 +35,7 @@ public class AltosIgnite {
final static int Open = 3;
private void start_serial() throws InterruptedException {
+ serial_started = true;
if (remote) {
serial.set_radio();
serial.printf("p\nE 0\n");
@@ -42,6 +44,9 @@ public class AltosIgnite {
}
private void stop_serial() throws InterruptedException {
+ if (!serial_started)
+ return;
+ serial_started = false;
if (serial == null)
return;
if (remote) {
@@ -148,6 +153,10 @@ public class AltosIgnite {
}
public void close() {
+ try {
+ stop_serial();
+ } catch (InterruptedException ie) {
+ }
serial.close();
serial = null;
}