diff options
Diffstat (limited to 'wifi/java/android/net/wifi/p2p/WifiP2pService.java')
-rw-r--r-- | wifi/java/android/net/wifi/p2p/WifiP2pService.java | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/wifi/java/android/net/wifi/p2p/WifiP2pService.java b/wifi/java/android/net/wifi/p2p/WifiP2pService.java index 23058f4..25b2270 100644 --- a/wifi/java/android/net/wifi/p2p/WifiP2pService.java +++ b/wifi/java/android/net/wifi/p2p/WifiP2pService.java @@ -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; @@ -1083,6 +1095,8 @@ public class WifiP2pService extends IWifiP2pManager.Stub { sendP2pDiscoveryChangedBroadcast(false); sendP2pStateChangedBroadcast(false); mNetworkInfo.setIsAvailable(false); + + mLastSetCountryCode = null; } } |