Esempio n. 1
0
  private void init(Interface intf) throws IOException {
    if (intf == null || intf.getNumEndpoints() != 2) throw new IllegalArgumentException();

    // XXX presumably this handles the "multiple devfs claims" case; check.

    intf.claim();
    this.intf = intf;

    try {
      for (int i = 0; i < intf.getNumEndpoints(); i++) {
        Endpoint ep = intf.getEndpoint(i);

        if (!"bulk".equals(ep.getType())) throw new IllegalArgumentException();
        if (ep.isInput()) in = ep.getInputStream();
        else out = ep.getOutputStream();
      }
      if (in == null || out == null) throw new IllegalArgumentException();
    } catch (IOException e) {
      try {
        close();
      } catch (Exception x) {
        intf = null;
      }
      throw e;
    } catch (RuntimeException e) {
      try {
        close();
      } catch (Exception x) {
        intf = null;
      }
      throw e;
    }
  }
Esempio n. 2
0
  private static void printInterface(int indent, Interface intf) throws IOException {
    indentLine(
        indent,
        "<"
            + intf.getInterfaceClassName()
            + " number='"
            + intf.getNumber()
            + "' alt='"
            + intf.getAlternateSetting()
            + "' endpoints='"
            + intf.getNumEndpoints()
            + "'");
    indentLine(
        indent + 4,
        "class='"
            + intf.getInterfaceClass()
            + "' subclass='"
            + intf.getInterfaceSubClass()
            + "' protocol='"
            + intf.getInterfaceProtocol()
            + "'>");
    indent += 2;

    maybePrintDescriptors(indent, intf.nextDescriptor());

    for (int ep = 0; ep < intf.getNumEndpoints(); ep++)
      try {
        printEndpoint(indent, intf.getEndpoint(ep));
      } catch (IOException e) {
        indentLine(indent, "<!-- CAN'T GET ENDPOINT: ");
        e.printStackTrace(System.out);
        indentLine(indent, "-->");
      }

    // FIXME:  can print interface class details

    indentLine(indent, "</" + intf.getInterfaceClassName() + ">");
  }