am 4d8a8392: Merge "Don\'t set same country code on supplicant again and again" into klp-dev

* commit '4d8a8392f7a452479f228fbe08e43fa4145dda56':
  Don't set same country code on supplicant again and again
This commit is contained in:
Robert Greenwalt
2013-10-21 18:01:39 -07:00
committed by Android Git Automerger
2 changed files with 32 additions and 3 deletions

View File

@@ -89,6 +89,7 @@ import java.net.InetAddress;
import java.net.Inet6Address;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.Iterator;
@@ -500,6 +501,10 @@ public class WifiStateMachine extends StateMachine {
// until after, so the write is deferred
private volatile String mPersistedCountryCode;
// Supplicant doesn't like setting the same country code multiple times (it may drop
// currently connected network), so we save the country code here to avoid redundency
private String mLastSetCountryCode;
private static final int MIN_RSSI = -200;
private static final int MAX_RSSI = 256;
@@ -3022,8 +3027,16 @@ public class WifiStateMachine extends StateMachine {
case CMD_SET_COUNTRY_CODE:
String country = (String) message.obj;
if (DBG) log("set country code " + country);
if (!mWifiNative.setCountryCode(country)) {
loge("Failed to set country code " + country);
if (country != null) {
country = country.toUpperCase(Locale.ROOT);
if (mLastSetCountryCode == null
|| country.equals(mLastSetCountryCode) == false) {
if (mWifiNative.setCountryCode(country)) {
mLastSetCountryCode = country;
} else {
loge("Failed to set country code " + country);
}
}
}
break;
case CMD_SET_FREQUENCY_BAND:
@@ -3156,6 +3169,8 @@ public class WifiStateMachine extends StateMachine {
intent.putExtra(WifiManager.EXTRA_SCAN_AVAILABLE, WIFI_STATE_DISABLED);
mContext.sendStickyBroadcastAsUser(intent, UserHandle.ALL);
noteScanEnd(); // wrap up any pending request.
mLastSetCountryCode = null;
}
}

View File

@@ -85,6 +85,8 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
/**
* WifiP2pService includes a state machine to perform Wi-Fi p2p operations. Applications
@@ -201,6 +203,10 @@ public class WifiP2pService extends IWifiP2pManager.Stub {
*/
private boolean mDiscoveryBlocked;
// Supplicant doesn't like setting the same country code multiple times (it may drop
// current connected network), so we save the country code here to avoid redundency
private String mLastSetCountryCode;
/*
* remember if we were in a scan when it had to be stopped
*/
@@ -1070,7 +1076,13 @@ public class WifiP2pService extends IWifiP2pManager.Stub {
break;
case SET_COUNTRY_CODE:
String countryCode = (String) message.obj;
mWifiNative.setCountryCode(countryCode);
countryCode = countryCode.toUpperCase(Locale.ROOT);
if (mLastSetCountryCode == null ||
countryCode.equals(mLastSetCountryCode) == false) {
if (mWifiNative.setCountryCode(countryCode)) {
mLastSetCountryCode = countryCode;
}
}
break;
default:
return NOT_HANDLED;
@@ -1082,6 +1094,8 @@ public class WifiP2pService extends IWifiP2pManager.Stub {
public void exit() {
sendP2pStateChangedBroadcast(false);
mNetworkInfo.setIsAvailable(false);
mLastSetCountryCode = null;
}
}