summaryrefslogtreecommitdiff
path: root/services/wifi
diff options
context:
space:
mode:
authorRoshan Pius <rpius@google.com>2019-09-26 19:31:51 +0000
committerRoshan Pius <rpius@google.com>2019-09-26 19:31:51 +0000
commit747c968b7e3dab26237991e89253b03d9435933a (patch)
tree392660cc68167d509f4252e34e5a0cfb66a011c4 /services/wifi
parentee58838a291c2d7751924acadc353a2b93e94f48 (diff)
Revert "Revert "Start Wifi only after boot completes""
This reverts commit ee58838a291c2d7751924acadc353a2b93e94f48. Reason for revert: b/141624112 Change-Id: I637aa68dd57d235ff4f5b723022543c668cd666e
Diffstat (limited to 'services/wifi')
-rw-r--r--services/wifi/Android.bp3
-rw-r--r--services/wifi/java/android/net/wifi/IWifiStackConnector.aidl5
-rw-r--r--services/wifi/java/android/net/wifi/WifiApiServiceInfo.aidl23
-rw-r--r--services/wifi/java/android/net/wifi/WifiStackClient.java57
4 files changed, 46 insertions, 42 deletions
diff --git a/services/wifi/Android.bp b/services/wifi/Android.bp
index 3c916a6d00cd..608fc2c7a55e 100644
--- a/services/wifi/Android.bp
+++ b/services/wifi/Android.bp
@@ -5,6 +5,9 @@ java_library_static {
"java/**/*.java",
"java/**/*.aidl",
],
+ aidl: {
+ local_include_dirs: ["java"]
+ },
libs: [
"services.net",
],
diff --git a/services/wifi/java/android/net/wifi/IWifiStackConnector.aidl b/services/wifi/java/android/net/wifi/IWifiStackConnector.aidl
index eadc7260e81b..3af4666b8d9c 100644
--- a/services/wifi/java/android/net/wifi/IWifiStackConnector.aidl
+++ b/services/wifi/java/android/net/wifi/IWifiStackConnector.aidl
@@ -15,8 +15,9 @@
*/
package android.net.wifi;
+import android.net.wifi.WifiApiServiceInfo;
+
/** @hide */
interface IWifiStackConnector {
- IBinder retrieveApiServiceImpl(String serviceName);
- boolean startApiService(String serviceName);
+ List<WifiApiServiceInfo> getWifiApiServiceInfos();
}
diff --git a/services/wifi/java/android/net/wifi/WifiApiServiceInfo.aidl b/services/wifi/java/android/net/wifi/WifiApiServiceInfo.aidl
new file mode 100644
index 000000000000..45e4c69102f0
--- /dev/null
+++ b/services/wifi/java/android/net/wifi/WifiApiServiceInfo.aidl
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.net.wifi;
+
+/** @hide */
+parcelable WifiApiServiceInfo {
+ String name;
+ IBinder binder;
+}
diff --git a/services/wifi/java/android/net/wifi/WifiStackClient.java b/services/wifi/java/android/net/wifi/WifiStackClient.java
index 64af7a8845a7..dcdfbc54687c 100644
--- a/services/wifi/java/android/net/wifi/WifiStackClient.java
+++ b/services/wifi/java/android/net/wifi/WifiStackClient.java
@@ -21,12 +21,13 @@ import static android.os.IServiceManager.DUMP_FLAG_PRIORITY_NORMAL;
import android.annotation.NonNull;
import android.content.Context;
import android.net.ConnectivityModuleConnector;
-import android.os.HandlerThread;
import android.os.IBinder;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.util.Log;
+import java.util.List;
+
/**
* Service used to communicate with the wifi stack, which could be running in a separate
* module.
@@ -56,21 +57,23 @@ public class WifiStackClient {
@Override
public void onModuleServiceConnected(IBinder service) {
Log.i(TAG, "Wifi stack connected");
+ registerWifiStackService(service);
+
+ IWifiStackConnector connector = IWifiStackConnector.Stub.asInterface(service);
- // spin up a new thread to not block system_server main thread
- HandlerThread thread = new HandlerThread("InitWifiServicesThread");
- thread.start();
- thread.getThreadHandler().post(() -> {
- registerWifiStackService(service);
- IWifiStackConnector connector = IWifiStackConnector.Stub.asInterface(service);
- registerApiServiceAndStart(connector, Context.WIFI_SCANNING_SERVICE);
- registerApiServiceAndStart(connector, Context.WIFI_SERVICE);
- registerApiServiceAndStart(connector, Context.WIFI_P2P_SERVICE);
- registerApiServiceAndStart(connector, Context.WIFI_AWARE_SERVICE);
- registerApiServiceAndStart(connector, Context.WIFI_RTT_RANGING_SERVICE);
+ List<WifiApiServiceInfo> wifiApiServiceInfos;
+ try {
+ wifiApiServiceInfos = connector.getWifiApiServiceInfos();
+ } catch (RemoteException e) {
+ throw new RuntimeException("Failed to getWifiApiServiceInfos()", e);
+ }
- thread.quitSafely();
- });
+ for (WifiApiServiceInfo wifiApiServiceInfo : wifiApiServiceInfos) {
+ String serviceName = wifiApiServiceInfo.name;
+ IBinder binder = wifiApiServiceInfo.binder;
+ Log.i(TAG, "Registering " + serviceName);
+ ServiceManager.addService(serviceName, binder);
+ }
}
}
@@ -81,32 +84,6 @@ public class WifiStackClient {
Log.i(TAG, "Wifi stack service registered");
}
- private void registerApiServiceAndStart(
- IWifiStackConnector stackConnector, String serviceName) {
- IBinder service = null;
- try {
- service = stackConnector.retrieveApiServiceImpl(serviceName);
- } catch (RemoteException e) {
- throw new RuntimeException("Failed to retrieve service impl " + serviceName, e);
- }
- if (service == null) {
- Log.i(TAG, "Service " + serviceName + " not available");
- return;
- }
- Log.i(TAG, "Registering " + serviceName);
- ServiceManager.addService(serviceName, service);
-
- boolean success = false;
- try {
- success = stackConnector.startApiService(serviceName);
- } catch (RemoteException e) {
- throw new RuntimeException("Failed to start service " + serviceName, e);
- }
- if (!success) {
- throw new RuntimeException("Service " + serviceName + " start failed");
- }
- }
-
/**
* Start the wifi stack. Should be called only once on device startup.
*