diff options
author | Wang Han <416810799@qq.com> | 2018-09-09 11:27:15 +0800 |
---|---|---|
committer | alk3pInjection <webmaster@raspii.tech> | 2022-05-02 09:56:20 +0800 |
commit | 4b1911072beb6acb6f5f57fe7dbfd69e32cd6b43 (patch) | |
tree | afaeba9746c4667aabdfbfe0319c30e72047208c | |
parent | a06fdba7a61da71f28ea0437096ad4e60babc36a (diff) |
Settings: Hide unsupported USB modes automatically
* The roles are advertised by USB HAL so we can check for their status
Change-Id: I5933d1a03f573af08b00039850173329b293448a
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 |