altosui: Catch timeout errors when setting up TD telem monitoring
authorKeith Packard <keithp@keithp.com>
Sun, 17 Jun 2012 23:09:43 +0000 (16:09 -0700)
committerKeith Packard <keithp@keithp.com>
Sun, 17 Jun 2012 23:09:43 +0000 (16:09 -0700)
Close the port in this case so it can be used for other things.

Signed-off-by: Keith Packard <keithp@keithp.com>
altoslib/AltosTelemetryReader.java

index 112e008efff4bd75eb0147f9e3d02eb1d42570a3..911a099af7d33a62183b4d0bc0adeea1217c76c2 100644 (file)
@@ -106,14 +106,22 @@ public class AltosTelemetryReader extends AltosFlightReader {
        public AltosTelemetryReader (AltosLink in_link)
                throws IOException, InterruptedException, TimeoutException {
                link = in_link;
-               log = new AltosLog(link);
-               name = link.name;
-               previous = null;
-               telem = new LinkedBlockingQueue<AltosLine>();
-               frequency = AltosPreferences.frequency(link.serial);
-               set_frequency(frequency);
-               telemetry = AltosPreferences.telemetry(link.serial);
-               set_telemetry(telemetry);
-               link.add_monitor(telem);
+               try {
+                       log = new AltosLog(link);
+                       name = link.name;
+                       previous = null;
+                       telem = new LinkedBlockingQueue<AltosLine>();
+                       frequency = AltosPreferences.frequency(link.serial);
+                       set_frequency(frequency);
+                       telemetry = AltosPreferences.telemetry(link.serial);
+                       set_telemetry(telemetry);
+                       link.add_monitor(telem);
+               } catch (TimeoutException e) {
+                       close(true);
+                       throw(e);
+               } catch (InterruptedException e) {
+                       close(true);
+                       throw(e);
+               }
        }
 }