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

Commit 6f5338dd authored by Roshan Pius's avatar Roshan Pius
Browse files

Mainline wifi stack module

a) Moved wifi service to a separate APK
b) Use the IWifiStackConnector to load the wifi stack from
SystemServer (similar to network stack).
c) Create a new WifiStackClient interface for system server to interact
with the wifi stack (under new services/wifi folder). Note: This not planned
to be updated via wifi-sdk Apex.
d) Add priv-app permissions for the new wifi stack APK.

Bug: 113174748
Test: Device boots up & connects to wifi networks, hotspot toggle, etc.
Test: Will send for regression tests
Change-Id: I54b3a11ed30668bad5a387370484b2bb0eabca5f
Merged-In: I54b3a11ed30668bad5a387370484b2bb0eabca5f
parent 7e6f5f5e
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -3734,6 +3734,14 @@ public abstract class Context {
     */
    public static final String NETWORK_STACK_SERVICE = "network_stack";

    /**
     * Use with {@link android.os.ServiceManager.getService()} to retrieve a
     * {@link android.net.WifiStackClient} IBinder for communicating with the network stack
     * @hide
     * @see android.net.WifiStackClient
     */
    public static final String WIFI_STACK_SERVICE = "wifi_stack";

    /**
     * Use with {@link #getSystemService(String)} to retrieve a
     * {@link android.net.IpSecManager} for encrypting Sockets or Networks with
+15 −0
Original line number Diff line number Diff line
@@ -350,4 +350,19 @@ applications that come with the platform
        <permission name="android.permission.MANAGE_DYNAMIC_SYSTEM"/>
    </privapp-permissions>

    <privapp-permissions package="com.android.server.wifistack">
        <permission name="android.permission.CHANGE_CONFIGURATION"/>
        <permission name="android.permission.CONNECTIVITY_INTERNAL"/>
        <permission name="android.permission.DUMP"/>
        <permission name="android.permission.INTERACT_ACROSS_USERS"/>
        <permission name="android.permission.LOCAL_MAC_ADDRESS"/>
        <permission name="android.permission.MANAGE_USERS"/>
        <permission name="android.permission.PACKAGE_USAGE_STATS"/>
        <permission name="android.permission.READ_PRIVILEGED_PHONE_STATE"/>
        <permission name="android.permission.REQUEST_NETWORK_SCORES"/>
        <permission name="android.permission.WRITE_SECURE_SETTINGS"/>
        <permission name="android.permission.UPDATE_DEVICE_STATS"/>
        <permission name="android.permission.UPDATE_APP_OPS_STATS"/>
        <permission name="android.permission.LOCATION_HARDWARE"/>
    </privapp-permissions>
</permissions>
+1 −0
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@ java_library {
        "services.usage",
        "services.usb",
        "services.voiceinteraction",
        "services.wifi",
        "android.hidl.base-V1.0-java",
    ],

+10 −35
Original line number Diff line number Diff line
@@ -40,8 +40,8 @@ import android.database.sqlite.SQLiteCompatibilityWalFlags;
import android.database.sqlite.SQLiteGlobal;
import android.hardware.display.DisplayManagerInternal;
import android.net.ConnectivityModuleConnector;
import android.net.Network;
import android.net.NetworkStackClient;
import android.net.wifi.WifiStackClient;
import android.os.BaseBundle;
import android.os.Binder;
import android.os.Build;
@@ -1345,40 +1345,6 @@ public final class SystemServer {
            }
            t.traceEnd();

            if (context.getPackageManager().hasSystemFeature(
                    PackageManager.FEATURE_WIFI)) {
                // Wifi Service must be started first for wifi-related services.
                t.traceBegin("StartWifi");
                mSystemServiceManager.startService(WIFI_SERVICE_CLASS);
                t.traceEnd();
                t.traceBegin("StartWifiScanning");
                mSystemServiceManager.startService(
                        "com.android.server.wifi.scanner.WifiScanningService");
                t.traceEnd();
            }

            if (context.getPackageManager().hasSystemFeature(
                    PackageManager.FEATURE_WIFI_RTT)) {
                t.traceBegin("StartRttService");
                mSystemServiceManager.startService(
                        "com.android.server.wifi.rtt.RttService");
                t.traceEnd();
            }

            if (context.getPackageManager().hasSystemFeature(
                    PackageManager.FEATURE_WIFI_AWARE)) {
                t.traceBegin("StartWifiAware");
                mSystemServiceManager.startService(WIFI_AWARE_SERVICE_CLASS);
                t.traceEnd();
            }

            if (context.getPackageManager().hasSystemFeature(
                    PackageManager.FEATURE_WIFI_DIRECT)) {
                t.traceBegin("StartWifiP2P");
                mSystemServiceManager.startService(WIFI_P2P_SERVICE_CLASS);
                t.traceEnd();
            }

            if (context.getPackageManager().hasSystemFeature(
                    PackageManager.FEATURE_LOWPAN)) {
                t.traceBegin("StartLowpan");
@@ -2184,6 +2150,15 @@ public final class SystemServer {
            }
            t.traceEnd();

            t.traceBegin("StartWifiStack");
            try {
                WifiStackClient.getInstance().start();
            } catch (Throwable e) {
                reportWtf("starting Wifi Stack", e);
            }
            t.traceEnd();


            t.traceBegin("MakeLocationServiceReady");
            try {
                if (locationF != null) {
+11 −0
Original line number Diff line number Diff line
// Interfaces between the core system and the wifi mainline module.
java_library_static {
    name: "services.wifi",
    srcs: [
        "java/**/*.java",
        "java/**/*.aidl",
    ],
    libs: [
        "services.net",
    ],
}
Loading