Loading wifi/java/android/net/wifi/WifiStateMachine.java +28 −11 Original line number Diff line number Diff line Loading @@ -2730,11 +2730,30 @@ public class WifiStateMachine extends HierarchicalStateMachine { class DisconnectedState extends HierarchicalState { private boolean mAlarmEnabled = false; private long mScanIntervalMs; private void setScanAlarm(boolean enabled) { if (enabled == mAlarmEnabled) return; if (enabled) { mAlarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + mScanIntervalMs, mScanIntervalMs, mScanIntent); mAlarmEnabled = true; } else { mAlarmManager.cancel(mScanIntent); mAlarmEnabled = false; } } @Override public void enter() { if (DBG) Log.d(TAG, getName() + "\n"); EventLog.writeEvent(EVENTLOG_WIFI_STATE_CHANGED, getName()); mScanIntervalMs = Settings.Secure.getLong(mContext.getContentResolver(), Settings.Secure.WIFI_SCAN_INTERVAL_MS, DEFAULT_SCAN_INTERVAL_MS); /* * We initiate background scanning if it is enabled, otherwise we * initiate an infrequent scan that wakes up the device to ensure Loading @@ -2751,12 +2770,7 @@ public class WifiStateMachine extends HierarchicalStateMachine { WifiNative.enableBackgroundScan(true); } } else { long scanMs = Settings.Secure.getLong(mContext.getContentResolver(), Settings.Secure.WIFI_SCAN_INTERVAL_MS, DEFAULT_SCAN_INTERVAL_MS); mAlarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + scanMs, scanMs, mScanIntent); mAlarmEnabled = true; setScanAlarm(true); } } @Override Loading @@ -2774,7 +2788,13 @@ public class WifiStateMachine extends HierarchicalStateMachine { break; case CMD_ENABLE_BACKGROUND_SCAN: mEnableBackgroundScan = (message.arg1 == 1); WifiNative.enableBackgroundScan(mEnableBackgroundScan); if (mEnableBackgroundScan) { WifiNative.enableBackgroundScan(true); setScanAlarm(false); } else { WifiNative.enableBackgroundScan(false); setScanAlarm(true); } break; /* Ignore network disconnect */ case NETWORK_DISCONNECTION_EVENT: Loading Loading @@ -2811,10 +2831,7 @@ public class WifiStateMachine extends HierarchicalStateMachine { if (mEnableBackgroundScan) { WifiNative.enableBackgroundScan(false); } if (mAlarmEnabled) { mAlarmManager.cancel(mScanIntent); mAlarmEnabled = false; } setScanAlarm(false); } } Loading Loading
wifi/java/android/net/wifi/WifiStateMachine.java +28 −11 Original line number Diff line number Diff line Loading @@ -2730,11 +2730,30 @@ public class WifiStateMachine extends HierarchicalStateMachine { class DisconnectedState extends HierarchicalState { private boolean mAlarmEnabled = false; private long mScanIntervalMs; private void setScanAlarm(boolean enabled) { if (enabled == mAlarmEnabled) return; if (enabled) { mAlarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + mScanIntervalMs, mScanIntervalMs, mScanIntent); mAlarmEnabled = true; } else { mAlarmManager.cancel(mScanIntent); mAlarmEnabled = false; } } @Override public void enter() { if (DBG) Log.d(TAG, getName() + "\n"); EventLog.writeEvent(EVENTLOG_WIFI_STATE_CHANGED, getName()); mScanIntervalMs = Settings.Secure.getLong(mContext.getContentResolver(), Settings.Secure.WIFI_SCAN_INTERVAL_MS, DEFAULT_SCAN_INTERVAL_MS); /* * We initiate background scanning if it is enabled, otherwise we * initiate an infrequent scan that wakes up the device to ensure Loading @@ -2751,12 +2770,7 @@ public class WifiStateMachine extends HierarchicalStateMachine { WifiNative.enableBackgroundScan(true); } } else { long scanMs = Settings.Secure.getLong(mContext.getContentResolver(), Settings.Secure.WIFI_SCAN_INTERVAL_MS, DEFAULT_SCAN_INTERVAL_MS); mAlarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + scanMs, scanMs, mScanIntent); mAlarmEnabled = true; setScanAlarm(true); } } @Override Loading @@ -2774,7 +2788,13 @@ public class WifiStateMachine extends HierarchicalStateMachine { break; case CMD_ENABLE_BACKGROUND_SCAN: mEnableBackgroundScan = (message.arg1 == 1); WifiNative.enableBackgroundScan(mEnableBackgroundScan); if (mEnableBackgroundScan) { WifiNative.enableBackgroundScan(true); setScanAlarm(false); } else { WifiNative.enableBackgroundScan(false); setScanAlarm(true); } break; /* Ignore network disconnect */ case NETWORK_DISCONNECTION_EVENT: Loading Loading @@ -2811,10 +2831,7 @@ public class WifiStateMachine extends HierarchicalStateMachine { if (mEnableBackgroundScan) { WifiNative.enableBackgroundScan(false); } if (mAlarmEnabled) { mAlarmManager.cancel(mScanIntent); mAlarmEnabled = false; } setScanAlarm(false); } } Loading