1 /* 2 * Copyright (C) 2010 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package android.hardware.usb; 18 19 /** 20 * Contains constants for the USB protocol. 21 * These constants correspond to definitions in linux/usb/ch9.h in the linux kernel. 22 */ 23 public final class UsbConstants { 24 25 /** 26 * Bitmask used for extracting the {@link UsbEndpoint} direction from its address field. 27 * @see UsbEndpoint#getAddress 28 * @see UsbEndpoint#getDirection 29 * @see #USB_DIR_OUT 30 * @see #USB_DIR_IN 31 * 32 */ 33 public static final int USB_ENDPOINT_DIR_MASK = 0x80; 34 /** 35 * Used to signify direction of data for a {@link UsbEndpoint} is OUT (host to device) 36 * @see UsbEndpoint#getDirection 37 */ 38 public static final int USB_DIR_OUT = 0; 39 /** 40 * Used to signify direction of data for a {@link UsbEndpoint} is IN (device to host) 41 * @see UsbEndpoint#getDirection 42 */ 43 public static final int USB_DIR_IN = 0x80; 44 45 /** 46 * Bitmask used for extracting the {@link UsbEndpoint} number its address field. 47 * @see UsbEndpoint#getAddress 48 * @see UsbEndpoint#getEndpointNumber 49 */ 50 public static final int USB_ENDPOINT_NUMBER_MASK = 0x0f; 51 52 /** 53 * Bitmask used for extracting the {@link UsbEndpoint} type from its address field. 54 * @see UsbEndpoint#getAddress 55 * @see UsbEndpoint#getType 56 * @see #USB_ENDPOINT_XFER_CONTROL 57 * @see #USB_ENDPOINT_XFER_ISOC 58 * @see #USB_ENDPOINT_XFER_BULK 59 * @see #USB_ENDPOINT_XFER_INT 60 */ 61 public static final int USB_ENDPOINT_XFERTYPE_MASK = 0x03; 62 /** 63 * Control endpoint type (endpoint zero) 64 * @see UsbEndpoint#getType 65 */ 66 public static final int USB_ENDPOINT_XFER_CONTROL = 0; 67 /** 68 * Isochronous endpoint type (currently not supported) 69 * @see UsbEndpoint#getType 70 */ 71 public static final int USB_ENDPOINT_XFER_ISOC = 1; 72 /** 73 * Bulk endpoint type 74 * @see UsbEndpoint#getType 75 */ 76 public static final int USB_ENDPOINT_XFER_BULK = 2; 77 /** 78 * Interrupt endpoint type 79 * @see UsbEndpoint#getType 80 */ 81 public static final int USB_ENDPOINT_XFER_INT = 3; 82 83 84 /** 85 * Bitmask used for encoding the request type for a control request on endpoint zero. 86 */ 87 public static final int USB_TYPE_MASK = (0x03 << 5); 88 /** 89 * Used to specify that an endpoint zero control request is a standard request. 90 */ 91 public static final int USB_TYPE_STANDARD = (0x00 << 5); 92 /** 93 * Used to specify that an endpoint zero control request is a class specific request. 94 */ 95 public static final int USB_TYPE_CLASS = (0x01 << 5); 96 /** 97 * Used to specify that an endpoint zero control request is a vendor specific request. 98 */ 99 public static final int USB_TYPE_VENDOR = (0x02 << 5); 100 /** 101 * Reserved endpoint zero control request type (currently unused). 102 */ 103 public static final int USB_TYPE_RESERVED = (0x03 << 5); 104 105 106 /** 107 * USB class indicating that the class is determined on a per-interface basis. 108 */ 109 public static final int USB_CLASS_PER_INTERFACE = 0; 110 /** 111 * USB class for audio devices. 112 */ 113 public static final int USB_CLASS_AUDIO = 1; 114 /** 115 * USB class for communication devices. 116 */ 117 public static final int USB_CLASS_COMM = 2; 118 /** 119 * USB class for human interface devices (for example, mice and keyboards). 120 */ 121 public static final int USB_CLASS_HID = 3; 122 /** 123 * USB class for physical devices. 124 */ 125 public static final int USB_CLASS_PHYSICA = 5; 126 /** 127 * USB class for still image devices (digital cameras). 128 */ 129 public static final int USB_CLASS_STILL_IMAGE = 6; 130 /** 131 * USB class for printers. 132 */ 133 public static final int USB_CLASS_PRINTER = 7; 134 /** 135 * USB class for mass storage devices. 136 */ 137 public static final int USB_CLASS_MASS_STORAGE = 8; 138 /** 139 * USB class for USB hubs. 140 */ 141 public static final int USB_CLASS_HUB = 9; 142 /** 143 * USB class for CDC devices (communications device class). 144 */ 145 public static final int USB_CLASS_CDC_DATA = 0x0a; 146 /** 147 * USB class for content smart card devices. 148 */ 149 public static final int USB_CLASS_CSCID = 0x0b; 150 /** 151 * USB class for content security devices. 152 */ 153 public static final int USB_CLASS_CONTENT_SEC = 0x0d; 154 /** 155 * USB class for video devices. 156 */ 157 public static final int USB_CLASS_VIDEO = 0x0e; 158 /** 159 * USB class for wireless controller devices. 160 */ 161 public static final int USB_CLASS_WIRELESS_CONTROLLER = 0xe0; 162 /** 163 * USB class for wireless miscellaneous devices. 164 */ 165 public static final int USB_CLASS_MISC = 0xef; 166 /** 167 * Application specific USB class. 168 */ 169 public static final int USB_CLASS_APP_SPEC = 0xfe; 170 /** 171 * Vendor specific USB class. 172 */ 173 public static final int USB_CLASS_VENDOR_SPEC = 0xff; 174 175 /** 176 * Boot subclass for HID devices. 177 */ 178 public static final int USB_INTERFACE_SUBCLASS_BOOT = 1; 179 /** 180 * Vendor specific USB subclass. 181 */ 182 public static final int USB_SUBCLASS_VENDOR_SPEC = 0xff; 183 } 184