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

Commit fc9b47f6 authored by Jack Yu's avatar Jack Yu Committed by android-build-merger
Browse files

Merge "Moved access network manager into transport manager" am: ceaff493

am: c67939a3

Change-Id: I25be0824f910bd6ab6df3eb082e1744d7bbf47ea
parents c8e3d922 c67939a3
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -232,7 +232,6 @@ public class GsmCdmaPhone extends Phone {

        mSST.registerForNetworkAttached(this, EVENT_REGISTERED_TO_NETWORK, null);
        mDeviceStateMonitor = mTelephonyComponentFactory.makeDeviceStateMonitor(this);
        mAccessNetworksManager = mTelephonyComponentFactory.makeAccessNetworksManager(this);

        mSST.registerForVoiceRegStateOrRatChanged(this, EVENT_VRS_OR_RAT_CHANGED, null);
        logd("GsmCdmaPhone: constructor: sub = " + mPhoneId);
+4 −2
Original line number Diff line number Diff line
@@ -61,7 +61,6 @@ import com.android.ims.ImsCall;
import com.android.ims.ImsConfig;
import com.android.ims.ImsManager;
import com.android.internal.R;
import com.android.internal.telephony.dataconnection.AccessNetworksManager;
import com.android.internal.telephony.dataconnection.DataConnectionReasons;
import com.android.internal.telephony.dataconnection.DcTracker;
import com.android.internal.telephony.dataconnection.TransportManager;
@@ -283,7 +282,6 @@ public abstract class Phone extends Handler implements PhoneInternalInterface {
    private final String mActionAttached;
    protected DeviceStateMonitor mDeviceStateMonitor;
    protected TransportManager mTransportManager;
    protected AccessNetworksManager mAccessNetworksManager;

    protected int mPhoneId;

@@ -3852,6 +3850,10 @@ public abstract class Phone extends Handler implements PhoneInternalInterface {
            pw.println("++++++++++++++++++++++++++++++++");
        }

        if (mTransportManager != null) {
            mTransportManager.dump(fd, pw, args);
        }

        if (mCi != null && mCi instanceof RIL) {
            try {
                ((RIL)mCi).dump(fd, pw, args);
+0 −5
Original line number Diff line number Diff line
@@ -26,7 +26,6 @@ import android.telephony.AccessNetworkConstants.TransportType;

import com.android.internal.telephony.cdma.CdmaSubscriptionSourceManager;
import com.android.internal.telephony.cdma.EriManager;
import com.android.internal.telephony.dataconnection.AccessNetworksManager;
import com.android.internal.telephony.dataconnection.DcTracker;
import com.android.internal.telephony.dataconnection.TransportManager;
import com.android.internal.telephony.imsphone.ImsExternalCallTracker;
@@ -177,10 +176,6 @@ public class TelephonyComponentFactory {
        return new TransportManager(phone);
    }

    public AccessNetworksManager makeAccessNetworksManager(Phone phone) {
        return new AccessNetworksManager(phone);
    }

    public CdmaSubscriptionSourceManager
    getCdmaSubscriptionSourceManagerInstance(Context context, CommandsInterface ci, Handler h,
                                             int what, Object obj) {
+72 −6
Original line number Diff line number Diff line
@@ -16,26 +16,38 @@

package com.android.internal.telephony.dataconnection;


import android.annotation.IntDef;
import android.os.AsyncResult;
import android.os.Handler;
import android.os.Message;
import android.telephony.AccessNetworkConstants.TransportType;
import android.telephony.CarrierConfigManager;
import android.telephony.Rlog;
import android.text.TextUtils;

import com.android.internal.telephony.Phone;
import com.android.internal.telephony.dataconnection.AccessNetworksManager.QualifiedNetworks;
import com.android.internal.util.IndentingPrintWriter;

import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
import java.util.List;

/**
 * This class represents the transport manager which manages available transports and
 * route requests to correct transport.
 * This class represents the transport manager which manages available transports (i.e. WWAN or
 * WLAN)and determine the correct transport for {@link TelephonyNetworkFactory} to handle the data
 * requests.
 */
public class TransportManager {
public class TransportManager extends Handler {
    private static final String TAG = TransportManager.class.getSimpleName();

    private static final boolean DBG = true;

    private static final int EVENT_QUALIFIED_NETWORKS_CHANGED = 1;

    public static final String SYSTEM_PROPERTIES_IWLAN_OPERATION_MODE =
            "ro.telephony.iwlan_operation_mode";

@@ -70,13 +82,45 @@ public class TransportManager {

    private final List<Integer> mAvailableTransports = new ArrayList<>();

    private final AccessNetworksManager mAccessNetworksManager;

    public TransportManager(Phone phone) {
        mPhone = phone;
        // TODO: get transpot list from AccessNetworkManager.
        mAccessNetworksManager = new AccessNetworksManager(phone);

        mAccessNetworksManager.registerForQualifiedNetworksChanged(this,
                EVENT_QUALIFIED_NETWORKS_CHANGED);

        // WWAN should be always available.
        mAvailableTransports.add(TransportType.WWAN);

        // TODO: Add more logic to check whether we should add WLAN as a transport. For now, if
        // the device operate in non-legacy mode, then we always add WLAN as a transport.
        if (!isInLegacyMode()) {
            mAvailableTransports.add(TransportType.WLAN);
        }
    }

    public List<Integer> getAvailableTransports() {
    @Override
    public void handleMessage(Message msg) {
        switch (msg.what) {
            case EVENT_QUALIFIED_NETWORKS_CHANGED:
                AsyncResult ar = (AsyncResult) msg.obj;
                List<QualifiedNetworks> networks = (List<QualifiedNetworks>) ar.result;
                updateAvailableNetworks(networks);
                break;
            default:
                loge("Unexpected event " + msg.what);
                break;
        }
    }

    private synchronized void updateAvailableNetworks(List<QualifiedNetworks> networks) {
        log("updateAvailableNetworks: " + networks);
        //TODO: Update available networks and transports.
    }

    public synchronized List<Integer> getAvailableTransports() {
        return new ArrayList<>(mAvailableTransports);
    }

@@ -97,6 +141,28 @@ public class TransportManager {
        return (mPhone.mCi.getIwlanOperationMode() == IWLAN_OPERATION_MODE_LEGACY);
    }

    /**
     * Dump the state of transport manager
     *
     * @param fd File descriptor
     * @param printwriter Print writer
     * @param args Arguments
     */
    public void dump(FileDescriptor fd, PrintWriter printwriter, String[] args) {
        IndentingPrintWriter pw = new IndentingPrintWriter(printwriter, "  ");
        pw.println("TransportManager:");
        pw.increaseIndent();
        pw.print("mAvailableTransports=");
        List<String> transportsStrings = new ArrayList<>();
        for (int i = 0; i < mAvailableTransports.size(); i++) {
            transportsStrings.add(TransportType.toString(mAvailableTransports.get(i)));
        }
        pw.println("[" + TextUtils.join(",", transportsStrings) + "]");
        mAccessNetworksManager.dump(fd, pw, args);
        pw.decreaseIndent();
        pw.flush();
    }

    private void log(String s) {
        Rlog.d(TAG, s);
    }
+38 −5
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ import android.os.PersistableBundle;
import android.os.RegistrantList;
import android.os.RemoteException;
import android.os.UserHandle;
import android.telephony.AccessNetworkConstants.AccessNetworkType;
import android.telephony.CarrierConfigManager;
import android.telephony.Rlog;
import android.telephony.data.ApnSetting;
@@ -40,7 +41,9 @@ import android.text.TextUtils;
import android.util.SparseArray;

import com.android.internal.telephony.Phone;
import com.android.internal.util.IndentingPrintWriter;

import java.io.FileDescriptor;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -106,6 +109,19 @@ public class AccessNetworksManager {
            this.apnType = apnType;
            this.qualifiedNetworks = qualifiedNetworks;
        }

        @Override
        public String toString() {
            List<String> accessNetworkStrings = new ArrayList<>();
            for (int network : qualifiedNetworks) {
                accessNetworkStrings.add(AccessNetworkType.toString(network));
            }
            return "[QualifiedNetworks: apnType="
                    + ApnSetting.getApnTypeString(apnType)
                    + ", networks="
                    + TextUtils.join(", ", accessNetworkStrings)
                    + "]";
        }
    }

    private class AccessNetworksManagerDeathRecipient implements IBinder.DeathRecipient {
@@ -287,12 +303,29 @@ public class AccessNetworksManager {
    }

    /**
     * @return True if IWLAN legacy mode is used. No qualified network service there to provide
     * information for platform to setup data connection. All data connection requests will be
     * routed to the default (i.e. cellular) data/network service.
     * Dump the state of transport manager
     *
     * @param fd File descriptor
     * @param pw Print writer
     * @param args Arguments
     */
    public boolean isInLegacyMode() {
        return TextUtils.isEmpty(getQualifiedNetworksServicePackageName());
    public void dump(FileDescriptor fd, IndentingPrintWriter pw, String[] args) {
        pw.println("AccessNetworksManager:");
        pw.increaseIndent();
        pw.println("Available networks:");
        pw.increaseIndent();

        for (int i = 0; i < mAvailableNetworks.size(); i++) {
            pw.print("APN type "
                    + ApnSetting.getApnTypeString(mAvailableNetworks.keyAt(i)) + ": ");
            List<String> networksStrings = new ArrayList<>();
            for (int network : mAvailableNetworks.valueAt(i)) {
                networksStrings.add(AccessNetworkType.toString(network));
            }
            pw.println("[" + TextUtils.join(",", networksStrings) + "]");
        }
        pw.decreaseIndent();
        pw.decreaseIndent();
    }

    private void log(String s) {
Loading