Loading services/java/com/android/server/usb/UsbDeviceManager.java +26 −6 Original line number Diff line number Diff line Loading @@ -98,6 +98,13 @@ public class UsbDeviceManager { // which need debouncing. private static final int UPDATE_DELAY = 1000; // Time we received a request to enter USB accessory mode private long mAccessoryModeRequestTime = 0; // Timeout for entering USB request mode. // Request is cancelled if host does not configure device within 10 seconds. private static final int ACCESSORY_REQUEST_TIMEOUT = 10 * 1000; private static final String BOOT_MODE_PROPERTY = "ro.bootmode"; private UsbHandler mHandler; Loading Loading @@ -205,6 +212,8 @@ public class UsbDeviceManager { } private void startAccessoryMode() { if (!mHasUsbAccessory) return; mAccessoryStrings = nativeGetAccessoryStrings(); boolean enableAudio = (nativeGetAudioMode() == AUDIO_MODE_SOURCE); // don't start accessory mode if our mandatory strings have not been set Loading @@ -223,6 +232,7 @@ public class UsbDeviceManager { } if (functions != null) { mAccessoryModeRequestTime = SystemClock.elapsedRealtime(); setCurrentFunctions(functions, false); } } Loading Loading @@ -456,6 +466,8 @@ public class UsbDeviceManager { } private void setEnabledFunctions(String functions, boolean makeDefault) { if (DEBUG) Slog.d(TAG, "setEnabledFunctions " + functions + " makeDefault: " + makeDefault); // Do not update persystent.sys.usb.config if the device is booted up // with OEM specific mode. Loading Loading @@ -517,9 +529,17 @@ public class UsbDeviceManager { } private void updateCurrentAccessory() { if (!mHasUsbAccessory) return; // We are entering accessory mode if we have received a request from the host // and the request has not timed out yet. boolean enteringAccessoryMode = mAccessoryModeRequestTime > 0 && SystemClock.elapsedRealtime() < mAccessoryModeRequestTime + ACCESSORY_REQUEST_TIMEOUT; if (mConfigured && enteringAccessoryMode) { // successfully entered accessory mode mAccessoryModeRequestTime = 0; if (mConfigured) { if (mAccessoryStrings != null) { mCurrentAccessory = new UsbAccessory(mAccessoryStrings); Slog.d(TAG, "entering USB accessory mode: " + mCurrentAccessory); Loading @@ -530,7 +550,7 @@ public class UsbDeviceManager { } else { Slog.e(TAG, "nativeGetAccessoryStrings failed"); } } else if (!mConnected) { } else if (!enteringAccessoryMode) { // make sure accessory mode is off // and restore default functions Slog.d(TAG, "exited USB accessory mode"); Loading Loading @@ -560,6 +580,8 @@ public class UsbDeviceManager { } } if (DEBUG) Slog.d(TAG, "broadcasting " + intent + " connected: " + mConnected + " configured: " + mConfigured); mContext.sendStickyBroadcastAsUser(intent, UserHandle.ALL); } Loading Loading @@ -599,9 +621,7 @@ public class UsbDeviceManager { if (containsFunction(mCurrentFunctions, UsbManager.USB_FUNCTION_ACCESSORY)) { updateCurrentAccessory(); } if (!mConnected) { } else if (!mConnected) { // restore defaults when USB is disconnected setEnabledFunctions(mDefaultFunctions, false); } Loading Loading
services/java/com/android/server/usb/UsbDeviceManager.java +26 −6 Original line number Diff line number Diff line Loading @@ -98,6 +98,13 @@ public class UsbDeviceManager { // which need debouncing. private static final int UPDATE_DELAY = 1000; // Time we received a request to enter USB accessory mode private long mAccessoryModeRequestTime = 0; // Timeout for entering USB request mode. // Request is cancelled if host does not configure device within 10 seconds. private static final int ACCESSORY_REQUEST_TIMEOUT = 10 * 1000; private static final String BOOT_MODE_PROPERTY = "ro.bootmode"; private UsbHandler mHandler; Loading Loading @@ -205,6 +212,8 @@ public class UsbDeviceManager { } private void startAccessoryMode() { if (!mHasUsbAccessory) return; mAccessoryStrings = nativeGetAccessoryStrings(); boolean enableAudio = (nativeGetAudioMode() == AUDIO_MODE_SOURCE); // don't start accessory mode if our mandatory strings have not been set Loading @@ -223,6 +232,7 @@ public class UsbDeviceManager { } if (functions != null) { mAccessoryModeRequestTime = SystemClock.elapsedRealtime(); setCurrentFunctions(functions, false); } } Loading Loading @@ -456,6 +466,8 @@ public class UsbDeviceManager { } private void setEnabledFunctions(String functions, boolean makeDefault) { if (DEBUG) Slog.d(TAG, "setEnabledFunctions " + functions + " makeDefault: " + makeDefault); // Do not update persystent.sys.usb.config if the device is booted up // with OEM specific mode. Loading Loading @@ -517,9 +529,17 @@ public class UsbDeviceManager { } private void updateCurrentAccessory() { if (!mHasUsbAccessory) return; // We are entering accessory mode if we have received a request from the host // and the request has not timed out yet. boolean enteringAccessoryMode = mAccessoryModeRequestTime > 0 && SystemClock.elapsedRealtime() < mAccessoryModeRequestTime + ACCESSORY_REQUEST_TIMEOUT; if (mConfigured && enteringAccessoryMode) { // successfully entered accessory mode mAccessoryModeRequestTime = 0; if (mConfigured) { if (mAccessoryStrings != null) { mCurrentAccessory = new UsbAccessory(mAccessoryStrings); Slog.d(TAG, "entering USB accessory mode: " + mCurrentAccessory); Loading @@ -530,7 +550,7 @@ public class UsbDeviceManager { } else { Slog.e(TAG, "nativeGetAccessoryStrings failed"); } } else if (!mConnected) { } else if (!enteringAccessoryMode) { // make sure accessory mode is off // and restore default functions Slog.d(TAG, "exited USB accessory mode"); Loading Loading @@ -560,6 +580,8 @@ public class UsbDeviceManager { } } if (DEBUG) Slog.d(TAG, "broadcasting " + intent + " connected: " + mConnected + " configured: " + mConfigured); mContext.sendStickyBroadcastAsUser(intent, UserHandle.ALL); } Loading Loading @@ -599,9 +621,7 @@ public class UsbDeviceManager { if (containsFunction(mCurrentFunctions, UsbManager.USB_FUNCTION_ACCESSORY)) { updateCurrentAccessory(); } if (!mConnected) { } else if (!mConnected) { // restore defaults when USB is disconnected setEnabledFunctions(mDefaultFunctions, false); } Loading