summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWang Han <416810799@qq.com>2018-09-09 11:27:15 +0800
committeralk3pInjection <webmaster@raspii.tech>2022-05-02 09:56:20 +0800
commit4b1911072beb6acb6f5f57fe7dbfd69e32cd6b43 (patch)
treeafaeba9746c4667aabdfbfe0319c30e72047208c
parenta06fdba7a61da71f28ea0437096ad4e60babc36a (diff)
Settings: Hide unsupported USB modes automatically
* The roles are advertised by USB HAL so we can check for their status Change-Id: I5933d1a03f573af08b00039850173329b293448a
-rw-r--r--src/com/android/settings/connecteddevice/usb/UsbBackend.java24
-rw-r--r--src/com/android/settings/connecteddevice/usb/UsbDetailsDataRoleController.java3
-rw-r--r--src/com/android/settings/connecteddevice/usb/UsbDetailsPowerRoleController.java3
3 files changed, 28 insertions, 2 deletions
diff --git a/src/com/android/settings/connecteddevice/usb/UsbBackend.java b/src/com/android/settings/connecteddevice/usb/UsbBackend.java
index 15922005d4..d54851709b 100644
--- a/src/com/android/settings/connecteddevice/usb/UsbBackend.java
+++ b/src/com/android/settings/connecteddevice/usb/UsbBackend.java
@@ -164,6 +164,30 @@ public class UsbBackend {
&& mPortStatus.isRoleCombinationSupported(POWER_ROLE_SOURCE, DATA_ROLE_HOST);
}
+ public boolean isSingleDataRoleSupported() {
+ return mPort != null && mPortStatus != null
+ && ((!mPortStatus
+ .isRoleCombinationSupported(POWER_ROLE_SINK, DATA_ROLE_HOST)
+ && !mPortStatus
+ .isRoleCombinationSupported(POWER_ROLE_SOURCE, DATA_ROLE_HOST))
+ || (!mPortStatus
+ .isRoleCombinationSupported(POWER_ROLE_SINK, DATA_ROLE_DEVICE)
+ && !mPortStatus
+ .isRoleCombinationSupported(POWER_ROLE_SOURCE, DATA_ROLE_DEVICE)));
+ }
+
+ public boolean isSinglePowerRoleSupported() {
+ return mPort != null && mPortStatus != null
+ && ((!mPortStatus
+ .isRoleCombinationSupported(POWER_ROLE_SINK, DATA_ROLE_DEVICE)
+ && !mPortStatus
+ .isRoleCombinationSupported(POWER_ROLE_SINK, DATA_ROLE_HOST))
+ || (!mPortStatus
+ .isRoleCombinationSupported(POWER_ROLE_SOURCE, DATA_ROLE_DEVICE)
+ && !mPortStatus
+ .isRoleCombinationSupported(POWER_ROLE_SOURCE, DATA_ROLE_HOST)));
+ }
+
public static String usbFunctionsToString(long functions) {
// TODO replace with UsbManager.usbFunctionsToString once supported by Roboelectric
return Long.toBinaryString(functions);
diff --git a/src/com/android/settings/connecteddevice/usb/UsbDetailsDataRoleController.java b/src/com/android/settings/connecteddevice/usb/UsbDetailsDataRoleController.java
index 411bc1dce8..4f024a7074 100644
--- a/src/com/android/settings/connecteddevice/usb/UsbDetailsDataRoleController.java
+++ b/src/com/android/settings/connecteddevice/usb/UsbDetailsDataRoleController.java
@@ -113,7 +113,8 @@ public class UsbDetailsDataRoleController extends UsbDetailsController
@Override
public boolean isAvailable() {
- return !Utils.isMonkeyRunning();
+ return !Utils.isMonkeyRunning()
+ && !mUsbBackend.isSingleDataRoleSupported();
}
@Override
diff --git a/src/com/android/settings/connecteddevice/usb/UsbDetailsPowerRoleController.java b/src/com/android/settings/connecteddevice/usb/UsbDetailsPowerRoleController.java
index 13b3076e6f..e8ff68411c 100644
--- a/src/com/android/settings/connecteddevice/usb/UsbDetailsPowerRoleController.java
+++ b/src/com/android/settings/connecteddevice/usb/UsbDetailsPowerRoleController.java
@@ -123,7 +123,8 @@ public class UsbDetailsPowerRoleController extends UsbDetailsController
@Override
public boolean isAvailable() {
- return !Utils.isMonkeyRunning();
+ return !Utils.isMonkeyRunning()
+ && !mUsbBackend.isSinglePowerRoleSupported();
}
@Override