Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 534054bc authored by Robert Greenwalt's avatar Robert Greenwalt Committed by Android Git Automerger
Browse files

am e8af5e10: am 6d9ed0c3: Merge "DO NOT MERGE Debounce wifi country code Info" into klp-dev

* commit 'e8af5e10':
  DO NOT MERGE Debounce wifi country code Info
parents dcba24ae e8af5e10
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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);
+35 −17
Original line number Diff line number Diff line
@@ -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;

@@ -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);
    }

    /**
@@ -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:
@@ -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) {
@@ -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;