diff --git a/services/usb/java/com/android/server/usb/UsbPortManager.java b/services/usb/java/com/android/server/usb/UsbPortManager.java index 4bb9de532360b..1399458f0eca8 100644 --- a/services/usb/java/com/android/server/usb/UsbPortManager.java +++ b/services/usb/java/com/android/server/usb/UsbPortManager.java @@ -682,7 +682,10 @@ public class UsbPortManager { mHandler.sendMessage(message); } - public void addSimulatedPort(String portId, int supportedModes, IndentingPrintWriter pw) { + public void addSimulatedPort(String portId, int supportedModes, + boolean supportsComplianceWarnings, + IndentingPrintWriter pw) { + synchronized (mLock) { if (mSimulatedPorts.containsKey(portId)) { pw.println("Port with same name already exists. Please remove it first."); @@ -692,7 +695,25 @@ public class UsbPortManager { pw.println("Adding simulated port: portId=" + portId + ", supportedModes=" + UsbPort.modeToString(supportedModes)); mSimulatedPorts.put(portId, - new RawPortInfo(portId, supportedModes)); + new RawPortInfo( + portId, + supportedModes, + UsbPortStatus.CONTAMINANT_PROTECTION_NONE, + UsbPortStatus.MODE_NONE, + false, + UsbPortStatus.POWER_ROLE_NONE, + false, + UsbPortStatus.DATA_ROLE_NONE, + false, + false, + UsbPortStatus.CONTAMINANT_PROTECTION_NONE, + false, + UsbPortStatus.CONTAMINANT_DETECTION_NOT_SUPPORTED, + UsbPortStatus.DATA_STATUS_UNKNOWN, + false, + UsbPortStatus.POWER_BRICK_STATUS_UNKNOWN, + supportsComplianceWarnings, + new int[] {})); updatePortsLocked(pw, null); } } diff --git a/services/usb/java/com/android/server/usb/UsbService.java b/services/usb/java/com/android/server/usb/UsbService.java index d09f729bf4ea4..6eb04d94e7570 100644 --- a/services/usb/java/com/android/server/usb/UsbService.java +++ b/services/usb/java/com/android/server/usb/UsbService.java @@ -987,9 +987,12 @@ public class UsbService extends IUsbManager.Stub { mPortManager.dump(new DualDumpOutputStream(new IndentingPrintWriter(pw, " ")), "", 0); } - } else if ("add-port".equals(args[0]) && args.length == 3) { + } else if ("add-port".equals(args[0]) && args.length >= 3) { final String portId = args[1]; final int supportedModes; + + int i; + boolean supportsComplianceWarnings = false; switch (args[2]) { case "ufp": supportedModes = MODE_UFP; @@ -1007,8 +1010,19 @@ public class UsbService extends IUsbManager.Stub { pw.println("Invalid mode: " + args[2]); return; } + for (i=3; i "); - pw.println(" add-port "); + pw.println(" add-port "); + pw.println(" include:"); + pw.println(" --compliance-warnings: enables compliance warnings on port"); pw.println(" connect-port "); pw.println(" (add ? suffix if mode, power role, or data role can be changed)"); pw.println(" disconnect-port "); @@ -1132,7 +1148,7 @@ public class UsbService extends IUsbManager.Stub { pw.println(" dumpsys usb set-port-roles \"default\" source device"); pw.println(); pw.println("Example USB type C port simulation with full capabilities:"); - pw.println(" dumpsys usb add-port \"matrix\" dual"); + pw.println(" dumpsys usb add-port \"matrix\" dual --compliance-warnings"); pw.println(" dumpsys usb connect-port \"matrix\" ufp? sink? device?"); pw.println(" dumpsys usb ports"); pw.println(" dumpsys usb disconnect-port \"matrix\""); @@ -1160,15 +1176,15 @@ public class UsbService extends IUsbManager.Stub { pw.println(" dumpsys usb set-contaminant-status \"matrix\" false"); pw.println(); pw.println("Example simulate compliance warnings:"); - pw.println(" dumpsys usb add-port \"matrix\" dual"); + pw.println(" dumpsys usb add-port \"matrix\" dual --compliance-warnings"); pw.println(" dumpsys usb set-compliance-reasons \"matrix\" "); pw.println(" dumpsys usb clear-compliance-reasons \"matrix\""); pw.println(" is expected to be formatted as \"1, ..., 4\""); pw.println("with reasons that need to be simulated."); - pw.println(" 1: debug accessory"); - pw.println(" 2: bc12"); - pw.println(" 3: missing rp"); - pw.println(" 4: type c"); + pw.println(" 1: other"); + pw.println(" 2: debug accessory"); + pw.println(" 3: bc12"); + pw.println(" 4: missing rp"); pw.println(); pw.println("Example USB device descriptors:"); pw.println(" dumpsys usb dump-descriptors -dump-short");