Merge "Add additional status flags to UsbDataStatus"

This commit is contained in:
TreeHugger Robot
2022-12-21 09:04:32 +00:00
committed by Android (Google) Code Review
4 changed files with 89 additions and 16 deletions

View File

@@ -5817,6 +5817,8 @@ package android.hardware.usb {
field public static final int DATA_STATUS_DISABLED_CONTAMINANT = 4; // 0x4
field public static final int DATA_STATUS_DISABLED_DEBUG = 32; // 0x20
field public static final int DATA_STATUS_DISABLED_DOCK = 8; // 0x8
field public static final int DATA_STATUS_DISABLED_DOCK_DEVICE_MODE = 128; // 0x80
field public static final int DATA_STATUS_DISABLED_DOCK_HOST_MODE = 64; // 0x40
field public static final int DATA_STATUS_DISABLED_FORCE = 16; // 0x10
field public static final int DATA_STATUS_DISABLED_OVERHEAT = 2; // 0x2
field public static final int DATA_STATUS_ENABLED = 1; // 0x1

View File

@@ -46,6 +46,8 @@ import static android.hardware.usb.UsbPortStatus.DATA_STATUS_DISABLED_CONTAMINAN
import static android.hardware.usb.UsbPortStatus.DATA_STATUS_DISABLED_DOCK;
import static android.hardware.usb.UsbPortStatus.DATA_STATUS_DISABLED_FORCE;
import static android.hardware.usb.UsbPortStatus.DATA_STATUS_DISABLED_DEBUG;
import static android.hardware.usb.UsbPortStatus.DATA_STATUS_DISABLED_DOCK_HOST_MODE;
import static android.hardware.usb.UsbPortStatus.DATA_STATUS_DISABLED_DOCK_DEVICE_MODE;
import static android.hardware.usb.UsbPortStatus.COMPLIANCE_WARNING_DEBUG_ACCESSORY;
import static android.hardware.usb.UsbPortStatus.COMPLIANCE_WARNING_BC_1_2;
import static android.hardware.usb.UsbPortStatus.COMPLIANCE_WARNING_MISSING_RP;
@@ -676,6 +678,15 @@ public final class UsbPort {
statusString.append("disabled-debug, ");
}
if ((usbDataStatus & DATA_STATUS_DISABLED_DOCK_HOST_MODE) ==
DATA_STATUS_DISABLED_DOCK_HOST_MODE) {
statusString.append("disabled-host-dock, ");
}
if ((usbDataStatus & DATA_STATUS_DISABLED_DOCK_DEVICE_MODE) ==
DATA_STATUS_DISABLED_DOCK_DEVICE_MODE) {
statusString.append("disabled-device-dock, ");
}
return statusString.toString().replaceAll(", $", "");
}

View File

