From 75342748e40b4674fa744c8f1904793af571b0d7 Mon Sep 17 00:00:00 2001 From: Daisuke Niwa Date: Thu, 6 Apr 2017 18:57:49 +0900 Subject: Abort ongoing STA scan to prioritize P2P scan When P2P scan is requested while STA scan is ongoing, it takes time to get P2P scan result. STA scan should be stopped when P2P scan is requested. Bug: 37227357 Test: Manual test Depends-On: Ifc4b81de8ec1d75467edf497abfe348c4ce1b283 Change-Id: I2fdb8307ae5b79dd205b3c2169f4e3ef579920a1 --- service/java/com/android/server/wifi/WifiInjector.java | 2 +- .../java/com/android/server/wifi/WificondControl.java | 18 ++++++++++++++++++ .../com/android/server/wifi/p2p/WifiP2pNative.java | 17 ++++++++++++++++- 3 files changed, 35 insertions(+), 2 deletions(-) (limited to 'service') diff --git a/service/java/com/android/server/wifi/WifiInjector.java b/service/java/com/android/server/wifi/WifiInjector.java index 817385340..edf396994 100644 --- a/service/java/com/android/server/wifi/WifiInjector.java +++ b/service/java/com/android/server/wifi/WifiInjector.java @@ -161,7 +161,7 @@ public class WifiInjector { mWifiP2pMonitor = new WifiP2pMonitor(this); mSupplicantP2pIfaceHal = new SupplicantP2pIfaceHal(mWifiP2pMonitor); mWifiP2pNative = new WifiP2pNative(SystemProperties.get("wifi.direct.interface", "p2p0"), - mSupplicantP2pIfaceHal); + mSupplicantP2pIfaceHal, mWificondControl); // Now get instances of all the objects that depend on the HandlerThreads mTrafficPoller = new WifiTrafficPoller(mContext, mWifiServiceHandlerThread.getLooper(), diff --git a/service/java/com/android/server/wifi/WificondControl.java b/service/java/com/android/server/wifi/WificondControl.java index fdd0faffe..8be747828 100644 --- a/service/java/com/android/server/wifi/WificondControl.java +++ b/service/java/com/android/server/wifi/WificondControl.java @@ -465,4 +465,22 @@ public class WificondControl { return false; } + /** + * Abort ongoing single scan triggered by wificond. + * @return Returns true on success. + */ + public boolean abortScan() { + if (mWificondScanner == null) { + Log.e(TAG, "No valid wificond scanner interface handler"); + return false; + } + + try { + return mWificondScanner.abortScan(); + } catch (RemoteException e1) { + Log.e(TAG, "Failed to request abortScan due to remote exception"); + } + return false; + } + } diff --git a/service/java/com/android/server/wifi/p2p/WifiP2pNative.java b/service/java/com/android/server/wifi/p2p/WifiP2pNative.java index bae3faa62..5de6585f4 100644 --- a/service/java/com/android/server/wifi/p2p/WifiP2pNative.java +++ b/service/java/com/android/server/wifi/p2p/WifiP2pNative.java @@ -21,6 +21,8 @@ import android.net.wifi.p2p.WifiP2pGroup; import android.net.wifi.p2p.WifiP2pGroupList; import android.net.wifi.p2p.nsd.WifiP2pServiceInfo; +import com.android.server.wifi.WificondControl; + /** * Native calls for bring up/shut down of the supplicant daemon and for * sending requests to the supplicant daemon @@ -31,11 +33,14 @@ public class WifiP2pNative { private final String mTAG; private final String mInterfaceName; private final SupplicantP2pIfaceHal mSupplicantP2pIfaceHal; + private final WificondControl mWificondControl; - public WifiP2pNative(String interfaceName, SupplicantP2pIfaceHal p2pIfaceHal) { + public WifiP2pNative(String interfaceName, SupplicantP2pIfaceHal p2pIfaceHal, + WificondControl wificondcontrol) { mTAG = "WifiP2pNative-" + interfaceName; mInterfaceName = interfaceName; mSupplicantP2pIfaceHal = p2pIfaceHal; + mWificondControl = wificondcontrol; } public String getInterfaceName() { @@ -247,6 +252,7 @@ public class WifiP2pNative { * @return boolean value indicating whether operation was successful. */ public boolean p2pFind(int timeout) { + abortScan(); return mSupplicantP2pIfaceHal.find(timeout); } @@ -597,4 +603,13 @@ public class WifiP2pNative { public boolean saveConfig() { return mSupplicantP2pIfaceHal.saveConfig(); } + + /** + * Abort ongoing single scan triggered by wificond. + * + * @return true on success, false otherwise. + */ + private boolean abortScan() { + return mWificondControl.abortScan(); + } } -- cgit v1.2.3