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

Commit 7fb3091c authored by Muralidhar Reddy's avatar Muralidhar Reddy Committed by Muralidhar Reddy Mule
Browse files

[MEP] Framework initial support for eSim Multiple Enabled Profiles.

Port concept is introduced to support MEP feature. Refactoring UiccController, UiccCard, and
UiccProfile to add UiccPort between UiccCard and UiccProfile. Most of the UiccCard functioning is
moved to UiccPort.

Bug: 199559346
Test: Manual test and atest FrameworksTelephonyTests

Change-Id: I7a56c47dc1e5a91578377e8bf615fc8043644c5c
Merged-In: I7a56c47dc1e5a91578377e8bf615fc8043644c5c
parent 060d6328
Loading
Loading
Loading
Loading
+7 −5
Original line number Diff line number Diff line
@@ -58,7 +58,7 @@ import android.util.IntArray;
import android.util.LocalLog;

import com.android.internal.telephony.uicc.IccUtils;
import com.android.internal.telephony.uicc.UiccCard;
import com.android.internal.telephony.uicc.UiccPort;
import com.android.internal.telephony.uicc.UiccProfile;
import com.android.telephony.Rlog;

@@ -351,14 +351,16 @@ public class CarrierPrivilegesTracker extends Handler {
        if (!mTelephonyManager.hasIccCard(mPhone.getPhoneId())) {
            return Collections.EMPTY_LIST;
        }
        UiccCard uiccCard = mPhone.getUiccCard();
        if (uiccCard == null) {

        UiccPort uiccPort = mPhone.getUiccPort();
        if (uiccPort == null) {
            Rlog.w(
                    TAG,
                    "Null UiccCard, but hasIccCard was true for phoneId " + mPhone.getPhoneId());
                    "Null UiccPort, but hasIccCard was present for phoneId " + mPhone.getPhoneId());
            return Collections.EMPTY_LIST;
        }
        UiccProfile uiccProfile = uiccCard.getUiccProfile();

        UiccProfile uiccProfile = uiccPort.getUiccProfile();
        if (uiccProfile == null) {
            Rlog.w(
                    TAG,
+4 −4
Original line number Diff line number Diff line
@@ -31,8 +31,8 @@ import android.telephony.AnomalyReporter;
import android.util.LocalLog;

import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.telephony.uicc.UiccCard;
import com.android.internal.telephony.uicc.UiccController;
import com.android.internal.telephony.uicc.UiccPort;
import com.android.telephony.Rlog;

import java.util.ArrayList;
@@ -143,9 +143,9 @@ public class CarrierServicesSmsFilter {

    private Optional<String> getCarrierAppPackageForFiltering() {
        List<String> carrierPackages = null;
        UiccCard card = UiccController.getInstance().getUiccCard(mPhone.getPhoneId());
        if (card != null) {
            carrierPackages = card.getCarrierPackageNamesForIntent(
        UiccPort port = UiccController.getInstance().getUiccPort(mPhone.getPhoneId());
        if (port != null) {
            carrierPackages = port.getCarrierPackageNamesForIntent(
                    mContext.getPackageManager(),
                    new Intent(CarrierMessagingService.SERVICE_INTERFACE));
        } else {
+4 −4
Original line number Diff line number Diff line
@@ -112,9 +112,9 @@ import com.android.internal.telephony.uicc.IsimRecords;
import com.android.internal.telephony.uicc.IsimUiccRecords;
import com.android.internal.telephony.uicc.RuimRecords;
import com.android.internal.telephony.uicc.SIMRecords;
import com.android.internal.telephony.uicc.UiccCard;
import com.android.internal.telephony.uicc.UiccCardApplication;
import com.android.internal.telephony.uicc.UiccController;
import com.android.internal.telephony.uicc.UiccPort;
import com.android.internal.telephony.uicc.UiccProfile;
import com.android.internal.telephony.uicc.UiccSlot;
import com.android.internal.telephony.util.ArrayUtils;
@@ -4228,12 +4228,12 @@ public class GsmCdmaPhone extends Phone {
            return false;
        }

        UiccCard card = mUiccController.getUiccCard(getPhoneId());
        if (card == null) {
        UiccPort port = mUiccController.getUiccPort(getPhoneId());
        if (port == null) {
            return false;
        }

        boolean status = card.setOperatorBrandOverride(brand);
        boolean status = port.setOperatorBrandOverride(brand);

        // Refresh.
        if (status) {
+9 −0
Original line number Diff line number Diff line
@@ -93,6 +93,7 @@ import com.android.internal.telephony.uicc.IsimRecords;
import com.android.internal.telephony.uicc.UiccCard;
import com.android.internal.telephony.uicc.UiccCardApplication;
import com.android.internal.telephony.uicc.UiccController;
import com.android.internal.telephony.uicc.UiccPort;
import com.android.internal.telephony.uicc.UsimServiceTable;
import com.android.internal.telephony.util.TelephonyUtils;
import com.android.internal.util.XmlUtils;
@@ -3930,6 +3931,14 @@ public abstract class Phone extends Handler implements PhoneInternalInterface {
        return mUiccController.getUiccCard(mPhoneId);
    }

    /**
     * Gets the Uicc port corresponding to this phone.
     * @return the UiccPort object corresponding to the phone ID.
     */
    public UiccPort getUiccPort() {
        return mUiccController.getUiccPort(mPhoneId);
    }

    /**
     * Get P-CSCF address from PCO after data connection is established or modified.
     * @param apnType the apnType, "ims" for IMS APN, "emergency" for EMERGENCY APN
+5 −5
Original line number Diff line number Diff line
@@ -37,8 +37,8 @@ import android.telephony.SubscriptionManager;
import android.telephony.TelephonyFrameworkInitializer;

import com.android.internal.telephony.uicc.IsimRecords;
import com.android.internal.telephony.uicc.UiccCard;
import com.android.internal.telephony.uicc.UiccCardApplication;
import com.android.internal.telephony.uicc.UiccPort;
import com.android.telephony.Rlog;

public class PhoneSubInfoController extends IPhoneSubInfo.Stub {
@@ -408,13 +408,13 @@ public class PhoneSubInfoController extends IPhoneSubInfo.Stub {
    public String getIccSimChallengeResponse(int subId, int appType, int authType, String data,
            String callingPackage, String callingFeatureId) throws RemoteException {
        CallPhoneMethodHelper<String> toExecute = (phone)-> {
            UiccCard uiccCard = phone.getUiccCard();
            if (uiccCard == null) {
                loge("getIccSimChallengeResponse() UiccCard is null");
            UiccPort uiccPort = phone.getUiccPort();
            if (uiccPort == null) {
                loge("getIccSimChallengeResponse() uiccPort is null");
                return null;
            }

            UiccCardApplication uiccApp = uiccCard.getApplicationByType(appType);
            UiccCardApplication uiccApp = uiccPort.getApplicationByType(appType);
            if (uiccApp == null) {
                loge("getIccSimChallengeResponse() no app with specified type -- " + appType);
                return null;
Loading