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

Commit f2b5d650 authored by Nalla Kartheek's avatar Nalla Kartheek Committed by Steve Kondik
Browse files

P2P: Change supplicant scan intervel during WFD session

During WFD session supplicant scan intervel is one minute. If
there are some saved profiles, then supplicant will issue a scan
for every one minute, this is causing some ping latency in WFD.
    Hence supplicant scan intervel should change to five minutes
to improve ping latency in WFD session only.

Change-Id: If827bab6f186ebeaac90f297935bc8b987eb4d09
CRs-Fixed: 669404
parent f769f4cb
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -4135,6 +4135,7 @@ public final class Settings {
            MOVED_TO_GLOBAL.add(Settings.Global.WIFI_P2P_DEVICE_NAME);
            MOVED_TO_GLOBAL.add(Settings.Global.WIFI_SAVED_STATE);
            MOVED_TO_GLOBAL.add(Settings.Global.WIFI_SUPPLICANT_SCAN_INTERVAL_MS);
            MOVED_TO_GLOBAL.add(Settings.Global.WIFI_SUPPLICANT_SCAN_INTERVAL_WFD_CONNECTED_MS);
            MOVED_TO_GLOBAL.add(Settings.Global.WIFI_SUSPEND_OPTIMIZATIONS_ENABLED);
            MOVED_TO_GLOBAL.add(Settings.Global.WIFI_WATCHDOG_ON);
            MOVED_TO_GLOBAL.add(Settings.Global.WIFI_WATCHDOG_POOR_NETWORK_TEST_ENABLED);
@@ -6794,6 +6795,13 @@ public final class Settings {
       public static final String WIFI_SCAN_INTERVAL_WHEN_P2P_CONNECTED_MS =
               "wifi_scan_interval_p2p_connected_ms";

       /**
        * The intervel in milliseconds to scan at supplicant when wfd session
        * @hide
        */
       public static final String WIFI_SUPPLICANT_SCAN_INTERVAL_WFD_CONNECTED_MS =
                 "wifi_scan_intervel_wfd_connected_ms";

       /**
        * Whether the Wi-Fi watchdog is enabled.
        */
+3 −0
Original line number Diff line number Diff line
@@ -350,6 +350,9 @@
    <!-- Integer indicating wpa_supplicant scan interval when p2p is connected in milliseconds -->
    <integer translatable="false" name="config_wifi_scan_interval_p2p_connected">60000</integer>

    <!-- Integer indicating wpa_supplicant scan intervel when WFD session established in milliseconds  -->
    <integer translatable="false" name="config_wifi_scan_interval_wfd_connected">300000</integer>

    <!-- Integer indicating the framework scan interval in milliseconds. This is used in the scenario
         where the chipset does not support background scanning (config_wifi_background_scan_suport
         is false) to set up a periodic wake up scan so that the device can connect to a new access
+1 −0
Original line number Diff line number Diff line
@@ -318,6 +318,7 @@
  <java-symbol type="integer" name="config_wifi_framework_scan_interval" />
  <java-symbol type="integer" name="config_wifi_supplicant_scan_interval" />
  <java-symbol type="integer" name="config_wifi_scan_interval_p2p_connected" />
  <java-symbol type="integer" name="config_wifi_scan_interval_wfd_connected" />
  <java-symbol type="integer" name="db_connection_pool_size" />
  <java-symbol type="integer" name="db_journal_size_limit" />
  <java-symbol type="integer" name="db_wal_autocheckpoint" />
+19 −0
Original line number Diff line number Diff line
@@ -2696,6 +2696,8 @@ public class WifiStateMachine extends StateMachine {
                    mTemporarilyDisconnectWifi = (message.arg1 == 1);
                    replyToMessage(message, WifiP2pService.DISCONNECT_WIFI_RESPONSE);
                    break;
                case WifiP2pService.P2P_MIRACAST_MODE_CHANGED:
                    break;
                case CMD_IP_ADDRESS_UPDATED:
                    // addLinkAddress is a no-op if called more than once with the same address.
                    if (mNetlinkLinkProperties.addLinkAddress((LinkAddress) message.obj)) {
@@ -4214,6 +4216,9 @@ public class WifiStateMachine extends StateMachine {
                        ret = NOT_HANDLED;
                    }
                    break;
                case WifiP2pService.P2P_MIRACAST_MODE_CHANGED:
                     setScanIntevelOnMiracastModeChange(message.arg1);
                     break;
                default:
                    ret = NOT_HANDLED;
            }
@@ -4579,4 +4584,18 @@ public class WifiStateMachine extends StateMachine {
        }
    }

    private void setScanIntevelOnMiracastModeChange(int mode) {
        if ((mode == WifiP2pManager.MIRACAST_SOURCE)
                || (mode == WifiP2pManager.MIRACAST_SINK)) {
            int defaultWfdIntervel = mContext.getResources().getInteger(
                    R.integer.config_wifi_scan_interval_wfd_connected);
            long wfdScanIntervalMs = Settings.Global
                    .getLong(
                            mContext.getContentResolver(),
                            Settings.Global.WIFI_SUPPLICANT_SCAN_INTERVAL_WFD_CONNECTED_MS,
                            defaultWfdIntervel);
            mWifiNative.setScanInterval((int) wfdScanIntervalMs / 1000);
        }
    }

}
+7 −0
Original line number Diff line number Diff line
@@ -178,6 +178,7 @@ public class WifiP2pService extends IWifiP2pManager.Stub {

    // set country code
    public static final int SET_COUNTRY_CODE                =   BASE + 16;
    public static final int P2P_MIRACAST_MODE_CHANGED       =   BASE + 17;

    public static final int ENABLED                         = 1;
    public static final int DISABLED                        = 0;
@@ -1048,6 +1049,7 @@ public class WifiP2pService extends IWifiP2pManager.Stub {
                   break;
                case SET_MIRACAST_MODE:
                    mWifiNative.setMiracastMode(message.arg1);
                    sendMiracastModeChanged(message.arg1);
                    break;
                case WifiP2pManager.START_LISTEN:
                    if (DBG) logd(getName() + " start listen mode");
@@ -2095,6 +2097,11 @@ public class WifiP2pService extends IWifiP2pManager.Stub {
                new NetworkInfo(mNetworkInfo));
    }

    private void sendMiracastModeChanged(int mode) {
        mWifiChannel
                .sendMessage(WifiP2pService.P2P_MIRACAST_MODE_CHANGED, mode);
    }

    private void sendP2pPersistentGroupsChangedBroadcast() {
        if (DBG) logd("sending p2p persistent groups changed broadcast");
        Intent intent = new Intent(WifiP2pManager.WIFI_P2P_PERSISTENT_GROUPS_CHANGED_ACTION);