Merge "Check for preexisting flag before enabling the gadget"
This commit is contained in:
committed by
Android (Google) Code Review
commit
d1b8392a5b
@@ -153,6 +153,7 @@ public class UsbDeviceManager implements ActivityTaskManagerInternal.ScreenObser
|
||||
private static final int MSG_SET_FUNCTIONS_TIMEOUT = 15;
|
||||
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 AUDIO_MODE_SOURCE = 1;
|
||||
|
||||
@@ -1708,10 +1709,16 @@ public class UsbDeviceManager implements ActivityTaskManagerInternal.ScreenObser
|
||||
protected static final String CTL_STOP = "ctl.stop";
|
||||
|
||||
/**
|
||||
* Adb natvie daemon
|
||||
* Adb native daemon.
|
||||
*/
|
||||
protected static final String ADBD = "adbd";
|
||||
|
||||
/**
|
||||
* Gadget HAL fully qualified instance name for registering for ServiceNotification.
|
||||
*/
|
||||
protected static final String GADGET_HAL_FQ_NAME =
|
||||
"android.hardware.usb.gadget@1.0::IUsbGadget";
|
||||
|
||||
protected boolean mCurrentUsbFunctionsRequested;
|
||||
|
||||
UsbHandlerHal(Looper looper, Context context, UsbDeviceManager deviceManager,
|
||||
@@ -1721,8 +1728,7 @@ public class UsbDeviceManager implements ActivityTaskManagerInternal.ScreenObser
|
||||
ServiceNotification serviceNotification = new ServiceNotification();
|
||||
|
||||
boolean ret = IServiceManager.getService()
|
||||
.registerForNotifications("android.hardware.usb.gadget@1.0::IUsbGadget",
|
||||
"", serviceNotification);
|
||||
.registerForNotifications(GADGET_HAL_FQ_NAME, "", serviceNotification);
|
||||
if (!ret) {
|
||||
Slog.e(TAG, "Failed to register usb gadget service start notification");
|
||||
return;
|
||||
@@ -1764,20 +1770,12 @@ public class UsbDeviceManager implements ActivityTaskManagerInternal.ScreenObser
|
||||
@Override
|
||||
public void onRegistration(String fqName, String name, boolean preexisting) {
|
||||
Slog.i(TAG, "Usb gadget hal service started " + fqName + " " + name);
|
||||
synchronized (mGadgetProxyLock) {
|
||||
try {
|
||||
mGadgetProxy = IUsbGadget.getService();
|
||||
mGadgetProxy.linkToDeath(new UsbGadgetDeathRecipient(),
|
||||
USB_GADGET_HAL_DEATH_COOKIE);
|
||||
if (!mCurrentFunctionsApplied && !mCurrentUsbFunctionsRequested) {
|
||||
setEnabledFunctions(mCurrentFunctions, false);
|
||||
}
|
||||
} catch (NoSuchElementException e) {
|
||||
Slog.e(TAG, "Usb gadget hal not found", e);
|
||||
} catch (RemoteException e) {
|
||||
Slog.e(TAG, "Usb Gadget hal not responding", e);
|
||||
}
|
||||
if (!fqName.equals(GADGET_HAL_FQ_NAME)) {
|
||||
Slog.e(TAG, "fqName does not match");
|
||||
return;
|
||||
}
|
||||
|
||||
sendMessage(MSG_GADGET_HAL_REGISTERED, preexisting);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1815,6 +1813,23 @@ public class UsbDeviceManager implements ActivityTaskManagerInternal.ScreenObser
|
||||
setEnabledFunctions(UsbManager.FUNCTION_NONE, !isAdbEnabled());
|
||||
}
|
||||
break;
|
||||
case MSG_GADGET_HAL_REGISTERED:
|
||||
boolean preexisting = msg.arg1 == 1;
|
||||
synchronized (mGadgetProxyLock) {
|
||||
try {
|
||||
mGadgetProxy = IUsbGadget.getService();
|
||||
mGadgetProxy.linkToDeath(new UsbGadgetDeathRecipient(),
|
||||
USB_GADGET_HAL_DEATH_COOKIE);
|
||||
if (!mCurrentFunctionsApplied && !preexisting) {
|
||||
setEnabledFunctions(mCurrentFunctions, false);
|
||||
}
|
||||
} catch (NoSuchElementException e) {
|
||||
Slog.e(TAG, "Usb gadget hal not found", e);
|
||||
} catch (RemoteException e) {
|
||||
Slog.e(TAG, "Usb Gadget hal not responding", e);
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
super.handleMessage(msg);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user