SupplicantManager: Expose an API to start/stop supplicant daemon

Bug: 149923078
Test: Compiles
Change-Id: Ic7027f0d18abee2ea1c9e48700c706954d54773a
diff --git a/services/Android.bp b/services/Android.bp
index db6e21a..ef47867 100644
--- a/services/Android.bp
+++ b/services/Android.bp
@@ -29,6 +29,7 @@
         ":services.usage-sources",
         ":services.usb-sources",
         ":services.voiceinteraction-sources",
+        ":services.wifi-sources",
         ":service-permission-sources",
         ":service-statsd-sources",
     ],
@@ -71,6 +72,7 @@
         "services.usage",
         "services.usb",
         "services.voiceinteraction",
+        "services.wifi",
         "android.hidl.base-V1.0-java",
     ],
 
diff --git a/services/api/current.txt b/services/api/current.txt
index 26a65f2..4a0a0d8 100644
--- a/services/api/current.txt
+++ b/services/api/current.txt
@@ -74,3 +74,12 @@
 
 }
 
+package com.android.server.wifi {
+
+  public class SupplicantManager {
+    method public static void start();
+    method public static void stop();
+  }
+
+}
+
diff --git a/services/wifi/Android.bp b/services/wifi/Android.bp
new file mode 100644
index 0000000..f56c2cf
--- /dev/null
+++ b/services/wifi/Android.bp
@@ -0,0 +1,13 @@
+filegroup {
+    name: "services.wifi-sources",
+    srcs: ["java/**/*.java"],
+    path: "java",
+    visibility: ["//frameworks/base/services"],
+}
+
+java_library_static {
+    name: "services.wifi",
+    srcs: [
+        ":services.wifi-sources",
+    ],
+}
diff --git a/services/wifi/java/com/android/server/wifi/SupplicantManager.java b/services/wifi/java/com/android/server/wifi/SupplicantManager.java
new file mode 100644
index 0000000..5ed1ab3
--- /dev/null
+++ b/services/wifi/java/com/android/server/wifi/SupplicantManager.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2020 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 com.android.server.wifi;
+
+import android.annotation.SystemApi;
+import android.os.SystemService;
+
+/**
+ * Wrapper to start/stop supplicant daemon using init system.
+ * @hide
+ */
+@SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
+public class SupplicantManager {
+    private static final String WPA_SUPPLICANT_DAEMON_NAME = "wpa_supplicant";
+
+    private SupplicantManager() {}
+
+    /**
+     * Start the wpa_supplicant daemon.
+     * Note: This uses the init system to start the "wpa_supplicant" service.
+     */
+    public static void start() {
+        SystemService.start(WPA_SUPPLICANT_DAEMON_NAME);
+    }
+
+    /**
+     * Stop the wpa_supplicant daemon.
+     * Note: This uses the init system to stop the "wpa_supplicant" service.
+     */
+    public static void stop() {
+        SystemService.stop(WPA_SUPPLICANT_DAEMON_NAME);
+    }
+}