summaryrefslogtreecommitdiff
path: root/usb/aidl/android
diff options
context:
space:
mode:
Diffstat (limited to 'usb/aidl/android')
-rw-r--r--usb/aidl/android/hardware/usb/ContaminantDetectionStatus.aidl37
-rw-r--r--usb/aidl/android/hardware/usb/ContaminantProtectionMode.aidl43
-rw-r--r--usb/aidl/android/hardware/usb/ContaminantProtectionStatus.aidl51
-rw-r--r--usb/aidl/android/hardware/usb/IUsb.aidl107
-rw-r--r--usb/aidl/android/hardware/usb/IUsbCallback.aidl108
-rw-r--r--usb/aidl/android/hardware/usb/PortDataRole.aidl35
-rw-r--r--usb/aidl/android/hardware/usb/PortMode.aidl49
-rw-r--r--usb/aidl/android/hardware/usb/PortPowerRole.aidl35
-rw-r--r--usb/aidl/android/hardware/usb/PortRole.aidl31
-rw-r--r--usb/aidl/android/hardware/usb/PortStatus.aidl118
-rw-r--r--usb/aidl/android/hardware/usb/PowerBrickStatus.aidl33
-rw-r--r--usb/aidl/android/hardware/usb/Status.aidl39
-rw-r--r--usb/aidl/android/hardware/usb/UsbDataStatus.aidl49
13 files changed, 735 insertions, 0 deletions
diff --git a/usb/aidl/android/hardware/usb/ContaminantDetectionStatus.aidl b/usb/aidl/android/hardware/usb/ContaminantDetectionStatus.aidl
new file mode 100644
index 0000000000..d9bc576f94
--- /dev/null
+++ b/usb/aidl/android/hardware/usb/ContaminantDetectionStatus.aidl
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2021 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;
+
+@VintfStability
+enum ContaminantDetectionStatus {
+ /**
+ * Contaminant presence detection is not supported.
+ */
+ NOT_SUPPORTED = 0,
+ /**
+ * Contaminant presence detection is supported but disabled.
+ */
+ DISABLED = 1,
+ /**
+ * Contaminant presence detection is enabled and contaminant not detected.
+ */
+ NOT_DETECTED = 2,
+ /**
+ * Contaminant presence detection is enabled and contaminant detected.
+ */
+ DETECTED = 3,
+}
diff --git a/usb/aidl/android/hardware/usb/ContaminantProtectionMode.aidl b/usb/aidl/android/hardware/usb/ContaminantProtectionMode.aidl
new file mode 100644
index 0000000000..47c073dcc4
--- /dev/null
+++ b/usb/aidl/android/hardware/usb/ContaminantProtectionMode.aidl
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2021 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;
+
+@VintfStability
+enum ContaminantProtectionMode {
+ /**
+ * No action performed upon detection of contaminant presence.
+ */
+ NONE = 0,
+ /**
+ * Upon detection of contaminant presence, Port is forced to sink only
+ * mode where a port shall only detect chargers until contaminant presence
+ * is no longer detected.
+ */
+ FORCE_SINK = 1,
+ /**
+ * Upon detection of contaminant presence, Port is forced to source only
+ * mode where a port shall only detect usb accessories such as headsets
+ * until contaminant presence is no longer detected.
+ */
+ FORCE_SOURCE = 2,
+ /**
+ * Upon detection of contaminant presence, port is disabled until contaminant
+ * presence is no longer detected. In the disabled state port will
+ * not respond to connection of chargers or usb accessories.
+ */
+ FORCE_DISABLE = 3,
+}
diff --git a/usb/aidl/android/hardware/usb/ContaminantProtectionStatus.aidl b/usb/aidl/android/hardware/usb/ContaminantProtectionStatus.aidl
new file mode 100644
index 0000000000..c4fa979698
--- /dev/null
+++ b/usb/aidl/android/hardware/usb/ContaminantProtectionStatus.aidl
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2021 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;
+
+import android.hardware.usb.ContaminantProtectionMode;
+
+@VintfStability
+enum ContaminantProtectionStatus {
+ /**
+ * No action performed upon detection of contaminant presence.
+ */
+ NONE = 0,
+ /**
+ * Upon detection of contaminant presence, Port is forced to sink only
+ * mode where a port shall only detect chargers until contaminant presence
+ * is no longer detected.
+ */
+ FORCE_SINK = 1,
+ /**
+ * Upon detection of contaminant presence, Port is forced to source only
+ * mode where a port shall only detect usb accessories such as headsets
+ * until contaminant presence is no longer detected.
+ */
+ FORCE_SOURCE = 2,
+ /**
+ * Upon detection of contaminant presence, port is disabled until contaminant
+ * presence is no longer detected. In the disabled state port will
+ * not respond to connection of chargers or usb accessories.
+ */
+ FORCE_DISABLE = 3,
+ /**
+ * Client disabled cotaminant protection by calling
+ * enableContaminantPresencePortProtection set to false. Low level drivers should
+ * not autmomously take any corrective action when contaminant presence is detected.
+ */
+ DISABLED = 4,
+}
diff --git a/usb/aidl/android/hardware/usb/IUsb.aidl b/usb/aidl/android/hardware/usb/IUsb.aidl
new file mode 100644
index 0000000000..d296fbb209
--- /dev/null
+++ b/usb/aidl/android/hardware/usb/IUsb.aidl
@@ -0,0 +1,107 @@
+/*
+ * Copyright (C) 2021 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;
+
+import android.hardware.usb.IUsbCallback;
+import android.hardware.usb.PortRole;
+
+@VintfStability
+oneway interface IUsb {
+ /**
+ * When supportsEnableContaminantPresenceDetection is true,
+ * enableContaminantPresenceDetection enables/disables contaminant
+ * presence detection algorithm. Calling enableContaminantPresenceDetection
+ * when supportsEnableContaminantPresenceDetection is false does
+ * not have any effect.
+ * Change in contantaminant presence status should be notified to the
+ * client via notifyPortStatusChange through PortStatus.
+ *
+ * @param portName name of the port.
+ * @param enable true Enable contaminant presence detection algorithm.
+ * false Disable contaminant presence detection algorithm.
+ * @param transactionId ID to be used when invoking the callback.
+ */
+ void enableContaminantPresenceDetection(in String portName, in boolean enable, long transactionId);
+
+ /**
+ * This function is used to enable/disable USB data controller.
+ *
+ * @param portName Name of the port.
+ * @param enable true Enable USB data signaling.
+ * false Disable USB data signaling.
+ * @param transactionId ID to be used when invoking the callback.
+ *
+ */
+ void enableUsbData(in String portName, boolean enable, long transactionId);
+
+ /**
+ * This function is used to enable USB controller if and when the controller
+ * disabled due to docking event.
+ *
+ * @param portName Name of the port.
+ * @param transactionId ID to be used when invoking the callback.
+ */
+ void enableUsbDataWhileDocked(in String portName, long transactionId);
+
+ /**
+ * This functions is used to request the hal for the current status
+ * status of the Type-C ports. The result of the query would be sent
+ * through the IUsbCallback object's notifyRoleSwitchStatus
+ * to the caller. This api would would let the caller know of the number
+ * of type-c ports that are present and their connection status through the
+ * PortStatus type.
+ * @param transactionId ID to be used when invoking the callback.
+ */
+ void queryPortStatus(long transactionId);
+
+ /**
+ * This function is used to register a callback function which is
+ * called by the HAL to inform the client of port status updates and
+ * result of the requested operation. Please refer IUsbCallback for
+ * complete description of when each of the IUsbCallback's interface
+ * methods is expected to be called.
+ *
+ * @param callback IUsbCallback object used to convey status to the
+ * userspace.
+ */
+ void setCallback(in IUsbCallback callback);
+
+ /**
+ * This function is used to change the port role of a specific port.
+ * For example, when DR_SWAP or PR_SWAP is supported.
+ * The status of the role switch will be informed through IUsbCallback
+ * object's notifyPortStatusChange method.
+ *
+ * @param portName name of the port for which the role has to be changed
+ * @param role the new port role.
+ * @param transactionId ID to be used when invoking the callback.
+ */
+ void switchRole(in String portName, in PortRole role, long transactionId);
+
+ /**
+ * This function is used to limit power transfer in and out of the port.
+ * When limited, the port does not charge from the partner port.
+ * Also, the port limits sourcing power to the partner port when the USB
+ * specification allows it to do so.
+ *
+ * @param portName name of the port for which power transfer is being limited.
+ * @param limit true limit power transfer.
+ * false relax limiting power transfer.
+ * @param transactionId ID to be used when invoking the callback.
+ */
+ void limitPowerTransfer(in String portName, boolean limit, long transactionId);
+}
diff --git a/usb/aidl/android/hardware/usb/IUsbCallback.aidl b/usb/aidl/android/hardware/usb/IUsbCallback.aidl
new file mode 100644
index 0000000000..e33672aa2b
--- /dev/null
+++ b/usb/aidl/android/hardware/usb/IUsbCallback.aidl
@@ -0,0 +1,108 @@
+/*
+ * Copyright (C) 2021 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;
+
+import android.hardware.usb.PortRole;
+import android.hardware.usb.PortStatus;
+import android.hardware.usb.Status;
+
+/**
+ * Callback object used for all the IUsb async methods which expects a result.
+ * Caller is expected to register the callback object using setCallback method
+ * to receive updates on the PortStatus.
+ */
+@VintfStability
+oneway interface IUsbCallback {
+ /**
+ * Used to convey the current port status to the caller.
+ * Must be called either when PortState changes due to the port partner or
+ * when caller requested for the PortStatus update through queryPortStatus.
+ *
+ * @param currentPortStatus describes the status of all the USB ports in the
+ * device.
+ * @param retval SUCCESS when the required information was enquired form
+ * kernel and the PortStatus object was built.
+ * ERROR otherwise.
+ */
+ void notifyPortStatusChange(in PortStatus[] currentPortStatus, in Status retval);
+
+ /**
+ * Used to notify the result of the switchRole call to the caller.
+ *
+ * @param portName name of the port for which the roleswap is requested.
+ * @param newRole the new role requested by the caller.
+ * @param retval SUCCESS if the role switch succeeded. FAILURE otherwise.
+ * @param transactionId transactionId sent during switchRole request.
+ */
+ void notifyRoleSwitchStatus(in String portName, in PortRole newRole, in Status retval,
+ long transactionId);
+
+ /**
+ * Used to notify the result of notifyEnableUsbDataStatus call to the caller.
+ *
+ * @param portName name of the port for which the enableUsbData is requested.
+ * @param enable true when usb data is enabled.
+ * false when usb data is disabled.
+ * @param retval SUCCESS if current request succeeded. FAILURE otherwise.
+ * @param transactionId transactionId sent during enableUsbData request.
+ */
+ void notifyEnableUsbDataStatus(in String portName, boolean enable, in Status retval,
+ long transactionId);
+
+ /**
+ * Used to notify the result of enableUsbDataWhileDocked call to the caller.
+ *
+ * @param portName name of the port for which the enableUsbDataWhileDocked is requested.
+ * @param retval SUCCESS if current request succeeded. FAILURE otherwise.
+ * @param transactionId transactionId sent during enableUsbDataWhileDocked request.
+ */
+ void notifyEnableUsbDataWhileDockedStatus(in String portName, in Status retval,
+ long transactionId);
+
+ /**
+ * Used to notify the result of enableContaminantPresenceDetection.
+ *
+ * @param portName name of the port for which contaminant detection is enabled/disabled.
+ * @param enable true when contaminant detection is enabled.
+ * false when disabled.
+ * @param retval SUCCESS if the request for enabling/disabling contamiant detection succeeds.
+ * FAILURE otherwise.
+ * @param transactionId transactionId sent during queryPortStatus request
+ */
+ void notifyContaminantEnabledStatus(in String portName, boolean enable, in Status retval,
+ long transactionId);
+
+ /**
+ * Used to notify the request to query port status.
+ *
+ * @param portName name of the port for which port status is queried.
+ * @param retval SUCCESS if the port query succeeded. FAILURE otherwise.
+ * @param transactionId transactionId sent during queryPortStatus request
+ */
+ void notifyQueryPortStatus(in String portName, in Status retval, long transactionId);
+
+ /**
+ * Used to notify the result of requesting limitPowerTransfer.
+ *
+ * @param portName name of the port for which power transfer is being limited.
+ * @param limit true limit power transfer.
+ * false relax limiting power transfer.
+ * @param retval SUCCESS if the request to enable/disable limitPowerTransfer succeeds.
+ * FAILURE otherwise.
+ * @param transactionId ID sent during limitPowerTransfer request.
+ */
+ void notifyLimitPowerTransferStatus(in String portName, boolean limit, in Status retval, long transactionId);
+}
diff --git a/usb/aidl/android/hardware/usb/PortDataRole.aidl b/usb/aidl/android/hardware/usb/PortDataRole.aidl
new file mode 100644
index 0000000000..a69f97719e
--- /dev/null
+++ b/usb/aidl/android/hardware/usb/PortDataRole.aidl
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2021 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;
+
+@VintfStability
+enum PortDataRole {
+ /**
+ * 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,
+}
diff --git a/usb/aidl/android/hardware/usb/PortMode.aidl b/usb/aidl/android/hardware/usb/PortMode.aidl
new file mode 100644
index 0000000000..399f0ebaeb
--- /dev/null
+++ b/usb/aidl/android/hardware/usb/PortMode.aidl
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2021 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;
+
+import android.hardware.usb.PortMode;
+
+@VintfStability
+enum PortMode {
+ /**
+ * 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,
+ /*
+ * Indicates that the port supports Audio Accessory mode.
+ */
+ AUDIO_ACCESSORY = 4,
+ /*
+ * Indicates that the port supports Debug Accessory mode.
+ */
+ DEBUG_ACCESSORY = 5,
+}
diff --git a/usb/aidl/android/hardware/usb/PortPowerRole.aidl b/usb/aidl/android/hardware/usb/PortPowerRole.aidl
new file mode 100644
index 0000000000..ae3dc47c45
--- /dev/null
+++ b/usb/aidl/android/hardware/usb/PortPowerRole.aidl
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2021 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;
+
+@VintfStability
+enum PortPowerRole {
+ /**
+ * 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,
+}
diff --git a/usb/aidl/android/hardware/usb/PortRole.aidl b/usb/aidl/android/hardware/usb/PortRole.aidl
new file mode 100644
index 0000000000..e0429c8b74
--- /dev/null
+++ b/usb/aidl/android/hardware/usb/PortRole.aidl
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2021 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;
+
+import android.hardware.usb.PortDataRole;
+import android.hardware.usb.PortMode;
+import android.hardware.usb.PortPowerRole;
+
+/**
+ * Used as a container to send port role information.
+ */
+@VintfStability
+union PortRole {
+ PortPowerRole powerRole = PortPowerRole.NONE;
+ PortDataRole dataRole;
+ PortMode mode;
+}
diff --git a/usb/aidl/android/hardware/usb/PortStatus.aidl b/usb/aidl/android/hardware/usb/PortStatus.aidl
new file mode 100644
index 0000000000..51bee71389
--- /dev/null
+++ b/usb/aidl/android/hardware/usb/PortStatus.aidl
@@ -0,0 +1,118 @@
+/*
+ * Copyright (C) 2021 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;
+
+import android.hardware.usb.ContaminantDetectionStatus;
+import android.hardware.usb.ContaminantProtectionMode;
+import android.hardware.usb.ContaminantProtectionStatus;
+import android.hardware.usb.PortDataRole;
+import android.hardware.usb.PortMode;
+import android.hardware.usb.PortPowerRole;
+import android.hardware.usb.PowerBrickStatus;
+import android.hardware.usb.UsbDataStatus;
+
+@VintfStability
+parcelable PortStatus {
+ /**
+ * Name of the port.
+ * Used as the port's id by the caller.
+ */
+ String portName;
+ /**
+ * Data role of the port.
+ */
+ PortDataRole currentDataRole = PortDataRole.NONE;
+ /**
+ * Power Role of thte port.
+ */
+ PortPowerRole currentPowerRole = PortPowerRole.NONE;
+ /**
+ * Mode in which the port is connected.
+ * Can be UFP or DFP or AUDIO_ACCESSORY or
+ * DEBUG_ACCESSORY.
+ */
+ PortMode currentMode = PortMode.NONE;
+ /**
+ * True indicates that the port's mode can
+ * be changed. False otherwise.
+ */
+ boolean 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.
+ */
+ boolean 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.
+ */
+ boolean 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.
+ * AUDIO_ACCESSORY - Indicates that the port supports
+ * Audio Accessory mode.
+ * DEBUG_ACCESSORY - Indicates that the port supports
+ * Debug Accessory mode.
+ */
+ PortMode[] supportedModes;
+ /**
+ * Contaminant presence protection modes supported by the port.
+ */
+ ContaminantProtectionMode[] supportedContaminantProtectionModes;
+ /**
+ * Client can enable/disable contaminant presence protection through
+ * enableContaminantPresenceProtection when true.
+ */
+ boolean supportsEnableContaminantPresenceProtection;
+ /**
+ * Contaminant presence protection modes currently active for the port.
+ */
+ ContaminantProtectionStatus contaminantProtectionStatus = ContaminantProtectionStatus.NONE;
+ /**
+ * Client can enable/disable contaminant presence detection through
+ * enableContaminantPresenceDetection when true.
+ */
+ boolean supportsEnableContaminantPresenceDetection;
+ /**
+ * Current status of contaminant detection algorithm.
+ */
+ ContaminantDetectionStatus contaminantDetectionStatus = ContaminantDetectionStatus.NOT_SUPPORTED;
+ /**
+ * UsbData status of the port.
+ * Lists reasons for USB data being disabled.
+ */
+ UsbDataStatus[] usbDataStatus;
+ /**
+ * Denoted whether power transfer is limited in the port.
+ */
+ boolean powerTransferLimited;
+ /**
+ * Denotes whether Power brick is connected.
+ */
+ PowerBrickStatus powerBrickStatus;
+}
diff --git a/usb/aidl/android/hardware/usb/PowerBrickStatus.aidl b/usb/aidl/android/hardware/usb/PowerBrickStatus.aidl
new file mode 100644
index 0000000000..620fb25922
--- /dev/null
+++ b/usb/aidl/android/hardware/usb/PowerBrickStatus.aidl
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2021 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;
+
+@VintfStability
+enum PowerBrickStatus {
+ /**
+ * Status not known.
+ */
+ UNKNOWN = 0,
+ /**
+ * Port partner is power brick.
+ */
+ CONNECTED = 1,
+ /**
+ * Port partner is not power brick.
+ */
+ NOT_CONNECTED = 2,
+}
diff --git a/usb/aidl/android/hardware/usb/Status.aidl b/usb/aidl/android/hardware/usb/Status.aidl
new file mode 100644
index 0000000000..468ba4a068
--- /dev/null
+++ b/usb/aidl/android/hardware/usb/Status.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 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;
+
+@VintfStability
+@Backing(type="int")
+enum Status {
+ 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,
+ /**
+ * Error value returned when the operation is not supported.
+ */
+ NOT_SUPPORTED = 4,
+}
diff --git a/usb/aidl/android/hardware/usb/UsbDataStatus.aidl b/usb/aidl/android/hardware/usb/UsbDataStatus.aidl
new file mode 100644
index 0000000000..4b6a41a01e
--- /dev/null
+++ b/usb/aidl/android/hardware/usb/UsbDataStatus.aidl
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2021 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;
+
+@VintfStability
+enum UsbDataStatus {
+ /**
+ * USB data status not known.
+ */
+ UNKNOWN = 0,
+ /**
+ * USB data is enabled.
+ */
+ ENABLED = 1,
+ /**
+ * USB data is disabled as the port is hot.
+ */
+ DISABLED_OVERHEAT = 2,
+ /**
+ * USB data is disabled as port is contaminated.
+ */
+ DISABLED_CONTAMINANT = 3,
+ /**
+ * USB data is disabled due to dock.
+ */
+ DISABLED_DOCK = 4,
+ /**
+ * USB data is disabled by USB Service.
+ */
+ DISABLED_FORCE = 5,
+ /**
+ * USB data disabled for debug.
+ */
+ DISABLED_DEBUG = 6
+}