Loading services/java/com/android/server/wifi/WifiService.java +1 −1 Original line number Diff line number Diff line Loading @@ -870,7 +870,7 @@ public final class WifiService extends IWifiManager.Stub { public void setCountryCode(String countryCode, boolean persist) { Slog.i(TAG, "WifiService trying to set country code to " + countryCode + " with persist set to " + persist); enforceChangePermission(); enforceConnectivityInternalPermission(); final long token = Binder.clearCallingIdentity(); try { mWifiStateMachine.setCountryCode(countryCode, persist); Loading wifi/java/android/net/wifi/WifiStateMachine.java +35 −17 Original line number Diff line number Diff line Loading @@ -233,6 +233,10 @@ public class WifiStateMachine extends StateMachine { private DhcpStateMachine mDhcpStateMachine; private boolean mDhcpActive = false; // Delay in switching to null country code (non-null has no delay) private final int COUNTRY_CODE_DELAY_MS = 15000; private final AtomicInteger mCountryCodeSequence = new AtomicInteger(); private class InterfaceObserver extends BaseNetworkObserver { private WifiStateMachine mWifiStateMachine; Loading Loading @@ -1535,14 +1539,15 @@ public class WifiStateMachine extends StateMachine { * @param persist {@code true} if the setting should be remembered. */ public void setCountryCode(String countryCode, boolean persist) { if (persist) { mPersistedCountryCode = countryCode; Settings.Global.putString(mContext.getContentResolver(), Settings.Global.WIFI_COUNTRY_CODE, countryCode); // If it's a country code, apply immediately, // If it's empty, delay it in case it's a momentary dropout int countryCodeSequence = mCountryCodeSequence.incrementAndGet(); if (TextUtils.isEmpty(countryCode)) { sendMessageDelayed(CMD_SET_COUNTRY_CODE, countryCodeSequence, persist ? 1 : 0, countryCode, COUNTRY_CODE_DELAY_MS); } else { sendMessage(CMD_SET_COUNTRY_CODE, countryCodeSequence, persist ? 1 : 0, countryCode); } sendMessage(CMD_SET_COUNTRY_CODE, countryCode); mWifiP2pChannel.sendMessage(WifiP2pService.SET_COUNTRY_CODE, countryCode); } /** Loading Loading @@ -2508,7 +2513,9 @@ public class WifiStateMachine extends StateMachine { // 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); int sequenceNum = mCountryCodeSequence.incrementAndGet(); sendMessageAtFrontOfQueue(CMD_SET_COUNTRY_CODE, sequenceNum, 0, countryCode); } break; case CMD_SET_BATCHED_SCAN: Loading Loading @@ -3091,8 +3098,19 @@ public class WifiStateMachine extends StateMachine { break; case CMD_SET_COUNTRY_CODE: String country = (String) message.obj; final boolean persist = (message.arg2 == 1); final int sequence = message.arg1; if (sequence != mCountryCodeSequence.get()) { if (DBG) log("set country code ignored due to sequence num"); break; } if (DBG) log("set country code " + country); if (country != null) { if (persist) { mPersistedCountryCode = country; Settings.Global.putString(mContext.getContentResolver(), Settings.Global.WIFI_COUNTRY_CODE, country); } country = country.toUpperCase(Locale.ROOT); if (mLastSetCountryCode == null || country.equals(mLastSetCountryCode) == false) { Loading @@ -3102,7 +3120,7 @@ public class WifiStateMachine extends StateMachine { loge("Failed to set country code " + country); } } } mWifiP2pChannel.sendMessage(WifiP2pService.SET_COUNTRY_CODE, country); break; case CMD_SET_FREQUENCY_BAND: int band = message.arg1; Loading Loading
services/java/com/android/server/wifi/WifiService.java +1 −1 Original line number Diff line number Diff line Loading @@ -870,7 +870,7 @@ public final class WifiService extends IWifiManager.Stub { public void setCountryCode(String countryCode, boolean persist) { Slog.i(TAG, "WifiService trying to set country code to " + countryCode + " with persist set to " + persist); enforceChangePermission(); enforceConnectivityInternalPermission(); final long token = Binder.clearCallingIdentity(); try { mWifiStateMachine.setCountryCode(countryCode, persist); Loading
wifi/java/android/net/wifi/WifiStateMachine.java +35 −17 Original line number Diff line number Diff line Loading @@ -233,6 +233,10 @@ public class WifiStateMachine extends StateMachine { private DhcpStateMachine mDhcpStateMachine; private boolean mDhcpActive = false; // Delay in switching to null country code (non-null has no delay) private final int COUNTRY_CODE_DELAY_MS = 15000; private final AtomicInteger mCountryCodeSequence = new AtomicInteger(); private class InterfaceObserver extends BaseNetworkObserver { private WifiStateMachine mWifiStateMachine; Loading Loading @@ -1535,14 +1539,15 @@ public class WifiStateMachine extends StateMachine { * @param persist {@code true} if the setting should be remembered. */ public void setCountryCode(String countryCode, boolean persist) { if (persist) { mPersistedCountryCode = countryCode; Settings.Global.putString(mContext.getContentResolver(), Settings.Global.WIFI_COUNTRY_CODE, countryCode); // If it's a country code, apply immediately, // If it's empty, delay it in case it's a momentary dropout int countryCodeSequence = mCountryCodeSequence.incrementAndGet(); if (TextUtils.isEmpty(countryCode)) { sendMessageDelayed(CMD_SET_COUNTRY_CODE, countryCodeSequence, persist ? 1 : 0, countryCode, COUNTRY_CODE_DELAY_MS); } else { sendMessage(CMD_SET_COUNTRY_CODE, countryCodeSequence, persist ? 1 : 0, countryCode); } sendMessage(CMD_SET_COUNTRY_CODE, countryCode); mWifiP2pChannel.sendMessage(WifiP2pService.SET_COUNTRY_CODE, countryCode); } /** Loading Loading @@ -2508,7 +2513,9 @@ public class WifiStateMachine extends StateMachine { // 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); int sequenceNum = mCountryCodeSequence.incrementAndGet(); sendMessageAtFrontOfQueue(CMD_SET_COUNTRY_CODE, sequenceNum, 0, countryCode); } break; case CMD_SET_BATCHED_SCAN: Loading Loading @@ -3091,8 +3098,19 @@ public class WifiStateMachine extends StateMachine { break; case CMD_SET_COUNTRY_CODE: String country = (String) message.obj; final boolean persist = (message.arg2 == 1); final int sequence = message.arg1; if (sequence != mCountryCodeSequence.get()) { if (DBG) log("set country code ignored due to sequence num"); break; } if (DBG) log("set country code " + country); if (country != null) { if (persist) { mPersistedCountryCode = country; Settings.Global.putString(mContext.getContentResolver(), Settings.Global.WIFI_COUNTRY_CODE, country); } country = country.toUpperCase(Locale.ROOT); if (mLastSetCountryCode == null || country.equals(mLastSetCountryCode) == false) { Loading @@ -3102,7 +3120,7 @@ public class WifiStateMachine extends StateMachine { loge("Failed to set country code " + country); } } } mWifiP2pChannel.sendMessage(WifiP2pService.SET_COUNTRY_CODE, country); break; case CMD_SET_FREQUENCY_BAND: int band = message.arg1; Loading