예제 #1
0
 public static String prefixDeviceId(UsbDevice usbDevice, String s) {
   return UsbUtil.toHexString(usbDevice.getUsbDeviceDescriptor().idVendor())
       + ":"
       + UsbUtil.toHexString(usbDevice.getUsbDeviceDescriptor().idProduct())
       + ": "
       + s;
 }
예제 #2
0
  public static UsbDevice findDevice(UsbHub usbHub) {
    for (UsbDevice device : usbHub.getAttachedUsbDevices()) {
      if (device.isUsbHub()) {
        device = findDevice((UsbHub) device);

        if (device != null) {
          return device;
        }
      } else {
        UsbDeviceDescriptor deviceDescriptor = device.getUsbDeviceDescriptor();
        if (deviceDescriptor.idVendor() == 0x0403 && deviceDescriptor.idProduct() == 0x6001) {
          return device;
        }
      }
    }

    return null;
  }
  // return true if a device is found
  boolean askForUSBPermission() {
    UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);

    // register someone to listen for "permission granted" dialogs
    PendingIntent permissionIntent =
        PendingIntent.getBroadcast(this, 0, new Intent(ACTION_USB_PERMISSION), 0);
    IntentFilter filter = new IntentFilter(ACTION_USB_PERMISSION);
    usbListener = new InfiniTAMUSBPermissionListener();
    registerReceiver(usbListener, filter);

    // get a ist of USB devices
    HashMap<String, UsbDevice> deviceList = manager.getDeviceList();
    Iterator<UsbDevice> deviceIterator = deviceList.values().iterator();

    // find the depth camera
    UsbDevice depthCamera = null;
    while (deviceIterator.hasNext()) {
      UsbDevice device = deviceIterator.next();

      if ((device.getVendorId() == 0x1d27) && (device.getProductId() == 0x0600)) {
        depthCamera = device;
      }
    }
    if (depthCamera == null) {
      usbListener = null;
      return false;
    }

    if (manager.hasPermission(depthCamera)) {
      usbListener.setDeviceWithPermission(depthCamera);
    } else {
      manager.requestPermission(depthCamera, permissionIntent);
    }

    return true;
  }
예제 #4
0
  public UsbDevList getDevices(String vendorid) {
    UsbDevList list = new UsbDevList();
    Pointer[] devs = new Pointer[1];
    int result = LibUsbLibrary.libUsb.libusb_get_device_list(null, devs);
    checkError("libusb_get_device_list", result);
    Pointer[] devices = devs[0].getPointerArray(0L);
    UsbDevice device = null;
    for (Pointer usb_device : devices) {
      if (usb_device != null) {
        device = new UsbDevice(usb_device);
        if (device.getVendor().equals(vendorid)) {
          list.addDevice(device);
        }
      }
    }
    LibUsbLibrary.libUsb.libusb_free_device_list(devs[0], 1);
    return list;
    /*if (device != null) {
      System.out.println(device.getVendor() + ":" + device.getProduct());
      System.out.println("Serial : " + device.getSerial());
      System.out.println("Device Configuration :");
      System.out.println("Number of configurations " + device.getNbConfig());
      Iterator iconfs = device.getConfigurations().iterator();
      while (iconfs.hasNext()) {
    	  UsbConfiguration c = (UsbConfiguration)iconfs.next();
    	  System.out.println("   Configuration number " + c.getId() + " with " + c.getNbInterfaces() + " interfaces");
    	  Iterator ifaces = c.getInterfaces().iterator();
    	  while (ifaces.hasNext()) {
    		  UsbInterface iface = (UsbInterface)ifaces.next();
    		  System.out.println("      Number of alternate settings for interface " + iface.getId() + " : " + iface.getNbInterfaceDescriptors());
    		  Iterator<UsbInterfaceDescriptor>ifdescs = iface.getInterfaceDescriptors().iterator();
    		  while (ifdescs.hasNext()) {
    			  UsbInterfaceDescriptor ifdesc = ifdescs.next();
    			  System.out.println("         Number of endpoints for alternate setting " + ifdesc.getId() + " : " + ifdesc.getNbEndpointDescriptors());
    			  Iterator endpoints = ifdesc.getEndpointDescriptors().iterator();
    			  while (endpoints.hasNext()) {
    				  UsbEndpointDescriptor endpoint = (UsbEndpointDescriptor)endpoints.next();
    				  if (endpoint.isIn()) this.endpoint_in = endpoint.getEndpoint(); else
    					  this.endpoint_out = endpoint.getEndpoint();
    				  System.out.print("            " + (endpoint.isIn() ? "In  :" : "Out :"));
    				  System.out.println("0x" + Integer.toHexString(endpoint.getEndpoint() & 0xFF));
    			  }
    		  }
    	  }
      }
      byte[] data = null;
      System.out.println("Reading from device :");
      System.out.println("First read");
      data = device.bulkRead();
      System.out.println("Second read");
      data = device.bulkRead();
      if (data != null) {
        System.out.println("Reply :");
        System.out.println(new String(data));
      }
      System.out.println("Third read");
      data = device.bulkRead();

      S1Packet cmd1 = new S1Packet(1, new byte[0], false);
      System.out.println("Writing to device : " + HexDump.toHex(cmd1.getByteArray()));
      device.bulkWrite(cmd1.getByteArray());

      System.out.println("Reading from device :");
      System.out.print("First read : ");
      data = device.bulkRead();
      System.out.print("Second read : ");
      data = device.bulkRead();
      if (data != null) {
    	  System.out.println(data.length);
    	  System.out.println("Reply :");
    	  String dataS = new String(data);
    	  if (dataS.indexOf(";IMEI=")>0)
    		  System.out.println(dataS.substring(0, dataS.indexOf(";IMEI=")) + dataS.substring(dataS.indexOf(";MSN=")));
    	  else
    		  System.out.println(dataS);
      }
      System.out.println("Third read : ");
      data = device.bulkRead();
      device.close();
      device.destroy();
    }*/
  }