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