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

Commit fddb1d91 authored by Deepak Kundra's avatar Deepak Kundra
Browse files

Telephony: Apply SPN override for cdma SIM (RUIM)

* Move spn override function to common IccRecords class to share between
  SIMRecords and RUIMRecords
* Fix a few places where we set PROPERTY_ICC_OPERATOR_ALPHA without using
  setTelephonyProperty, which is wrong for msim
* Add spn override to onAllRecordsLoaded() in RUIMRecords since IMSI record
  is loaded after SPN record

issue-id: RENDANG-421

Change-Id: I76731ec8355a02cd94f9b218fecb16dfa181063a
(cherry picked from commit 00239f17)
parent 5ca84484
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1956,7 +1956,7 @@ public class CDMAPhone extends PhoneBase {
        if (status) {
            IccRecords iccRecords = mIccRecords.get();
            if (iccRecords != null) {
                SystemProperties.set(TelephonyProperties.PROPERTY_ICC_OPERATOR_ALPHA,
                setSystemProperty(TelephonyProperties.PROPERTY_ICC_OPERATOR_ALPHA,
                        iccRecords.getServiceProviderName());
            }
            if (mSST != null) {
+1 −1
Original line number Diff line number Diff line
@@ -2052,7 +2052,7 @@ public class GSMPhone extends PhoneBase {
        if (status) {
            IccRecords iccRecords = mIccRecords.get();
            if (iccRecords != null) {
                SystemProperties.set(TelephonyProperties.PROPERTY_ICC_OPERATOR_ALPHA,
                setSystemProperty(TelephonyProperties.PROPERTY_ICC_OPERATOR_ALPHA,
                        iccRecords.getServiceProviderName());
            }
            if (mSST != null) {
+16 −0
Original line number Diff line number Diff line
@@ -41,6 +41,8 @@ import java.io.PrintWriter;
import java.nio.ByteBuffer;
import java.util.concurrent.atomic.AtomicBoolean;

import static com.android.internal.telephony.TelephonyProperties.PROPERTY_ICC_OPERATOR_ALPHA;

/**
 * {@hide}
 */
@@ -64,6 +66,8 @@ public abstract class IccRecords extends Handler implements IccConstants {

    protected AdnRecordCache mAdnCache;

    private SpnOverride mSpnOverride;

    // ***** Cached SIM State; cleared on channel close

    protected boolean mRecordsRequested = false; // true if we've made requests for the sim records
@@ -127,6 +131,7 @@ public abstract class IccRecords extends Handler implements IccConstants {
                + " mCi=" + mCi
                + " mFh=" + mFh
                + " mParentApp=" + mParentApp
                + " mSpnOverride=" + "mSpnOverride"
                + " recordsLoadedRegistrants=" + mRecordsLoadedRegistrants
                + " mImsiReadyRegistrants=" + mImsiReadyRegistrants
                + " mRecordsEventsRegistrants=" + mRecordsEventsRegistrants
@@ -179,6 +184,7 @@ public abstract class IccRecords extends Handler implements IccConstants {
        } else {
            mCi.registerForIccRefresh(this, EVENT_REFRESH, null);
        }
        mSpnOverride = new SpnOverride();
    }

    /**
@@ -439,6 +445,15 @@ public abstract class IccRecords extends Handler implements IccConstants {
        mSpn = spn;
    }

    protected void setSpnFromConfig(String carrier) {
        if (mSpnOverride.containsCarrier(carrier)) {
            String overrideSpn = mSpnOverride.getSpn(carrier);
            log("set override spn carrier: " + carrier + ", spn: " + overrideSpn);
            setServiceProviderName(overrideSpn);
            setSystemProperty(PROPERTY_ICC_OPERATOR_ALPHA, getServiceProviderName());
        }
    }

    /**
     * Set voice mail number to SIM record
     *
@@ -858,6 +873,7 @@ public abstract class IccRecords extends Handler implements IccConstants {
        pw.println(" mCi=" + mCi);
        pw.println(" mFh=" + mFh);
        pw.println(" mParentApp=" + mParentApp);
        pw.println(" mSpnOverride=" + mSpnOverride);
        pw.println(" recordsLoadedRegistrants: size=" + mRecordsLoadedRegistrants.size());
        for (int i = 0; i < mRecordsLoadedRegistrants.size(); i++) {
            pw.println("  recordsLoadedRegistrants[" + i + "]="
+2 −1
Original line number Diff line number Diff line
@@ -425,7 +425,7 @@ public final class RuimRecords extends IccRecords {
            }
            if (DBG) log("spn=" + getServiceProviderName());
            if (DBG) log("spnCondition=" + mCsimSpnDisplayCondition);
            SystemProperties.set(PROPERTY_ICC_OPERATOR_ALPHA, getServiceProviderName());
            setSystemProperty(PROPERTY_ICC_OPERATOR_ALPHA, getServiceProviderName());
        }
    }

@@ -923,6 +923,7 @@ public final class RuimRecords extends IccRecords {
                    operator + "'");
            setSystemProperty(PROPERTY_ICC_OPERATOR_NUMERIC, operator);
            setSystemProperty(PROPERTY_APN_RUIM_OPERATOR_NUMERIC, operator);
            setSpnFromConfig(operator);
        } else {
            log("onAllRecordsLoaded empty 'gsm.sim.operator.numeric' skipping");
        }
+0 −13
Original line number Diff line number Diff line
@@ -61,8 +61,6 @@ public class SIMRecords extends IccRecords {
    VoiceMailConstants mVmConfig;


    SpnOverride mSpnOverride;

    // ***** Cached SIM State; cleared on channel close

    private boolean mCallForwardingEnabled;
@@ -101,7 +99,6 @@ public class SIMRecords extends IccRecords {
    public String toString() {
        return "SimRecords: " + super.toString()
                + " mVmConfig" + mVmConfig
                + " mSpnOverride=" + "mSpnOverride"
                + " callForwardingEnabled=" + mCallForwardingEnabled
                + " spnState=" + mSpnState
                + " mCphsInfo=" + mCphsInfo
@@ -200,7 +197,6 @@ public class SIMRecords extends IccRecords {
        mAdnCache = new AdnRecordCache(mFh);

        mVmConfig = new VoiceMailConstants();
        mSpnOverride = new SpnOverride();

        mRecordsRequested = false;  // No load request is made till SIM ready

@@ -1503,14 +1499,6 @@ public class SIMRecords extends IccRecords {

    //***** Private methods

    private void setSpnFromConfig(String carrier) {
        if (mSpnOverride.containsCarrier(carrier)) {
            setServiceProviderName(mSpnOverride.getSpn(carrier));
            setSystemProperty(PROPERTY_ICC_OPERATOR_ALPHA, getServiceProviderName());
        }
    }


    private void setVoiceMailByCountry (String spn) {
        if (mVmConfig.containsCarrier(spn)) {
            mIsVoiceMailFixed = true;
@@ -1960,7 +1948,6 @@ public class SIMRecords extends IccRecords {
        pw.println(" extends:");
        super.dump(fd, pw, args);
        pw.println(" mVmConfig=" + mVmConfig);
        pw.println(" mSpnOverride=" + mSpnOverride);
        pw.println(" mCallForwardingEnabled=" + mCallForwardingEnabled);
        pw.println(" mSpnState=" + mSpnState);
        pw.println(" mCphsInfo=" + mCphsInfo);