@@ -219,7 +219,11 @@ public final class UsbPortStatus implements Parcelable {
public static final int DATA_STATUS_DISABLED_CONTAMINANT = 1 << 2;
/**
* USB data is disabled due to docking event.
* This flag indicates that some or all data modes are disabled
* due to docking event, and the specific sub-statuses viz.,
* {@link #DATA_STATUS_DISABLED_DOCK_HOST_MODE},
* {@link #DATA_STATUS_DISABLED_DOCK_DEVICE_MODE}
* can be checked for individual modes.
*/
public static final int DATA_STATUS_DISABLED_DOCK = 1 << 3;
@@ -234,6 +238,18 @@ public final class UsbPortStatus implements Parcelable {
*/
public static final int DATA_STATUS_DISABLED_DEBUG = 1 << 5;
/**
* USB host mode is disabled due to docking event.
* {@link #DATA_STATUS_DISABLED_DOCK} will be set as well.
*/
public static final int DATA_STATUS_DISABLED_DOCK_HOST_MODE = 1 << 6;
/**
* USB device mode is disabled due to docking event.
* {@link #DATA_STATUS_DISABLED_DOCK} will be set as well.
*/
public static final int DATA_STATUS_DISABLED_DOCK_DEVICE_MODE = 1 << 7;
/**
* Unknown whether a power brick is connected.
*/
@@ -329,6 +345,8 @@ public final class UsbPortStatus implements Parcelable {
DATA_STATUS_DISABLED_OVERHEAT,
DATA_STATUS_DISABLED_CONTAMINANT,
DATA_STATUS_DISABLED_DOCK,
DATA_STATUS_DISABLED_DOCK_HOST_MODE,
DATA_STATUS_DISABLED_DOCK_DEVICE_MODE,
DATA_STATUS_DISABLED_FORCE,
DATA_STATUS_DISABLED_DEBUG
})
@@ -357,6 +375,20 @@ public final class UsbPortStatus implements Parcelable {
mSupportedRoleCombinations = supportedRoleCombinations;
mContaminantProtectionStatus = contaminantProtectionStatus;
mContaminantDetectionStatus = contaminantDetectionStatus;
// Older implementations that only set the DISABLED_DOCK_MODE will have the other two
// set at the HAL interface level, so the "dock mode only" state shouldn't be visible here.
// But the semantics are ensured here.
int disabledDockModes = (usbDataStatus &
(DATA_STATUS_DISABLED_DOCK_HOST_MODE | DATA_STATUS_DISABLED_DOCK_DEVICE_MODE));
if (disabledDockModes != 0) {
// Set DATA_STATUS_DISABLED_DOCK when one of DATA_STATUS_DISABLED_DOCK_*_MODE is set
usbDataStatus |= DATA_STATUS_DISABLED_DOCK;
} else {
// Clear DATA_STATUS_DISABLED_DOCK when none of DATA_STATUS_DISABLED_DOCK_*_MODE is set
usbDataStatus &= ~DATA_STATUS_DISABLED_DOCK;
}
mUsbDataStatus = usbDataStatus;
mPowerTransferLimited = powerTransferLimited;
mPowerBrickConnectionStatus = powerBrickConnectionStatus;
@@ -472,7 +504,8 @@ public final class UsbPortStatus implements Parcelable {
* {@link #DATA_STATUS_UNKNOWN}, {@link #DATA_STATUS_ENABLED},
* {@link #DATA_STATUS_DISABLED_OVERHEAT}, {@link #DATA_STATUS_DISABLED_CONTAMINANT},
* {@link #DATA_STATUS_DISABLED_DOCK}, {@link #DATA_STATUS_DISABLED_FORCE},
* {@link #DATA_STATUS_DISABLED_DEBUG}
* {@link #DATA_STATUS_DISABLED_DEBUG}, {@link #DATA_STATUS_DISABLED_DOCK_HOST_MODE},
* {@link #DATA_STATUS_DISABLED_DOCK_DEVICE_MODE}
*/
public @UsbDataStatus int getUsbDataStatus() {
return mUsbDataStatus;

View File

@@ -80,38 +80,46 @@ public final class UsbPortAidl implements UsbPortHal {
/**
* USB data status is not known.
*/
public static final int USB_DATA_STATUS_UNKNOWN = 0;
public static final int AIDL_USB_DATA_STATUS_UNKNOWN = 0;
/**
* USB data is enabled.
*/
public static final int USB_DATA_STATUS_ENABLED = 1;
public static final int AIDL_USB_DATA_STATUS_ENABLED = 1;
/**
* USB data is disabled as the port is too hot.
*/
public static final int USB_DATA_STATUS_DISABLED_OVERHEAT = 2;
public static final int AIDL_USB_DATA_STATUS_DISABLED_OVERHEAT = 2;
/**
* USB data is disabled due to contaminated port.
*/
public static final int USB_DATA_STATUS_DISABLED_CONTAMINANT = 3;
public static final int AIDL_USB_DATA_STATUS_DISABLED_CONTAMINANT = 3;
/**
* USB data is disabled due to docking event.
* USB data(both host mode and device mode) is disabled due to docking event.
*/
public static final int USB_DATA_STATUS_DISABLED_DOCK = 4;
public static final int AIDL_USB_DATA_STATUS_DISABLED_DOCK = 4;
/**
* USB data is disabled by
* {@link UsbPort#enableUsbData UsbPort.enableUsbData}.
*/
public static final int USB_DATA_STATUS_DISABLED_FORCE = 5;
public static final int AIDL_USB_DATA_STATUS_DISABLED_FORCE = 5;
/**
* USB data is disabled for debug.
*/
public static final int USB_DATA_STATUS_DISABLED_DEBUG = 6;
public static final int AIDL_USB_DATA_STATUS_DISABLED_DEBUG = 6;
/**
* USB host mode disabled due to docking event.
*/
public static final int AIDL_USB_DATA_STATUS_DISABLED_DOCK_HOST_MODE = 7;
/**
* USB device mode disabled due to docking event.
*/
public static final int AIDL_USB_DATA_STATUS_DISABLED_DOCK_DEVICE_MODE = 8;
public @UsbHalVersion int getUsbHalVersion() throws RemoteException {
synchronized (mLock) {
@@ -529,24 +537,43 @@ public final class UsbPortAidl implements UsbPortHal {
int usbDataStatus = UsbPortStatus.DATA_STATUS_UNKNOWN;
for (int i = 0; i < usbDataStatusHal.length; i++) {
switch (usbDataStatusHal[i]) {
case USB_DATA_STATUS_ENABLED:
case AIDL_USB_DATA_STATUS_ENABLED:
usbDataStatus |= UsbPortStatus.DATA_STATUS_ENABLED;
break;
case USB_DATA_STATUS_DISABLED_OVERHEAT:
case AIDL_USB_DATA_STATUS_DISABLED_OVERHEAT:
usbDataStatus |= UsbPortStatus.DATA_STATUS_DISABLED_OVERHEAT;
break;
case USB_DATA_STATUS_DISABLED_CONTAMINANT:
case AIDL_USB_DATA_STATUS_DISABLED_CONTAMINANT:
usbDataStatus |= UsbPortStatus.DATA_STATUS_DISABLED_CONTAMINANT;
break;
case USB_DATA_STATUS_DISABLED_DOCK:
/* Indicates both host and gadget mode being disabled. */
case AIDL_USB_DATA_STATUS_DISABLED_DOCK:
usbDataStatus |= UsbPortStatus.DATA_STATUS_DISABLED_DOCK;
usbDataStatus |= UsbPortStatus.DATA_STATUS_DISABLED_DOCK_HOST_MODE;
usbDataStatus |= UsbPortStatus.DATA_STATUS_DISABLED_DOCK_DEVICE_MODE;
break;
case USB_DATA_STATUS_DISABLED_FORCE:
case AIDL_USB_DATA_STATUS_DISABLED_FORCE:
usbDataStatus |= UsbPortStatus.DATA_STATUS_DISABLED_FORCE;
break;
case USB_DATA_STATUS_DISABLED_DEBUG:
case AIDL_USB_DATA_STATUS_DISABLED_DEBUG:
usbDataStatus |= UsbPortStatus.DATA_STATUS_DISABLED_DEBUG;
break;
/*
* Set DATA_STATUS_DISABLED_DOCK when DATA_STATUS_DISABLED_DOCK_HOST_MODE
* is set.
*/
case AIDL_USB_DATA_STATUS_DISABLED_DOCK_HOST_MODE:
usbDataStatus |= UsbPortStatus.DATA_STATUS_DISABLED_DOCK_HOST_MODE;
usbDataStatus |= UsbPortStatus.DATA_STATUS_DISABLED_DOCK;
break;
/*
* Set DATA_STATUS_DISABLED_DOCK when DATA_STATUS_DISABLED_DEVICE_DOCK
* is set.
*/
case AIDL_USB_DATA_STATUS_DISABLED_DOCK_DEVICE_MODE:
usbDataStatus |= UsbPortStatus.DATA_STATUS_DISABLED_DOCK_DEVICE_MODE;
usbDataStatus |= UsbPortStatus.DATA_STATUS_DISABLED_DOCK;
break;
default:
usbDataStatus |= UsbPortStatus.DATA_STATUS_UNKNOWN;
}