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