summaryrefslogtreecommitdiff
path: root/services/usb/java
diff options
context:
space:
mode:
authorHoward Yen <howardyen@google.com>2020-01-22 20:56:44 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2020-01-22 20:56:44 +0000
commitba5a5356407631c761fcf0bf67fc986588c9b33b (patch)
tree45bf698a9555578a009a7aa5e97ef2c2b101453f /services/usb/java
parentbfbad6d3e00e2ca451ce04158cc7144ca2568c92 (diff)
parent5665bacc2258d434120bcbc28e2caacb85cb5cf4 (diff)
Merge changes from topic "usb_gadget_reset"
* changes: Add svc usb resetUsbGadget method Support USB Gadget V1.1 HAL
Diffstat (limited to 'services/usb/java')
-rw-r--r--services/usb/java/com/android/server/usb/UsbDeviceManager.java29
-rw-r--r--services/usb/java/com/android/server/usb/UsbService.java13
2 files changed, 42 insertions, 0 deletions
diff --git a/services/usb/java/com/android/server/usb/UsbDeviceManager.java b/services/usb/java/com/android/server/usb/UsbDeviceManager.java
index 9f3b07b951be..6407ec76958e 100644
--- a/services/usb/java/com/android/server/usb/UsbDeviceManager.java
+++ b/services/usb/java/com/android/server/usb/UsbDeviceManager.java
@@ -161,6 +161,7 @@ public class UsbDeviceManager implements ActivityTaskManagerInternal.ScreenObser
private static final int MSG_GET_CURRENT_USB_FUNCTIONS = 16;
private static final int MSG_FUNCTION_SWITCH_TIMEOUT = 17;
private static final int MSG_GADGET_HAL_REGISTERED = 18;
+ private static final int MSG_RESET_USB_GADGET = 19;
private static final int AUDIO_MODE_SOURCE = 1;
@@ -1846,6 +1847,23 @@ public class UsbDeviceManager implements ActivityTaskManagerInternal.ScreenObser
}
}
break;
+ case MSG_RESET_USB_GADGET:
+ synchronized (mGadgetProxyLock) {
+ if (mGadgetProxy == null) {
+ Slog.e(TAG, "reset Usb Gadget mGadgetProxy is null");
+ break;
+ }
+
+ try {
+ android.hardware.usb.gadget.V1_1.IUsbGadget gadgetProxy =
+ android.hardware.usb.gadget.V1_1.IUsbGadget
+ .castFrom(mGadgetProxy);
+ gadgetProxy.reset();
+ } catch (RemoteException e) {
+ Slog.e(TAG, "reset Usb Gadget failed", e);
+ }
+ }
+ break;
default:
super.handleMessage(msg);
}
@@ -2054,6 +2072,17 @@ public class UsbDeviceManager implements ActivityTaskManagerInternal.ScreenObser
mHandler.sendMessage(MSG_SET_SCREEN_UNLOCKED_FUNCTIONS, functions);
}
+ /**
+ * Resets the USB Gadget.
+ */
+ public void resetUsbGadget() {
+ if (DEBUG) {
+ Slog.d(TAG, "reset Usb Gadget");
+ }
+
+ mHandler.sendMessage(MSG_RESET_USB_GADGET, null);
+ }
+
private void onAdbEnabled(boolean enabled) {
mHandler.sendMessage(MSG_ENABLE_ADB, enabled);
}
diff --git a/services/usb/java/com/android/server/usb/UsbService.java b/services/usb/java/com/android/server/usb/UsbService.java
index 0a03f14b5e6b..61f2c50ccecf 100644
--- a/services/usb/java/com/android/server/usb/UsbService.java
+++ b/services/usb/java/com/android/server/usb/UsbService.java
@@ -638,6 +638,19 @@ public class UsbService extends IUsbManager.Stub {
}
@Override
+ public void resetUsbGadget() {
+ mContext.enforceCallingOrSelfPermission(android.Manifest.permission.MANAGE_USB, null);
+ Preconditions.checkNotNull(mDeviceManager, "DeviceManager must not be null");
+
+ final long ident = Binder.clearCallingIdentity();
+ try {
+ mDeviceManager.resetUsbGadget();
+ } finally {
+ Binder.restoreCallingIdentity(ident);
+ }
+ }
+
+ @Override
public List<ParcelableUsbPort> getPorts() {
mContext.enforceCallingOrSelfPermission(android.Manifest.permission.MANAGE_USB, null);