| /* |
| * Copyright (C) 2016 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package android.hardware.usb@1.0; |
| |
| |
| enum Status : uint32_t { |
| SUCCESS = 0, |
| |
| /** |
| * error value when the HAL operation fails for reasons not listed here. |
| */ |
| ERROR = 1, |
| |
| /** |
| * error value returned when input argument is invalid. |
| */ |
| INVALID_ARGUMENT = 2, |
| |
| /** |
| * error value returned when role string is unrecognized. |
| */ |
| UNRECOGNIZED_ROLE = 3, |
| }; |
| |
| /** |
| * Denotes the Port role type. |
| * Passed as an argument for functions used to query or change port roles. |
| */ |
| enum PortRoleType : uint32_t { |
| /** |
| * Denotes the data role of the port. |
| * The port can either be a "host" or a "device" for data. |
| * This maps to the PortDataRole enum. |
| */ |
| DATA_ROLE = 0, |
| |
| /** |
| * Denotes the power role of the port. |
| * The port can either be a "source" or "sink" for power. |
| * This maps to PortPowerRole enum. |
| */ |
| POWER_ROLE = 1, |
| |
| /** |
| * USB ports can be a pure DFP port which can only act |
| * as a host. A UFP port which can only act as a device. |
| * Or a dual role ports which can either can as a host or |
| * a device. This property is used to mention them. |
| */ |
| MODE = 2, |
| }; |
| |
| @export |
| enum PortDataRole : uint32_t { |
| /** |
| * Indicates that the port does not have a data role. |
| * In case of DRP, the current data role of the port is only resolved |
| * when the type-c handshake happens. |
| */ |
| NONE = 0, |
| |
| /** |
| * Indicates that the port is acting as a host for data. |
| */ |
| HOST = 1, |
| |
| /** |
| * Indicated that the port is acting as a device for data. |
| */ |
| DEVICE = 2, |
| |
| NUM_DATA_ROLES = 3, |
| }; |
| |
| @export |
| enum PortPowerRole : uint32_t { |
| /** |
| * Indicates that the port does not have a power role. |
| * In case of DRP, the current power role of the port is only resolved |
| * when the type-c handshake happens. |
| */ |
| NONE = 0, |
| |
| /** |
| * Indicates that the port is supplying power to the other port. |
| */ |
| SOURCE = 1, |
| |
| /** |
| * Indicates that the port is sinking power from the other port. |
| */ |
| SINK = 2, |
| |
| NUM_POWER_ROLES = 3, |
| }; |
| |
| @export |
| enum PortMode : uint32_t { |
| /** |
| * Indicates that the port does not have a mode. |
| * In case of DRP, the current mode of the port is only resolved |
| * when the type-c handshake happens. |
| */ |
| NONE = 0, |
| /** |
| * Indicates that port can only act as device for data and sink for power. |
| */ |
| UFP = 1, |
| |
| /** |
| * Indicates the port can only act as host for data and source for power. |
| */ |
| DFP = 2, |
| |
| /** |
| * Indicates can either act as UFP or DFP at a given point of time. |
| */ |
| DRP = 3, |
| |
| NUM_MODES = 4, |
| }; |
| |
| /** |
| * Used as a container to send port role information. |
| */ |
| struct PortRole { |
| /** |
| * Indicates the type of Port Role. |
| * Maps to the PortRoleType enum. |
| */ |
| PortRoleType type; |
| |
| /** |
| * when type is HAL_USB_DATA_ROLE pass values from enum PortDataRole. |
| * when type is HAL_USB_POWER_ROLE pass values from enum PortPowerRole. |
| * when type is HAL_USB_MODE pass values from enum PortMode. |
| */ |
| uint32_t role; |
| }; |
| |
| /** |
| * Used as the container to report data back to the caller. |
| * Represents the current connection status of a single USB port. |
| */ |
| struct PortStatus { |
| /** |
| * Name of the port. |
| * Used as the port's id by the caller. |
| */ |
| string portName; |
| |
| /** |
| * Data role of the port. |
| */ |
| PortDataRole currentDataRole; |
| |
| /** |
| * Power Role of thte port. |
| */ |
| PortPowerRole currentPowerRole; |
| |
| /** |
| * Mode in which the port is connected. |
| * Can be UFP or DFP. |
| */ |
| PortMode currentMode; |
| |
| /** |
| * True indicates that the port's mode can |
| * be changed. False otherwise. |
| */ |
| bool canChangeMode; |
| |
| /** |
| * True indicates that the port's data role |
| * can be changed. False otherwise. |
| * For example, true if Type-C PD PD_SWAP |
| * is supported. |
| */ |
| bool canChangeDataRole; |
| |
| /** |
| * True indicates that the port's power role |
| * can be changed. False otherwise. |
| * For example, true if Type-C PD PR_SWAP |
| * is supported. |
| */ |
| bool canChangePowerRole; |
| |
| /** |
| * Identifies the type of the local port. |
| * |
| * UFP - Indicates that port can only act as device for |
| * data and sink for power. |
| * DFP - Indicates the port can only act as host for data |
| * and source for power. |
| * DRP - Indicates can either act as UFP or DFP at a |
| * given point of time. |
| */ |
| PortMode supportedModes; |
| }; |