altosui: Catch errors opening USB devices. Limit list to relevant devices
[fw/altos] / ao-tools / altosui / AltosDevice.java
index 66800c5c66da39e45964f1593ee06a99614ee943..f488174cf7677e3dc345b1a6875b78d2f5e41d7a 100644 (file)
 package altosui;
 import java.lang.*;
 import java.util.*;
+import libaltosJNI.*;
 
-public class AltosDevice {
-       String  tty;    /* suitable to be passed to AltosSerial.connect */
-       String  manufacturer;
-       String  product;
-       int     serial;
-       int     idProduct;
-       int     idVendor;
+public class AltosDevice extends altos_device {
 
+       public String toString() {
+               return String.format("%-20.20s %4d %s",
+                                    getProduct(), getSerial(), getPath());
+       }
+
+       static {
+               System.loadLibrary("altos");
+               libaltos.altos_init();
+       }
+       static AltosDevice[] list(String product) {
+               SWIGTYPE_p_altos_list list = libaltos.altos_list_start();
+
+               ArrayList<AltosDevice> device_list = new ArrayList<AltosDevice>();
+               if (list != null) {
+                       SWIGTYPE_p_altos_file file;
+
+                       for (;;) {
+                               AltosDevice device = new AltosDevice();
+                               if (libaltos.altos_list_next(list, device) == 0)
+                                       break;
+                               if (product == null || device.getProduct().startsWith(product))
+                                       device_list.add(device);
+                       }
+                       libaltos.altos_list_finish(list);
+               }
+
+               AltosDevice[] devices = new AltosDevice[device_list.size()];
+               for (int i = 0; i < device_list.size(); i++)
+                       devices[i] = device_list.get(i);
+               return devices;
+       }
 }
\ No newline at end of file