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 19371a3b879ba82bbe5a4d914328a20659131d0220Philip P. Moltmannimport android.service.ServiceProtoEnums; 20371a3b879ba82bbe5a4d914328a20659131d0220Philip P. Moltmann 21e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood/** 22e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood * Contains constants for the USB protocol. 23e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood * These constants correspond to definitions in linux/usb/ch9.h in the linux kernel. 24e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood */ 25e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwoodpublic final class UsbConstants { 26e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood 2711dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 2811dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * Bitmask used for extracting the {@link UsbEndpoint} direction from its address field. 2911dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * @see UsbEndpoint#getAddress 3011dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * @see UsbEndpoint#getDirection 3111dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * @see #USB_DIR_OUT 3211dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * @see #USB_DIR_IN 3311dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * 3411dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 35e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood public static final int USB_ENDPOINT_DIR_MASK = 0x80; 3611dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 3711dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * Used to signify direction of data for a {@link UsbEndpoint} is OUT (host to device) 3811dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * @see UsbEndpoint#getDirection 3911dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 40371a3b879ba82bbe5a4d914328a20659131d0220Philip P. Moltmann public static final int USB_DIR_OUT = ServiceProtoEnums.USB_ENDPOINT_DIR_OUT; // 0 4111dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 4211dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * Used to signify direction of data for a {@link UsbEndpoint} is IN (device to host) 4311dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * @see UsbEndpoint#getDirection 4411dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 45371a3b879ba82bbe5a4d914328a20659131d0220Philip P. Moltmann public static final int USB_DIR_IN = ServiceProtoEnums.USB_ENDPOINT_DIR_IN; // 0x80 46e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood 4711dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 4811dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * Bitmask used for extracting the {@link UsbEndpoint} number its address field. 4911dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * @see UsbEndpoint#getAddress 5011dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * @see UsbEndpoint#getEndpointNumber 5111dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 52e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood public static final int USB_ENDPOINT_NUMBER_MASK = 0x0f; 53e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood 5411dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 5511dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * Bitmask used for extracting the {@link UsbEndpoint} type from its address field. 5611dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * @see UsbEndpoint#getAddress 5711dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * @see UsbEndpoint#getType 5811dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * @see #USB_ENDPOINT_XFER_CONTROL 5911dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * @see #USB_ENDPOINT_XFER_ISOC 6011dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * @see #USB_ENDPOINT_XFER_BULK 6111dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * @see #USB_ENDPOINT_XFER_INT 6211dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 63e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood public static final int USB_ENDPOINT_XFERTYPE_MASK = 0x03; 6411dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 6511dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * Control endpoint type (endpoint zero) 6611dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * @see UsbEndpoint#getType 6711dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 68371a3b879ba82bbe5a4d914328a20659131d0220Philip P. Moltmann public static final int USB_ENDPOINT_XFER_CONTROL = 69371a3b879ba82bbe5a4d914328a20659131d0220Philip P. Moltmann ServiceProtoEnums.USB_ENDPOINT_TYPE_XFER_CONTROL; // 0 7011dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 7111dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * Isochronous endpoint type (currently not supported) 7211dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * @see UsbEndpoint#getType 7311dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 74371a3b879ba82bbe5a4d914328a20659131d0220Philip P. Moltmann public static final int USB_ENDPOINT_XFER_ISOC = 75371a3b879ba82bbe5a4d914328a20659131d0220Philip P. Moltmann ServiceProtoEnums.USB_ENDPOINT_TYPE_XFER_ISOC; // 1 7611dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 7711dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * Bulk endpoint type 7811dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * @see UsbEndpoint#getType 7911dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 80371a3b879ba82bbe5a4d914328a20659131d0220Philip P. Moltmann public static final int USB_ENDPOINT_XFER_BULK = 81371a3b879ba82bbe5a4d914328a20659131d0220Philip P. Moltmann ServiceProtoEnums.USB_ENDPOINT_TYPE_XFER_BULK; // 2 8211dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 8311dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * Interrupt endpoint type 8411dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * @see UsbEndpoint#getType 8511dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 86371a3b879ba82bbe5a4d914328a20659131d0220Philip P. Moltmann public static final int USB_ENDPOINT_XFER_INT = 87371a3b879ba82bbe5a4d914328a20659131d0220Philip P. Moltmann ServiceProtoEnums.USB_ENDPOINT_TYPE_XFER_INT; // 3 88e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood 8911dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood 9011dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 9111dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * Bitmask used for encoding the request type for a control request on endpoint zero. 9211dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 9311dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood public static final int USB_TYPE_MASK = (0x03 << 5); 9411dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 9511dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * Used to specify that an endpoint zero control request is a standard request. 9611dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 9711dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood public static final int USB_TYPE_STANDARD = (0x00 << 5); 9811dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 9911dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * Used to specify that an endpoint zero control request is a class specific request. 10011dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 10111dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood public static final int USB_TYPE_CLASS = (0x01 << 5); 10211dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 10311dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * Used to specify that an endpoint zero control request is a vendor specific request. 10411dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 10511dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood public static final int USB_TYPE_VENDOR = (0x02 << 5); 10611dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 10711dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * Reserved endpoint zero control request type (currently unused). 10811dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 10911dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood public static final int USB_TYPE_RESERVED = (0x03 << 5); 11011dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood 11111dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood 11211dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 11311dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * USB class indicating that the class is determined on a per-interface basis. 11411dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 115e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood public static final int USB_CLASS_PER_INTERFACE = 0; 11611dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 11711dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * USB class for audio devices. 11811dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 119e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood public static final int USB_CLASS_AUDIO = 1; 12011dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 12111dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * USB class for communication devices. 12211dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 123e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood public static final int USB_CLASS_COMM = 2; 12411dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 12511dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * USB class for human interface devices (for example, mice and keyboards). 12611dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 127e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood public static final int USB_CLASS_HID = 3; 12811dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 12911dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * USB class for physical devices. 13011dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 131e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood public static final int USB_CLASS_PHYSICA = 5; 13211dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 13311dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * USB class for still image devices (digital cameras). 13411dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 135e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood public static final int USB_CLASS_STILL_IMAGE = 6; 13611dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 13711dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * USB class for printers. 13811dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 139e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood public static final int USB_CLASS_PRINTER = 7; 14011dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 14111dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * USB class for mass storage devices. 14211dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 143e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood public static final int USB_CLASS_MASS_STORAGE = 8; 14411dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 14511dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * USB class for USB hubs. 14611dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 147e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood public static final int USB_CLASS_HUB = 9; 14811dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 14911dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * USB class for CDC devices (communications device class). 15011dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 151e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood public static final int USB_CLASS_CDC_DATA = 0x0a; 15211dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 15311dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * USB class for content smart card devices. 15411dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 155e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood public static final int USB_CLASS_CSCID = 0x0b; 15611dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 15711dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * USB class for content security devices. 15811dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 159e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood public static final int USB_CLASS_CONTENT_SEC = 0x0d; 16011dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 16111dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * USB class for video devices. 16211dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 163e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood public static final int USB_CLASS_VIDEO = 0x0e; 16411dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 16511dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * USB class for wireless controller devices. 16611dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 167e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood public static final int USB_CLASS_WIRELESS_CONTROLLER = 0xe0; 16811dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 16911dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * USB class for wireless miscellaneous devices. 17011dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 171e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood public static final int USB_CLASS_MISC = 0xef; 17211dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 17311dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * Application specific USB class. 17411dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 175e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood public static final int USB_CLASS_APP_SPEC = 0xfe; 17611dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 17711dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * Vendor specific USB class. 17811dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 179e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood public static final int USB_CLASS_VENDOR_SPEC = 0xff; 180e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood 18111dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 18211dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * Boot subclass for HID devices. 18311dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 18411dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood public static final int USB_INTERFACE_SUBCLASS_BOOT = 1; 18511dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood /** 18611dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood * Vendor specific USB subclass. 18711dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood */ 1888b682ad08a8e55b3ce2cf58f3aff6d3464ab668bMike Lockwood public static final int USB_SUBCLASS_VENDOR_SPEC = 0xff; 18911dd5ae97b1cd5889bb66862fd12718da62a9c75Mike Lockwood} 190