org.bidib.jbidibc.usbhid.UsbEndpoint Maven / Gradle / Ivy
package org.bidib.jbidibc.usbhid;
/*
* Copyright (C) 2010 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
public class UsbEndpoint {
private final int mAddress;
private final int mAttributes;
private final int mMaxPacketSize;
private final int mInterval;
/**
* UsbEndpoint should only be instantiated by UsbService implementation
*/
public UsbEndpoint(int address, int attributes, int maxPacketSize, int interval) {
mAddress = address;
mAttributes = attributes;
mMaxPacketSize = maxPacketSize;
mInterval = interval;
}
/**
* Returns the endpoint's address field. The address is a bitfield containing both the endpoint number as well as
* the data direction of the endpoint. the endpoint number and direction can also be accessed via
* {@link #getEndpointNumber} and {@link #getDirection}.
*
* @return the endpoint's address
*/
public int getAddress() {
return mAddress;
}
/**
* Extracts the endpoint's endpoint number from its address
*
* @return the endpoint's endpoint number
*/
public int getEndpointNumber() {
return mAddress & UsbConstants.USB_ENDPOINT_NUMBER_MASK;
}
/**
* Returns the endpoint's direction. Returns {@link UsbConstants#USB_DIR_OUT} if the direction is host to device,
* and {@link UsbConstants#USB_DIR_IN} if the direction is device to host.
*
* @see UsbConstants#USB_DIR_IN
* @see UsbConstants#USB_DIR_OUT
*
* @return the endpoint's direction
*/
public int getDirection() {
return mAddress & UsbConstants.USB_ENDPOINT_DIR_MASK;
}
/**
* Returns the endpoint's attributes field.
*
* @return the endpoint's attributes
*/
public int getAttributes() {
return mAttributes;
}
/**
* Returns the endpoint's type. Possible results are:
*
* - {@link UsbConstants#USB_ENDPOINT_XFER_CONTROL} (endpoint zero)
*
- {@link UsbConstants#USB_ENDPOINT_XFER_ISOC} (isochronous endpoint)
*
- {@link UsbConstants#USB_ENDPOINT_XFER_BULK} (bulk endpoint)
*
- {@link UsbConstants#USB_ENDPOINT_XFER_INT} (interrupt endpoint)
*
*
* @return the endpoint's type
*/
public int getType() {
return mAttributes & UsbConstants.USB_ENDPOINT_XFERTYPE_MASK;
}
/**
* Returns the endpoint's maximum packet size.
*
* @return the endpoint's maximum packet size
*/
public int getMaxPacketSize() {
return mMaxPacketSize;
}
/**
* Returns the endpoint's interval field.
*
* @return the endpoint's interval
*/
public int getInterval() {
return mInterval;
}
@Override
public String toString() {
return "UsbEndpoint[mAddress=" + mAddress + ",mAttributes=" + mAttributes + ",mMaxPacketSize=" + mMaxPacketSize
+ ",mInterval=" + mInterval + "]";
}
}