1e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood/* 2e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood * Copyright (C) 2010 The Android Open Source Project 3e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood * 4e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood * Licensed under the Apache License, Version 2.0 (the "License"); 5e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood * you may not use this file except in compliance with the License. 6e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood * You may obtain a copy of the License at 7e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood * 8e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood * http://www.apache.org/licenses/LICENSE-2.0 9e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood * 10e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood * Unless required by applicable law or agreed to in writing, software 11e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood * distributed under the License is distributed on an "AS IS" BASIS, 12e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood * See the License for the specific language governing permissions and 14e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood * limitations under the License. 15e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood */ 16e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood 17c4308f01c965571dc2354107c3574df113e397eeMike Lockwoodpackage android.hardware.usb; 18e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood 19e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood/** 20e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood * Contains constants for the USB protocol. 21e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood * These constants correspond to definitions in linux/usb/ch9.h in the linux kernel. 22e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood */ 23e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwoodpublic final class UsbConstants { 24e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood 2511dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 2611dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * Bitmask used for extracting the {@link UsbEndpoint} direction from its address field. 2711dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * @see UsbEndpoint#getAddress 2811dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * @see UsbEndpoint#getDirection 2911dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * @see #USB_DIR_OUT 3011dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * @see #USB_DIR_IN 3111dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * 3211dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 33e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood public static final int USB_ENDPOINT_DIR_MASK = 0x80; 3411dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 3511dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * Used to signify direction of data for a {@link UsbEndpoint} is OUT (host to device) 3611dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * @see UsbEndpoint#getDirection 3711dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 38e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood public static final int USB_DIR_OUT = 0; 3911dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 4011dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * Used to signify direction of data for a {@link UsbEndpoint} is IN (device to host) 4111dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * @see UsbEndpoint#getDirection 4211dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 43e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood public static final int USB_DIR_IN = 0x80; 44e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood 4511dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 4611dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * Bitmask used for extracting the {@link UsbEndpoint} number its address field. 4711dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * @see UsbEndpoint#getAddress 4811dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * @see UsbEndpoint#getEndpointNumber 4911dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 50e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood public static final int USB_ENDPOINT_NUMBER_MASK = 0x0f; 51e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood 5211dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 5311dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * Bitmask used for extracting the {@link UsbEndpoint} type from its address field. 5411dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * @see UsbEndpoint#getAddress 5511dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * @see UsbEndpoint#getType 5611dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * @see #USB_ENDPOINT_XFER_CONTROL 5711dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * @see #USB_ENDPOINT_XFER_ISOC 5811dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * @see #USB_ENDPOINT_XFER_BULK 5911dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * @see #USB_ENDPOINT_XFER_INT 6011dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 61e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood public static final int USB_ENDPOINT_XFERTYPE_MASK = 0x03; 6211dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 6311dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * Control endpoint type (endpoint zero) 6411dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * @see UsbEndpoint#getType 6511dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 66e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood public static final int USB_ENDPOINT_XFER_CONTROL = 0; 6711dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 6811dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * Isochronous endpoint type (currently not supported) 6911dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * @see UsbEndpoint#getType 7011dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 71e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood public static final int USB_ENDPOINT_XFER_ISOC = 1; 7211dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 7311dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * Bulk endpoint type 7411dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * @see UsbEndpoint#getType 7511dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 76e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood public static final int USB_ENDPOINT_XFER_BULK = 2; 7711dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 7811dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * Interrupt endpoint type 7911dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * @see UsbEndpoint#getType 8011dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 81e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood public static final int USB_ENDPOINT_XFER_INT = 3; 82e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood 8311dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood 8411dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 8511dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * Bitmask used for encoding the request type for a control request on endpoint zero. 8611dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 8711dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood public static final int USB_TYPE_MASK = (0x03 << 5); 8811dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 8911dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * Used to specify that an endpoint zero control request is a standard request. 9011dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 9111dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood public static final int USB_TYPE_STANDARD = (0x00 << 5); 9211dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 9311dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * Used to specify that an endpoint zero control request is a class specific request. 9411dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 9511dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood public static final int USB_TYPE_CLASS = (0x01 << 5); 9611dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 9711dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * Used to specify that an endpoint zero control request is a vendor specific request. 9811dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 9911dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood public static final int USB_TYPE_VENDOR = (0x02 << 5); 10011dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 10111dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * Reserved endpoint zero control request type (currently unused). 10211dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 10311dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood public static final int USB_TYPE_RESERVED = (0x03 << 5); 10411dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood 10511dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood 10611dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 10711dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * USB class indicating that the class is determined on a per-interface basis. 10811dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 109e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood public static final int USB_CLASS_PER_INTERFACE = 0; 11011dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 11111dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * USB class for audio devices. 11211dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 113e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood public static final int USB_CLASS_AUDIO = 1; 11411dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 11511dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * USB class for communication devices. 11611dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 117e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood public static final int USB_CLASS_COMM = 2; 11811dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 11911dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * USB class for human interface devices (for example, mice and keyboards). 12011dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 121e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood public static final int USB_CLASS_HID = 3; 12211dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 12311dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * USB class for physical devices. 12411dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 125e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood public static final int USB_CLASS_PHYSICA = 5; 12611dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 12711dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * USB class for still image devices (digital cameras). 12811dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 129e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood public static final int USB_CLASS_STILL_IMAGE = 6; 13011dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 13111dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * USB class for printers. 13211dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 133e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood public static final int USB_CLASS_PRINTER = 7; 13411dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 13511dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * USB class for mass storage devices. 13611dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 137e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood public static final int USB_CLASS_MASS_STORAGE = 8; 13811dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 13911dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * USB class for USB hubs. 14011dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 141e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood public static final int USB_CLASS_HUB = 9; 14211dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 14311dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * USB class for CDC devices (communications device class). 14411dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 145e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood public static final int USB_CLASS_CDC_DATA = 0x0a; 14611dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 14711dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * USB class for content smart card devices. 14811dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 149e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood public static final int USB_CLASS_CSCID = 0x0b; 15011dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 15111dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * USB class for content security devices. 15211dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 153e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood public static final int USB_CLASS_CONTENT_SEC = 0x0d; 15411dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 15511dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * USB class for video devices. 15611dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 157e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood public static final int USB_CLASS_VIDEO = 0x0e; 15811dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 15911dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * USB class for wireless controller devices. 16011dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 161e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood public static final int USB_CLASS_WIRELESS_CONTROLLER = 0xe0; 16211dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 16311dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * USB class for wireless miscellaneous devices. 16411dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 165e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood public static final int USB_CLASS_MISC = 0xef; 16611dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 16711dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * Application specific USB class. 16811dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 169e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood public static final int USB_CLASS_APP_SPEC = 0xfe; 17011dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 17111dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * Vendor specific USB class. 17211dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 173e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood public static final int USB_CLASS_VENDOR_SPEC = 0xff; 174e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood 17511dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 17611dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * Boot subclass for HID devices. 17711dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 17811dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood public static final int USB_INTERFACE_SUBCLASS_BOOT = 1; 17911dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 18011dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * Vendor specific USB subclass. 18111dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 1828b682ad08a8e55b3ce2cf58f3aff6d3464ab668bMike Lockwood public static final int USB_SUBCLASS_VENDOR_SPEC = 0xff; 18311dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood} 184