Merge "Do not debounce disconnect while resetUsbGadget" into tm-qpr-dev-plus-aosp

This commit is contained in:
Badhri Jagan Sridharan
2023-01-19 01:21:20 +00:00
committed by Android (Google) Code Review

View File

@@ -535,7 +535,6 @@ public class UsbDeviceManager implements ActivityTaskManagerInternal.ScreenObser
private boolean mInHostModeWithNoAccessoryConnected;
private boolean mSourcePower;
private boolean mSinkPower;
private boolean mConfigured;
private boolean mAudioAccessoryConnected;
private boolean mAudioAccessorySupported;
@@ -568,7 +567,12 @@ public class UsbDeviceManager implements ActivityTaskManagerInternal.ScreenObser
private final UsbPermissionManager mPermissionManager;
private NotificationManager mNotificationManager;
/**
* Do not debounce for the first disconnect after resetUsbGadget.
*/
protected boolean mResetUsbGadgetDisableDebounce;
protected boolean mConnected;
protected boolean mConfigured;
protected long mScreenUnlockedFunctions;
protected boolean mBootCompleted;
protected boolean mCurrentFunctionsApplied;
@@ -713,15 +717,29 @@ public class UsbDeviceManager implements ActivityTaskManagerInternal.ScreenObser
Slog.e(TAG, "unknown state " + state);
return;
}
if (configured == 0) removeMessages(MSG_UPDATE_STATE);
if (connected == 1) removeMessages(MSG_FUNCTION_SWITCH_TIMEOUT);
Message msg = Message.obtain(this, MSG_UPDATE_STATE);
msg.arg1 = connected;
msg.arg2 = configured;
// debounce disconnects to avoid problems bringing up USB tethering
sendMessageDelayed(msg,
if (DEBUG) {
Slog.i(TAG, "mResetUsbGadgetDisableDebounce:" + mResetUsbGadgetDisableDebounce
+ " connected:" + connected + "configured:" + configured);
}
if (mResetUsbGadgetDisableDebounce) {
// Do not debounce disconnect after resetUsbGadget.
sendMessage(msg);
if (connected == 1) mResetUsbGadgetDisableDebounce = false;
} else {
if (configured == 0) {
removeMessages(MSG_UPDATE_STATE);
if (DEBUG) Slog.i(TAG, "removeMessages MSG_UPDATE_STATE");
}
if (connected == 1) removeMessages(MSG_FUNCTION_SWITCH_TIMEOUT);
// debounce disconnects to avoid problems bringing up USB tethering.
sendMessageDelayed(msg,
(connected == 0) ? (mScreenLocked ? DEVICE_STATE_UPDATE_DELAY
: DEVICE_STATE_UPDATE_DELAY_EXT) : 0);
}
}
public void updateHostState(UsbPort port, UsbPortStatus status) {
@@ -971,7 +989,10 @@ public class UsbDeviceManager implements ActivityTaskManagerInternal.ScreenObser
int operationId = sUsbOperationCount.incrementAndGet();
mConnected = (msg.arg1 == 1);
mConfigured = (msg.arg2 == 1);
if (DEBUG) {
Slog.i(TAG, "handleMessage MSG_UPDATE_STATE " + "mConnected:" + mConnected
+ " mConfigured:" + mConfigured);
}
updateUsbNotification(false);
updateAdbNotification(false);
if (mBootCompleted) {
@@ -2116,9 +2137,16 @@ public class UsbDeviceManager implements ActivityTaskManagerInternal.ScreenObser
}
try {
// MSG_ACCESSORY_MODE_ENTER_TIMEOUT has to be removed to allow exiting
// AOAP mode during resetUsbGadget.
removeMessages(MSG_ACCESSORY_MODE_ENTER_TIMEOUT);
if (mConfigured) {
mResetUsbGadgetDisableDebounce = true;
}
mUsbGadgetHal.reset();
} catch (Exception e) {
Slog.e(TAG, "reset Usb Gadget failed", e);
mResetUsbGadgetDisableDebounce = false;
}
}
break;