altoslib: Bump library version
[fw/altos] / altosui / AltosFlashUI.java
index 5ec5ea8a2bc49a645640a05d8b3d2c1e09afa0a8..5913e50699c2f390a597b1b828407476f608661f 100644 (file)
@@ -23,7 +23,7 @@ import javax.swing.*;
 import javax.swing.filechooser.FileNameExtensionFilter;
 import java.io.*;
 import java.util.concurrent.*;
-import org.altusmetrum.altoslib_2.*;
+import org.altusmetrum.altoslib_3.*;
 import org.altusmetrum.altosuilib_1.*;
 
 public class AltosFlashUI
@@ -69,9 +69,18 @@ public class AltosFlashUI
        };
 
        private boolean is_pair_programmed() {
-               String  name = file.getName();
-               for (int i = 0; i < pair_programmed.length; i++) {
-                       if (name.startsWith(pair_programmed[i]))
+
+               if (file != null) {
+                       String  name = file.getName();
+                       for (int i = 0; i < pair_programmed.length; i++) {
+                               if (name.startsWith(pair_programmed[i]))
+                                       return true;
+                       }
+               }
+               if (device != null) {
+                       if (!device.matchProduct(AltosLib.product_altusmetrum) &&
+                           (device.matchProduct(AltosLib.product_teledongle) ||
+                            device.matchProduct(AltosLib.product_telebt)))
                                return true;
                }
                return false;
@@ -223,7 +232,7 @@ public class AltosFlashUI
                hexfile_chooser.addChoosableFileFilter(ihx_filter);
                hexfile_chooser.setFileFilter(ihx_filter);
                
-               if (!device.matchProduct(AltosLib.product_altusmetrum)) {
+               if (!is_pair_programmed() && !device.matchProduct(AltosLib.product_altusmetrum)) {
                        for (int i = 0; i < filters.length; i++) {
                                if (device != null && device.matchProduct(filters[i].product))
                                        hexfile_chooser.setFileFilter(filters[i]);
@@ -356,7 +365,7 @@ public class AltosFlashUI
 
        flash_task      flasher;
 
-       private boolean open_device() {
+       private boolean open_device() throws InterruptedException {
                try {
                        link = new AltosSerial(device);
                        if (is_pair_programmed())
@@ -399,8 +408,12 @@ public class AltosFlashUI
                        return;
                if (!select_source_file())
                        return;
-               if (!open_device())
+               try {
+                       if (!open_device())
+                               return;
+               } catch (InterruptedException ie) {
                        return;
+               }
                build_dialog();
                flash_task      f = new flash_task(this);
        }