Java Code Examples for android.hardware.usb.UsbDevice#getConfiguration()

The following examples show how to use android.hardware.usb.UsbDevice#getConfiguration() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: Java_WiimoteAdapter.java    From citra_android with GNU General Public License v3.0 4 votes vote down vote up
public static boolean OpenAdapter()
{
  // If the adapter is already open. Don't attempt to do it again
  if (usb_con != null && usb_con.getFileDescriptor() != -1)
    return true;

  HashMap<String, UsbDevice> devices = manager.getDeviceList();
  for (Map.Entry<String, UsbDevice> pair : devices.entrySet())
  {
    UsbDevice dev = pair.getValue();
    if (dev.getProductId() == NINTENDO_WIIMOTE_PRODUCT_ID &&
            dev.getVendorId() == NINTENDO_VENDOR_ID)
    {
      if (manager.hasPermission(dev))
      {
        usb_con = manager.openDevice(dev);
        UsbConfiguration conf = dev.getConfiguration(0);

        Log.info("Number of configurations: " + dev.getConfigurationCount());
        Log.info("Number of Interfaces: " + dev.getInterfaceCount());
        Log.info("Number of Interfaces from conf: " + conf.getInterfaceCount());

        // Sometimes the interface count is returned as zero.
        // Means the device needs to be unplugged and plugged back in again
        if (dev.getInterfaceCount() > 0)
        {
          for (int i = 0; i < MAX_WIIMOTES; ++i)
          {
            // One interface per Wii Remote
            usb_intf[i] = dev.getInterface(i);
            usb_con.claimInterface(usb_intf[i], true);

            // One endpoint per Wii Remote. Input only
            // Output reports go through the control channel.
            usb_in[i] = usb_intf[i].getEndpoint(0);
            Log.info("Interface " + i + " endpoint count:" + usb_intf[i].getEndpointCount());
          }
          return true;
        }
        else
        {
          // XXX: Message that the device was found, but it needs to be unplugged and plugged back in?
          usb_con.close();
        }
      }
    }
  }
  return false;
}
 
Example 2
Source File: Java_GCAdapter.java    From citra_android with GNU General Public License v3.0 4 votes vote down vote up
public static boolean OpenAdapter()
{
  HashMap<String, UsbDevice> devices = manager.getDeviceList();
  for (Map.Entry<String, UsbDevice> pair : devices.entrySet())
  {
    UsbDevice dev = pair.getValue();
    if (dev.getProductId() == 0x0337 && dev.getVendorId() == 0x057e)
    {
      if (manager.hasPermission(dev))
      {
        usb_con = manager.openDevice(dev);

        Log.info("GCAdapter: Number of configurations: " + dev.getConfigurationCount());
        Log.info("GCAdapter: Number of interfaces: " + dev.getInterfaceCount());

        if (dev.getConfigurationCount() > 0 && dev.getInterfaceCount() > 0)
        {
          UsbConfiguration conf = dev.getConfiguration(0);
          usb_intf = conf.getInterface(0);
          usb_con.claimInterface(usb_intf, true);

          Log.info("GCAdapter: Number of endpoints: " + usb_intf.getEndpointCount());

          if (usb_intf.getEndpointCount() == 2)
          {
            for (int i = 0; i < usb_intf.getEndpointCount(); ++i)
              if (usb_intf.getEndpoint(i).getDirection() == UsbConstants.USB_DIR_IN)
                usb_in = usb_intf.getEndpoint(i);
              else
                usb_out = usb_intf.getEndpoint(i);

            InitAdapter();
            return true;
          }
          else
          {
            usb_con.releaseInterface(usb_intf);
          }
        }

        final Activity emulationActivity = NativeLibrary.sEmulationActivity.get();
        if (emulationActivity != null)
        {
          emulationActivity.runOnUiThread(() -> Toast.makeText(emulationActivity,
                  "GameCube Adapter couldn't be opened. Please re-plug the device.",
                  Toast.LENGTH_LONG).show());
        }
        else
        {
          Log.warning("Cannot show toast for GameCube Adapter failure.");
        }
        usb_con.close();
      }
    }
  }
  return false;
}