/*
|
* 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;
|
};
|