Extend USB compliance warning API
Add USB feature flags and guard the new compliance warning APIs.
Test: atest VtsAidlUsbTargetTest
atest CtsUsbManagerTestCases
Bug: 296119135
Bug: 300340959
Change-Id: Iffca537a85cb03ab5eeb2ad331a145ef1d2b848a
diff --git a/services/usb/Android.bp b/services/usb/Android.bp
index 9f3b52e..1dc5dcf 100644
--- a/services/usb/Android.bp
+++ b/services/usb/Android.bp
@@ -33,6 +33,6 @@
"android.hardware.usb-V1.1-java",
"android.hardware.usb-V1.2-java",
"android.hardware.usb-V1.3-java",
- "android.hardware.usb-V2-java",
+ "android.hardware.usb-V3-java",
],
}
diff --git a/services/usb/java/com/android/server/usb/UsbService.java b/services/usb/java/com/android/server/usb/UsbService.java
index 35e2fcf..fb13b33 100644
--- a/services/usb/java/com/android/server/usb/UsbService.java
+++ b/services/usb/java/com/android/server/usb/UsbService.java
@@ -1285,12 +1285,17 @@
pw.println(" dumpsys usb add-port \"matrix\" dual --compliance-warnings");
pw.println(" dumpsys usb set-compliance-reasons \"matrix\" <reason-list>");
pw.println(" dumpsys usb clear-compliance-reasons \"matrix\"");
- pw.println("<reason-list> is expected to be formatted as \"1, ..., 4\"");
+ pw.println("<reason-list> is expected to be formatted as \"1, ..., N\"");
pw.println("with reasons that need to be simulated.");
pw.println(" 1: other");
pw.println(" 2: debug accessory");
pw.println(" 3: bc12");
pw.println(" 4: missing rp");
+ pw.println(" 5: input power limited");
+ pw.println(" 6: missing data lines");
+ pw.println(" 7: enumeration fail");
+ pw.println(" 8: flaky connection");
+ pw.println(" 9: unreliable io");
pw.println();
pw.println("Example simulate DisplayPort Alt Mode Changes:");
pw.println(" dumpsys usb add-port \"matrix\" dual --displayport");
diff --git a/services/usb/java/com/android/server/usb/hal/port/UsbPortAidl.java b/services/usb/java/com/android/server/usb/hal/port/UsbPortAidl.java
index c7a7a9b..45b623b 100644
--- a/services/usb/java/com/android/server/usb/hal/port/UsbPortAidl.java
+++ b/services/usb/java/com/android/server/usb/hal/port/UsbPortAidl.java
@@ -39,6 +39,7 @@
import android.hardware.usb.AltModeData;
import android.hardware.usb.AltModeData.DisplayPortAltModeData;
import android.hardware.usb.DisplayPortAltModePinAssignment;
+import android.hardware.usb.flags.Flags;
import android.os.Build;
import android.os.ServiceManager;
import android.os.IBinder;
@@ -593,11 +594,21 @@
for (int warning : complianceWarnings) {
if (newComplianceWarnings.indexOf(warning) == -1
&& warning >= UsbPortStatus.COMPLIANCE_WARNING_OTHER) {
- // ComplianceWarnings range from [1, 4] in Android U
- if (warning > UsbPortStatus.COMPLIANCE_WARNING_MISSING_RP) {
- newComplianceWarnings.add(UsbPortStatus.COMPLIANCE_WARNING_OTHER);
+ if (Flags.enableUsbDataComplianceWarning()) {
+ // ComplianceWarnings range extends to [1, 9] when feature flag is on
+ if (warning
+ > UsbPortStatus.COMPLIANCE_WARNING_UNRELIABLE_IO) {
+ newComplianceWarnings.add(UsbPortStatus.COMPLIANCE_WARNING_OTHER);
+ } else {
+ newComplianceWarnings.add(warning);
+ }
} else {
- newComplianceWarnings.add(warning);
+ // ComplianceWarnings range from [1, 4] in Android U
+ if (warning > UsbPortStatus.COMPLIANCE_WARNING_MISSING_RP) {
+ newComplianceWarnings.add(UsbPortStatus.COMPLIANCE_WARNING_OTHER);
+ } else {
+ newComplianceWarnings.add(warning);
+ }
}
}
}