diff options
author | Howard Yen <howardyen@google.com> | 2020-01-22 20:56:44 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2020-01-22 20:56:44 +0000 |
commit | ba5a5356407631c761fcf0bf67fc986588c9b33b (patch) | |
tree | 45bf698a9555578a009a7aa5e97ef2c2b101453f /services/usb/java | |
parent | bfbad6d3e00e2ca451ce04158cc7144ca2568c92 (diff) | |
parent | 5665bacc2258d434120bcbc28e2caacb85cb5cf4 (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.java | 29 | ||||
-rw-r--r-- | services/usb/java/com/android/server/usb/UsbService.java | 13 |
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); |