X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Forg%2Fsigrok%2Fandroidutils%2FUsbHelper.java;h=58079fd8efd63fd1b4b7284de381af99b9c225a1;hb=HEAD;hp=e16b33d7242fcc6ef40f4d52351cfdface668ccd;hpb=6f1c3a93af2045874e0acf3088ab5ee8f1ffc9ae;p=sigrok-androidutils.git diff --git a/src/org/sigrok/androidutils/UsbHelper.java b/src/org/sigrok/androidutils/UsbHelper.java index e16b33d..58079fd 100644 --- a/src/org/sigrok/androidutils/UsbHelper.java +++ b/src/org/sigrok/androidutils/UsbHelper.java @@ -29,9 +29,12 @@ import java.util.HashMap; public final class UsbHelper { private static UsbManager manager; + private static Context context; + private static UsbEventMonitor eventMonitor; public static void setContext(Context ctx) { + context = ctx; if (ctx == null) manager = null; else @@ -54,6 +57,45 @@ public final class UsbHelper return (conn == null ? -1 : conn.getFileDescriptor()); } + private static synchronized void startEventMonitor(Context context, UsbManager manager, UsbEventListener listener) + { + if (eventMonitor != null) { + eventMonitor.stop(); + eventMonitor = null; + } + if (context == null) { + Log.w("UsbHelper", "no context"); + return; + } + if (manager == null) { + Log.w("UsbHelper", "no manager"); + return; + } + eventMonitor = new UsbEventMonitor(context, manager, listener); + eventMonitor.start(); + } + + private static synchronized void stopEventMonitor(Context context) + { + if (eventMonitor != null) { + eventMonitor.stop(); + eventMonitor = null; + } + } + + private static String[] scanDevices(UsbManager manager) + { + if (manager == null) { + Log.w("UsbHelper", "no manager"); + return null; + } + HashMap devlist = manager.getDeviceList(); + if (devlist == null) + return null; + String[] list = devlist.keySet().toArray(new String[devlist.size()]); + return list; + } + public static int open(String name, int mode) { try { @@ -63,5 +105,33 @@ public final class UsbHelper return -1; } } + + public static void startEventMonitor(UsbEventListener listener) + { + try { + startEventMonitor(context, manager, listener); + } catch (Exception e) { + Log.w("UsbHelper", "caught exception " + e); + } + } + + public static void stopEventMonitor() + { + try { + stopEventMonitor(context); + } catch (Exception e) { + Log.w("UsbHelper", "caught exception " + e); + } + } + + public static String[] scanDevices() + { + try { + return scanDevices(manager); + } catch (Exception e) { + Log.w("UsbHelper", "caught exception " + e); + return null; + } + } }