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

Commit aa3512ba authored by Malcolm Chen's avatar Malcolm Chen Committed by Xiangyu/Malcolm Chen
Browse files

Make sure on non-dds phone, try MMS data connection when PS is not

attached.

Before setting up data connection, we check if it's on non-dds and
voice is registered on non-LTE network, if true we'll setup the data
connection even if it's not attached.

Bug: 134086103
Test: manual
Change-Id: I43e150c1d0cc4065da07f4a5ec738b967e7a9a6d
Merged-In: I43e150c1d0cc4065da07f4a5ec738b967e7a9a6d
parent 56ea64d7
Loading
Loading
Loading
Loading
+38 −0
Original line number Original line Diff line number Diff line
@@ -16,6 +16,8 @@


package android.telephony;
package android.telephony;


import static android.telephony.TelephonyManager.NETWORK_TYPE_BITMASK_UNKNOWN;

import android.annotation.IntDef;
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.Nullable;
@@ -1605,6 +1607,12 @@ public class ServiceState implements Parcelable {
        }
        }
    }
    }


    /** @hide */
    public static int networkTypeToAccessNetworkType(@TelephonyManager.NetworkType
            int networkType) {
        return rilRadioTechnologyToAccessNetworkType(networkTypeToRilRadioTechnology(networkType));
    }

    /**
    /**
     * Get current data network type.
     * Get current data network type.
     *
     *
@@ -1730,6 +1738,36 @@ public class ServiceState implements Parcelable {
        return false;
        return false;
    }
    }


    /**
     *
     * Returns whether the bearerBitmask includes a networkType that matches the accessNetworkType.
     *
     * The NetworkType refers to NetworkType in TelephonyManager. For example
     * {@link TelephonyManager#NETWORK_TYPE_GPRS}.
     *
     * The accessNetworkType refers to {@link AccessNetworkType}.
     *
     * @hide
     * */
    public static boolean networkBitmaskHasAccessNetworkType(
            @TelephonyManager.NetworkTypeBitMask int networkBitmask, int accessNetworkType) {
        if (networkBitmask == NETWORK_TYPE_BITMASK_UNKNOWN) return true;
        if (accessNetworkType == AccessNetworkType.UNKNOWN) return false;

        int networkType = 1;
        while (networkBitmask != 0) {
            if ((networkBitmask & 1) != 0) {
                if (networkTypeToAccessNetworkType(networkType) == accessNetworkType) {
                    return true;
                }
            }
            networkBitmask = networkBitmask >> 1;
            networkType++;
        }

        return false;
    }

    /** @hide */
    /** @hide */
    public static int getBitmaskForTech(int radioTech) {
    public static int getBitmaskForTech(int radioTech) {
        if (radioTech >= 1) {
        if (radioTech >= 1) {