summaryrefslogtreecommitdiffstats
path: root/wifi
diff options
context:
space:
mode:
authorIrfan Sheriff <isheriff@google.com>2012-09-16 14:55:26 -0700
committerIrfan Sheriff <isheriff@google.com>2012-09-16 17:04:48 -0700
commit1c045ec2b79c33eb29a24bff11567831ea90398b (patch)
tree4829f4b613d2e4cd7867f61933d7d3145dab3116 /wifi
parentdf5bdd721bdfd1a8f370dd3a18d1b0e655f71cd5 (diff)
downloadframeworks_base-1c045ec2b79c33eb29a24bff11567831ea90398b.zip
frameworks_base-1c045ec2b79c33eb29a24bff11567831ea90398b.tar.gz
frameworks_base-1c045ec2b79c33eb29a24bff11567831ea90398b.tar.bz2
Fix suspend settings at boot
Bug: 7175460 Change-Id: Ibf5e063603866289b3dbae278bc384b833e4a75e
Diffstat (limited to 'wifi')
-rw-r--r--wifi/java/android/net/wifi/WifiStateMachine.java58
1 files changed, 37 insertions, 21 deletions
diff --git a/wifi/java/android/net/wifi/WifiStateMachine.java b/wifi/java/android/net/wifi/WifiStateMachine.java
index c6bb069..b3260b1 100644
--- a/wifi/java/android/net/wifi/WifiStateMachine.java
+++ b/wifi/java/android/net/wifi/WifiStateMachine.java
@@ -138,6 +138,10 @@ public class WifiStateMachine extends StateMachine {
private boolean mScanResultIsPending = false;
/* Tracks if the current scan settings are active */
private boolean mSetScanActive = false;
+ /* Tracks if state machine has received any screen state change broadcast yet.
+ * We can miss one of these at boot.
+ */
+ private AtomicBoolean mScreenBroadcastReceived = new AtomicBoolean(false);
private boolean mBluetoothConnectionActive = false;
@@ -635,28 +639,9 @@ public class WifiStateMachine extends StateMachine {
String action = intent.getAction();
if (action.equals(Intent.ACTION_SCREEN_ON)) {
- if (DBG) log("ACTION_SCREEN_ON");
- enableRssiPolling(true);
- if (mBackgroundScanSupported) {
- enableBackgroundScanCommand(false);
- }
- enableAllNetworks();
- if (mUserWantsSuspendOpt.get()) {
- if (DBG) log("Clear suspend optimizations");
- sendMessage(obtainMessage(CMD_SET_SUSPEND_OPT_ENABLED, 0, 0));
- }
+ handleScreenStateChanged(true);
} else if (action.equals(Intent.ACTION_SCREEN_OFF)) {
- if (DBG) log("ACTION_SCREEN_OFF");
- enableRssiPolling(false);
- if (mBackgroundScanSupported) {
- enableBackgroundScanCommand(true);
- }
- if (mUserWantsSuspendOpt.get()) {
- if (DBG) log("Enable suspend optimizations");
- //Allow 2s for suspend optimizations to be set
- mSuspendWakeLock.acquire(2000);
- sendMessage(obtainMessage(CMD_SET_SUSPEND_OPT_ENABLED, 1, 0));
- }
+ handleScreenStateChanged(false);
}
}
};
@@ -1221,6 +1206,26 @@ public class WifiStateMachine extends StateMachine {
* Internal private functions
********************************************************/
+ private void handleScreenStateChanged(boolean screenOn) {
+ if (DBG) log("handleScreenStateChanged: " + screenOn);
+ enableRssiPolling(screenOn);
+ if (mBackgroundScanSupported) {
+ enableBackgroundScanCommand(screenOn == false);
+ }
+
+ if (screenOn) enableAllNetworks();
+ if (mUserWantsSuspendOpt.get()) {
+ if (screenOn) {
+ sendMessage(obtainMessage(CMD_SET_SUSPEND_OPT_ENABLED, 0, 0));
+ } else {
+ //Allow 2s for suspend optimizations to be set
+ mSuspendWakeLock.acquire(2000);
+ sendMessage(obtainMessage(CMD_SET_SUSPEND_OPT_ENABLED, 1, 0));
+ }
+ }
+ mScreenBroadcastReceived.set(true);
+ }
+
private void checkAndSetConnectivityInstance() {
if (mCm == null) {
mCm = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
@@ -2721,6 +2726,17 @@ public class WifiStateMachine extends StateMachine {
transitionTo(mDisconnectedState);
}
+ // We may have missed screen update at boot
+ if (mScreenBroadcastReceived.get() == false) {
+ PowerManager powerManager = (PowerManager)mContext.getSystemService(
+ Context.POWER_SERVICE);
+ handleScreenStateChanged(powerManager.isScreenOn());
+ } else {
+ // Set the right suspend mode settings
+ mWifiNative.setSuspendOptimizations(mSuspendOptNeedsDisabled == 0
+ && mUserWantsSuspendOpt.get());
+ }
+
if (mP2pSupported) mWifiP2pChannel.sendMessage(WifiStateMachine.CMD_ENABLE_P2P);
}
@Override