Add additional status flags to UsbDataStatus
This change introduces two new values to UsbDataStatus interface to denote status of Usb data. Previously, UsbDataStatus interface contained DISABLED_DOCK which indicated that USB data is disabled due to a docking event. Depending on the hardware design, some architectures might only disable USB host mode or USB gadget mode selectively when docked. This change adds interface values to denote them. DISABLED_DOCK_HOST_MODE indicates USB host mode disabled due to docking event. DISABLED_DOCK_DEVICE_MODE indicates device mode disabled due to docking event. DISABLED_DOCK needs to be set when either of DISABLED_DOCK_HOST_MODE or DISABLED_DOCK_DEVICE_MODE is set. Bug: 250522538 Change-Id: Icaca2d2b704661261905bfaf79a03808ddc39895
This commit is contained in:
@@ -5758,6 +5758,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
|
||||
|
||||
@@ -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(", $", "");
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user