/*
* $Id$
*
* Copyright (C) 2003-2015 JNode.org
*
* This library is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published
* by the Free Software Foundation; either version 2.1 of the License, or
* (at your option) any later version.
*
* This library is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
* License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this library; If not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package org.jnode.driver.bus.usb;
/**
* @author Ewout Prangsma (epr@users.sourceforge.net)
*/
public interface USBConstants {
/* USB constants */
/*
* Device and/or Interface Class codes
*/
public static final int USB_CLASS_PER_INTERFACE = 0; /* for DeviceClass */
public static final int USB_CLASS_AUDIO = 1;
public static final int USB_CLASS_COMM = 2;
public static final int USB_CLASS_HID = 3;
public static final int USB_CLASS_PHYSICAL = 5;
public static final int USB_CLASS_STILL_IMAGE = 6;
public static final int USB_CLASS_PRINTER = 7;
public static final int USB_CLASS_MASS_STORAGE = 8;
public static final int USB_CLASS_HUB = 9;
public static final int USB_CLASS_CDC_DATA = 0x0a;
public static final int USB_CLASS_CSCID = 0x0b; /* chip+ smart card */
public static final int USB_CLASS_CONTENT_SEC = 0x0d; /* content security */
public static final int USB_CLASS_WIRELESS = 0xe0;
public static final int USB_CLASS_APP_SPEC = 0xfe;
public static final int USB_CLASS_VENDOR_SPEC = 0xff;
/*
* USB types
*/
public static final int USB_TYPE_MASK = (0x03 << 5);
public static final int USB_TYPE_STANDARD = (0x00 << 5);
public static final int USB_TYPE_CLASS = (0x01 << 5);
public static final int USB_TYPE_VENDOR = (0x02 << 5);
public static final int USB_TYPE_RESERVED = (0x03 << 5);
/*
* USB recipients
*/
public static final int USB_RECIP_MASK = 0x1f;
public static final int USB_RECIP_DEVICE = 0x00;
public static final int USB_RECIP_INTERFACE = 0x01;
public static final int USB_RECIP_ENDPOINT = 0x02;
public static final int USB_RECIP_OTHER = 0x03;
/*
* USB directions
*/
public static final int USB_DIR_MASK = 0x80;
public static final int USB_DIR_OUT = 0; /* to device */
public static final int USB_DIR_IN = 0x80; /* to host */
/*
* Descriptor types
*/
public static final int USB_DT_DEVICE = 0x01;
public static final int USB_DT_CONFIG = 0x02;
public static final int USB_DT_STRING = 0x03;
public static final int USB_DT_INTERFACE = 0x04;
public static final int USB_DT_ENDPOINT = 0x05;
public static final int USB_DT_HID = (USB_TYPE_CLASS | 0x01);
public static final int USB_DT_REPORT = (USB_TYPE_CLASS | 0x02);
public static final int USB_DT_PHYSICAL = (USB_TYPE_CLASS | 0x03);
/*
* Descriptor sizes per descriptor type
*/
public static final int USB_DT_DEVICE_SIZE = 18;
public static final int USB_DT_CONFIG_SIZE = 9;
public static final int USB_DT_INTERFACE_SIZE = 9;
public static final int USB_DT_ENDPOINT_SIZE = 7;
public static final int USB_DT_ENDPOINT_AUDIO_SIZE = 9; /* Audio extension */
public static final int USB_DT_HID_SIZE = 9;
/*
* Endpoints
*/
public static final int USB_ENDPOINT_NUMBER_MASK = 0x0f; /* in bEndpointAddress */
public static final int USB_ENDPOINT_DIR_MASK = 0x80;
public static final int USB_ENDPOINT_MAX = 16;
public static final int USB_ENDPOINT_XFERTYPE_MASK = 0x03; /* in bmAttributes */
public static final int USB_ENDPOINT_XFER_CONTROL = 0;
public static final int USB_ENDPOINT_XFER_ISOC = 1;
public static final int USB_ENDPOINT_XFER_BULK = 2;
public static final int USB_ENDPOINT_XFER_INT = 3;
public static final String USB_ENDPOINT_XFER_NAMES[] = {"control", "isochronous", "bulk", "interrupt"};
public static final int USB_ENDPOINT_MAXPS_MASK = 0x7ff; /* in wMaxPacketSize */
/*
* USB Packet IDs (PIDs)
*/
public static final int USB_PID_UNDEF_0 = 0xf0;
public static final int USB_PID_OUT = 0xe1;
public static final int USB_PID_ACK = 0xd2;
public static final int USB_PID_DATA0 = 0xc3;
public static final int USB_PID_PING = 0xb4; /* USB 2.0 */
public static final int USB_PID_SOF = 0xa5;
public static final int USB_PID_NYET = 0x96; /* USB 2.0 */
public static final int USB_PID_DATA2 = 0x87; /* USB 2.0 */
public static final int USB_PID_SPLIT = 0x78; /* USB 2.0 */
public static final int USB_PID_IN = 0x69;
public static final int USB_PID_NAK = 0x5a;
public static final int USB_PID_DATA1 = 0x4b;
public static final int USB_PID_PREAMBLE = 0x3c; /* Token mode */
public static final int USB_PID_ERR = 0x3c; /* USB 2.0: handshake mode */
public static final int USB_PID_SETUP = 0x2d;
public static final int USB_PID_STALL = 0x1e;
public static final int USB_PID_MDATA = 0x0f; /* USB 2.0 */
/*
* Standard requests
*/
public static final int USB_REQ_GET_STATUS = 0x00;
public static final int USB_REQ_CLEAR_FEATURE = 0x01;
public static final int USB_REQ_SET_FEATURE = 0x03;
public static final int USB_REQ_SET_ADDRESS = 0x05;
public static final int USB_REQ_GET_DESCRIPTOR = 0x06;
public static final int USB_REQ_SET_DESCRIPTOR = 0x07;
public static final int USB_REQ_GET_CONFIGURATION = 0x08;
public static final int USB_REQ_SET_CONFIGURATION = 0x09;
public static final int USB_REQ_GET_INTERFACE = 0x0A;
public static final int USB_REQ_SET_INTERFACE = 0x0B;
public static final int USB_REQ_SYNCH_FRAME = 0x0C;
/*
* HID requests
*/
public static final int USB_REQ_GET_REPORT = 0x01;
public static final int USB_REQ_GET_IDLE = 0x02;
public static final int USB_REQ_GET_PROTOCOL = 0x03;
public static final int USB_REQ_SET_REPORT = 0x09;
public static final int USB_REQ_SET_IDLE = 0x0A;
public static final int USB_REQ_SET_PROTOCOL = 0x0B;
/*
* Speeds
*/
public static final int USB_SPEED_LOW = 1; /* usb 1.1 */
public static final int USB_SPEED_FULL = 2; /* usb 1.1 */
public static final int USB_SPEED_HIGH = 3; /* usb 2.0 */
/*
* Timeouts and retries
*/
public static final long GET_TIMEOUT = 5000;
public static final long SET_TIMEOUT = 5000;
public static final int GET_DESCRIPTOR_ATTEMPTS = 3;
public static final int GET_STATUS_ATTEMPTS = 1;
public static final int SET_ADDRESS_ATTEMPTS = 3;
public static final int SET_CONFIGURATION_ATTEMPTS = 3;
public static final int SET_FEATURE_ATTEMPTS = 1;
public static final int SYNC_FRAME_ATTEMPTS = 1;
/*
* USBRequest status codes.
*/
public static final int USBREQ_ST_STALLED = 0x01;
public static final int USBREQ_ST_NAK = 0x02;
public static final int USBREQ_ST_DATABUFFER = 0x04;
public static final int USBREQ_ST_TIMEOUT = 0x08;
public static final int USBREQ_ST_BITSTUFF = 0x10;
public static final int USBREQ_ST_BABBLE = 0x20;
public static final int USBREQ_ST_ERROR_MASK = USBREQ_ST_STALLED | USBREQ_ST_NAK | USBREQ_ST_DATABUFFER |
USBREQ_ST_TIMEOUT | USBREQ_ST_BITSTUFF | USBREQ_ST_BABBLE;
public static final int USBREQ_ST_COMPLETED = 0x8000;
}