submodule madness
[fw/altos] / micropeak / MicroUSB.java
index 6ffdb6281ea82e0e9a14a68a588675c9101e7667..f6568d3663b50308c32aefd292d4deb10806fbcd 100644 (file)
@@ -19,8 +19,8 @@ package org.altusmetrum.micropeak;
 
 import java.util.*;
 import libaltosJNI.*;
-import org.altusmetrum.altoslib_5.*;
-import org.altusmetrum.altosuilib_3.*;
+import org.altusmetrum.altoslib_9.*;
+import org.altusmetrum.altosuilib_9.*;
 
 public class MicroUSB extends altos_device implements AltosDevice {
 
@@ -75,11 +75,17 @@ public class MicroUSB extends altos_device implements AltosDevice {
                return libaltos.altos_open(this);
        }
 
-       private boolean isMicro() {
+       private boolean isFTDI() {
                int vid = getVendor();
                int pid = getProduct();
                if (vid == 0x0403 && pid == 0x6015)
                        return true;
+               return false;
+       }
+
+       private boolean isMicro() {
+               int vid = getVendor();
+               int pid = getProduct();
                if (vid == AltosLib.vendor_altusmetrum &&
                    pid == AltosLib.product_mpusb)
                        return true;
@@ -87,16 +93,32 @@ public class MicroUSB extends altos_device implements AltosDevice {
        }
 
        public boolean matchProduct(int product) {
-               return isMicro();
+               return isFTDI() || isMicro();
        }
 
        static java.util.List<MicroUSB> list() {
                if (!load_library())
                        return null;
 
-               SWIGTYPE_p_altos_list list = libaltos.altos_ftdi_list_start();
-
                ArrayList<MicroUSB> device_list = new ArrayList<MicroUSB>();
+
+               SWIGTYPE_p_altos_list list;
+
+               list = libaltos.altos_ftdi_list_start();
+
+               if (list != null) {
+                       for (;;) {
+                               MicroUSB device = new MicroUSB();
+                               if (libaltos.altos_list_next(list, device) == 0)
+                                       break;
+                               if (device.isFTDI())
+                                       device_list.add(device);
+                       }
+                       libaltos.altos_list_finish(list);
+               }
+
+               list = libaltos.altos_list_start();
+
                if (list != null) {
                        for (;;) {
                                MicroUSB device = new MicroUSB();