blob: 302616ec5b55e0d9f27db1bf80f18e51ced4697f [file] [log] [blame]
/*
* 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;
};