usbinterface.java

来自「纯java操作系统jnode,安装简单和操作简单的个人使用的Java操作系统」· Java 代码 · 共 118 行

JAVA
118
字号
/*
 * $Id: USBInterface.java,v 1.1 2003/11/25 11:41:20 epr Exp $
 */
package org.jnode.driver.usb;

/**
 * @author Ewout Prangsma (epr@users.sourceforge.net)
 */
public class USBInterface extends AbstractDeviceItem {

	/** The configuration I'm a part of */
	private final USBConfiguration conf;
	/** My descriptor */
	private final InterfaceDescriptor descr;
	/** The endpoints */
	private final USBEndPoint[] endPoints;

	/**
	 * Initialize this instance
	 * 
	 * @param conf
	 * @param descr
	 */
	public USBInterface(USBConfiguration conf, InterfaceDescriptor descr) {
		super(conf.getDevice());
		this.conf = conf;
		this.descr = descr;
		this.endPoints = new USBEndPoint[descr.getNumEndPoints()];
	}

	/**
	 * @return Returns the descr.
	 */
	public final InterfaceDescriptor getDescriptor() {
		return this.descr;
	}

	/**
	 * @return Returns the conf.
	 */
	public final USBConfiguration getConfuration() {
		return this.conf;
	}
	/**
	 * Gets a specific endpoint.
	 */
	public final USBEndPoint getEndPoint(int index) {
		return this.endPoints[index];
	}

	/**
	 * Sets a specific endpoint.
	 */
	final void setEndPoint(int index, USBEndPoint endPoint) {
		if (this.endPoints[index] != null) {
			throw new SecurityException("Cannot overwrite a specific endpoint");
		} else {
			this.endPoints[index] = endPoint;
		}
	}
	
	/**
	 * Issue a GET_STATUS request to this interface.
	 * @throws USBException
	 * @return The status returned by the interface.
	 */
	public final int getStatus() 
	throws USBException {
		final USBPacket data = new USBPacket(2);
		final USBControlPipe pipe = getDevice().getDefaultControlPipe();
		final USBRequest req = pipe.createRequest(SetupPacket.createGetStatusPacket(USB_RECIP_INTERFACE, descr.getInterfaceNumber()), data);
		pipe.syncSubmit(req, GET_TIMEOUT);
		return data.getShort(0);
	}
	
	/**
	 * Issue a SET_FEATURE request to this interface.
	 * @param featureSelector
	 * @throws USBException
	 */
	public final void setFeature(int featureSelector) 
	throws USBException {
		final USBControlPipe pipe = getDevice().getDefaultControlPipe();
		final USBRequest req = pipe.createRequest(SetupPacket.createSetFeaturePacket(USB_RECIP_INTERFACE, descr.getInterfaceNumber(), featureSelector), null);
		pipe.syncSubmit(req, SET_TIMEOUT);
	}
	
	/**
	 * Issue a CLEAR_FEATURE request to this interface.
	 * @param featureSelector
	 * @throws USBException
	 */
	public final void clearFeature(int featureSelector) 
	throws USBException {
		final USBControlPipe pipe = getDevice().getDefaultControlPipe();
		final USBRequest req = pipe.createRequest(SetupPacket.createClearFeaturePacket(USB_RECIP_INTERFACE, descr.getInterfaceNumber(), featureSelector), null);
		pipe.syncSubmit(req, SET_TIMEOUT);
	}

	/**
	 * @see java.lang.Object#toString()
	 */
	public String toString() {
		final StringBuffer b = new StringBuffer();
		b.append("DESCR:");
		b.append(descr);
		b.append(", EPS{");
		for (int i = 0; i < endPoints.length; i++) {
			if (i > 0) {
				b.append(", ");
			}
			b.append(endPoints[i]);
		} 
		b.append("}");
		return b.toString();
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?