summaryrefslogtreecommitdiff
path: root/services/java
diff options
context:
space:
mode:
Diffstat (limited to 'services/java')
-rw-r--r--services/java/com/android/server/SystemServer.java56
1 files changed, 56 insertions, 0 deletions
diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java
index 5fbf1c4e1f40..8b256e238df3 100644
--- a/services/java/com/android/server/SystemServer.java
+++ b/services/java/com/android/server/SystemServer.java
@@ -63,6 +63,7 @@ import android.os.FactoryTest;
import android.os.FileUtils;
import android.os.IBinder;
import android.os.IIncidentManager;
+import android.os.IBinder;
import android.os.Looper;
import android.os.Message;
import android.os.Parcel;
@@ -203,6 +204,9 @@ import com.android.server.wm.WindowManagerGlobalLock;
import com.android.server.wm.WindowManagerService;
import dalvik.system.VMRuntime;
+import dalvik.system.PathClassLoader;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Method;
import com.google.android.startop.iorap.IorapForwardingService;
@@ -1315,6 +1319,8 @@ public final class SystemServer implements Dumpable {
ConsumerIrService consumerIr = null;
MmsServiceBroker mmsService = null;
HardwarePropertiesManagerService hardwarePropertiesService = null;
+ Object wigigP2pService = null;
+ Object wigigService = null;
boolean disableSystemTextClassifier = SystemProperties.getBoolean(
"config.disable_systemtextclassifier", false);
@@ -1326,6 +1332,7 @@ public final class SystemServer implements Dumpable {
boolean enableLeftyService = SystemProperties.getBoolean("config.enable_lefty", false);
boolean isEmulator = SystemProperties.get("ro.kernel.qemu").equals("1");
+ boolean enableWigig = SystemProperties.getBoolean("persist.vendor.wigig.enable", false);
boolean isWatch = context.getPackageManager().hasSystemFeature(
PackageManager.FEATURE_WATCH);
@@ -1526,6 +1533,8 @@ public final class SystemServer implements Dumpable {
mSystemServiceManager.startService(IorapForwardingService.class);
t.traceEnd();
+ mSystemServiceManager.startService(ActivityTriggerService.class);
+
if (Build.IS_DEBUGGABLE && ProfcollectForwardingService.enabled()) {
t.traceBegin("ProfcollectForwardingService");
mSystemServiceManager.startService(ProfcollectForwardingService.class);
@@ -1901,6 +1910,34 @@ public final class SystemServer implements Dumpable {
}
t.traceEnd();
+ if (enableWigig) {
+ try {
+ Slog.i(TAG, "Wigig Service");
+ String wigigClassPath =
+ "/system/system_ext/framework/wigig-service.jar" + ":" +
+ "/system/system_ext/framework/vendor.qti.hardware.wigig.supptunnel-V1.0-java.jar" + ":" +
+ "/system/system_ext/framework/vendor.qti.hardware.wigig.netperftuner-V1.0-java.jar" + ":" +
+ "/system/system_ext/framework/vendor.qti.hardware.capabilityconfigstore-V1.0-java.jar";
+ PathClassLoader wigigClassLoader =
+ new PathClassLoader(wigigClassPath, getClass().getClassLoader());
+ Class wigigP2pClass = wigigClassLoader.loadClass(
+ "com.qualcomm.qti.server.wigig.p2p.WigigP2pServiceImpl");
+ Constructor<Class> ctor = wigigP2pClass.getConstructor(Context.class);
+ wigigP2pService = ctor.newInstance(context);
+ Slog.i(TAG, "Successfully loaded WigigP2pServiceImpl class");
+ ServiceManager.addService("wigigp2p", (IBinder) wigigP2pService);
+
+ Class wigigClass = wigigClassLoader.loadClass(
+ "com.qualcomm.qti.server.wigig.WigigService");
+ ctor = wigigClass.getConstructor(Context.class);
+ wigigService = ctor.newInstance(context);
+ Slog.i(TAG, "Successfully loaded WigigService class");
+ ServiceManager.addService("wigig", (IBinder) wigigService);
+ } catch (Throwable e) {
+ reportWtf("starting WigigService", e);
+ }
+ }
+
t.traceBegin("StartNsdService");
try {
serviceDiscovery = NsdService.create(context);
@@ -2520,6 +2557,25 @@ public final class SystemServer implements Dumpable {
mSystemServiceManager.startBootPhase(t, SystemService.PHASE_SYSTEM_SERVICES_READY);
t.traceEnd();
+ // Wigig services are not registered as system services because of class loader
+ // limitations, send boot phase notification separately
+ if (enableWigig) {
+ try {
+ Slog.i(TAG, "calling onBootPhase for Wigig Services");
+ Class wigigP2pClass = wigigP2pService.getClass();
+ Method m = wigigP2pClass.getMethod("onBootPhase", int.class);
+ m.invoke(wigigP2pService, new Integer(
+ SystemService.PHASE_SYSTEM_SERVICES_READY));
+
+ Class wigigClass = wigigService.getClass();
+ m = wigigClass.getMethod("onBootPhase", int.class);
+ m.invoke(wigigService, new Integer(
+ SystemService.PHASE_SYSTEM_SERVICES_READY));
+ } catch (Throwable e) {
+ reportWtf("Wigig services ready", e);
+ }
+ }
+
t.traceBegin("MakeWindowManagerServiceReady");
try {
wm.systemReady();