Merge "Remember wifi country that's set before boot" into jb-mr2-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
0161d229fd
@@ -651,7 +651,12 @@ public final class WifiService extends IWifiManager.Stub {
|
|||||||
Slog.i(TAG, "WifiService trying to set country code to " + countryCode +
|
Slog.i(TAG, "WifiService trying to set country code to " + countryCode +
|
||||||
" with persist set to " + persist);
|
" with persist set to " + persist);
|
||||||
enforceChangePermission();
|
enforceChangePermission();
|
||||||
|
final long token = Binder.clearCallingIdentity();
|
||||||
|
try {
|
||||||
mWifiStateMachine.setCountryCode(countryCode, persist);
|
mWifiStateMachine.setCountryCode(countryCode, persist);
|
||||||
|
} finally {
|
||||||
|
Binder.restoreCallingIdentity(token);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -668,7 +673,12 @@ public final class WifiService extends IWifiManager.Stub {
|
|||||||
if (!isDualBandSupported()) return;
|
if (!isDualBandSupported()) return;
|
||||||
Slog.i(TAG, "WifiService trying to set frequency band to " + band +
|
Slog.i(TAG, "WifiService trying to set frequency band to " + band +
|
||||||
" with persist set to " + persist);
|
" with persist set to " + persist);
|
||||||
|
final long token = Binder.clearCallingIdentity();
|
||||||
|
try {
|
||||||
mWifiStateMachine.setFrequencyBand(band, persist);
|
mWifiStateMachine.setFrequencyBand(band, persist);
|
||||||
|
} finally {
|
||||||
|
Binder.restoreCallingIdentity(token);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -347,6 +347,8 @@ public class WifiStateMachine extends StateMachine {
|
|||||||
public static final int CMD_DISABLE_P2P_REQ = BASE + 132;
|
public static final int CMD_DISABLE_P2P_REQ = BASE + 132;
|
||||||
public static final int CMD_DISABLE_P2P_RSP = BASE + 133;
|
public static final int CMD_DISABLE_P2P_RSP = BASE + 133;
|
||||||
|
|
||||||
|
public static final int CMD_BOOT_COMPLETED = BASE + 134;
|
||||||
|
|
||||||
public static final int CONNECT_MODE = 1;
|
public static final int CONNECT_MODE = 1;
|
||||||
public static final int SCAN_ONLY_MODE = 2;
|
public static final int SCAN_ONLY_MODE = 2;
|
||||||
public static final int SCAN_ONLY_WITH_WIFI_OFF_MODE = 3;
|
public static final int SCAN_ONLY_WITH_WIFI_OFF_MODE = 3;
|
||||||
@@ -410,6 +412,10 @@ public class WifiStateMachine extends StateMachine {
|
|||||||
private int mDelayedStopCounter;
|
private int mDelayedStopCounter;
|
||||||
private boolean mInDelayedStop = false;
|
private boolean mInDelayedStop = false;
|
||||||
|
|
||||||
|
// sometimes telephony gives us this data before boot is complete and we can't store it
|
||||||
|
// until after, so the write is deferred
|
||||||
|
private volatile String mPersistedCountryCode;
|
||||||
|
|
||||||
private static final int MIN_RSSI = -200;
|
private static final int MIN_RSSI = -200;
|
||||||
private static final int MAX_RSSI = 256;
|
private static final int MAX_RSSI = 256;
|
||||||
|
|
||||||
@@ -637,6 +643,15 @@ public class WifiStateMachine extends StateMachine {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
mContext.registerReceiver(
|
||||||
|
new BroadcastReceiver() {
|
||||||
|
@Override
|
||||||
|
public void onReceive(Context context, Intent intent) {
|
||||||
|
sendMessage(CMD_BOOT_COMPLETED);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
new IntentFilter(Intent.ACTION_BOOT_COMPLETED));
|
||||||
|
|
||||||
mScanResultCache = new LruCache<String, ScanResult>(SCAN_RESULT_CACHE_SIZE);
|
mScanResultCache = new LruCache<String, ScanResult>(SCAN_RESULT_CACHE_SIZE);
|
||||||
|
|
||||||
PowerManager powerManager = (PowerManager)mContext.getSystemService(Context.POWER_SERVICE);
|
PowerManager powerManager = (PowerManager)mContext.getSystemService(Context.POWER_SERVICE);
|
||||||
@@ -1004,6 +1019,7 @@ public class WifiStateMachine extends StateMachine {
|
|||||||
*/
|
*/
|
||||||
public void setCountryCode(String countryCode, boolean persist) {
|
public void setCountryCode(String countryCode, boolean persist) {
|
||||||
if (persist) {
|
if (persist) {
|
||||||
|
mPersistedCountryCode = countryCode;
|
||||||
Settings.Global.putString(mContext.getContentResolver(),
|
Settings.Global.putString(mContext.getContentResolver(),
|
||||||
Settings.Global.WIFI_COUNTRY_CODE,
|
Settings.Global.WIFI_COUNTRY_CODE,
|
||||||
countryCode);
|
countryCode);
|
||||||
@@ -1889,6 +1905,19 @@ public class WifiStateMachine extends StateMachine {
|
|||||||
setSuspendOptimizations(SUSPEND_DUE_TO_HIGH_PERF, true);
|
setSuspendOptimizations(SUSPEND_DUE_TO_HIGH_PERF, true);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case CMD_BOOT_COMPLETED:
|
||||||
|
String countryCode = mPersistedCountryCode;
|
||||||
|
if (TextUtils.isEmpty(countryCode) == false) {
|
||||||
|
Settings.Global.putString(mContext.getContentResolver(),
|
||||||
|
Settings.Global.WIFI_COUNTRY_CODE,
|
||||||
|
countryCode);
|
||||||
|
// it may be that the state transition that should send this info
|
||||||
|
// to the driver happened between mPersistedCountryCode getting set
|
||||||
|
// and now, so simply persisting it here would mean we have sent
|
||||||
|
// nothing to the driver. Send the cmd so it might be set now.
|
||||||
|
sendMessageAtFrontOfQueue(CMD_SET_COUNTRY_CODE, countryCode);
|
||||||
|
}
|
||||||
|
break;
|
||||||
/* Discard */
|
/* Discard */
|
||||||
case CMD_START_SUPPLICANT:
|
case CMD_START_SUPPLICANT:
|
||||||
case CMD_STOP_SUPPLICANT:
|
case CMD_STOP_SUPPLICANT:
|
||||||
@@ -2357,7 +2386,6 @@ public class WifiStateMachine extends StateMachine {
|
|||||||
mInDelayedStop = false;
|
mInDelayedStop = false;
|
||||||
mDelayedStopCounter++;
|
mDelayedStopCounter++;
|
||||||
updateBatteryWorkSource(null);
|
updateBatteryWorkSource(null);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enable bluetooth coexistence scan mode when bluetooth connection is active.
|
* Enable bluetooth coexistence scan mode when bluetooth connection is active.
|
||||||
* When this mode is on, some of the low-level scan parameters used by the
|
* When this mode is on, some of the low-level scan parameters used by the
|
||||||
|
|||||||
Reference in New Issue
Block a user