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

Commit ce7aa225 authored by Wink Saville's avatar Wink Saville Committed by Android Git Automerger
Browse files

am 37a4069f: am e55e5e7c: Merge "Derive ICC status from multiple application...

am 37a4069f: am e55e5e7c: Merge "Derive ICC status from multiple application status for UICC" into honeycomb-LTE

* commit '37a4069f':
  Derive ICC status from multiple application status for UICC
parents 98c6870e 37a4069f
Loading
Loading
Loading
Loading
+59 −34
Original line number Diff line number Diff line
@@ -722,22 +722,37 @@ public abstract class IccCard {
            currentRadioState == RadioState.RUIM_READY ||
            (currentRadioState == RadioState.NV_READY &&
                    (mPhone.getLteOnCdmaMode() == Phone.LTE_ON_CDMA_TRUE))) {
            int index;

            State csimState =
                getAppState(mIccCardStatus.getCdmaSubscriptionAppIndex());
            State usimState =
                getAppState(mIccCardStatus.getGsmUmtsSubscriptionAppIndex());

            if(mDbg) log("USIM=" + usimState + " CSIM=" + csimState);

            if (mPhone.getLteOnCdmaMode() == Phone.LTE_ON_CDMA_TRUE) {
                // UICC card contains both USIM and CSIM
                // Return consolidated status
                return getConsolidatedState(csimState, usimState, csimState);
            }

            // check for CDMA radio technology
            if (currentRadioState == RadioState.RUIM_LOCKED_OR_ABSENT ||
                currentRadioState == RadioState.RUIM_READY) {
                index = mIccCardStatus.getCdmaSubscriptionAppIndex();
                return csimState;
            }
            else {
                index = mIccCardStatus.getGsmUmtsSubscriptionAppIndex();
            return usimState;
        }

        return IccCard.State.ABSENT;
    }

    private State getAppState(int appIndex) {
        IccCardApplication app;
            if (index >= 0 && index < IccCardStatus.CARD_MAX_APPS) {
                app = mIccCardStatus.getApplication(index);
        if (appIndex >= 0 && appIndex < IccCardStatus.CARD_MAX_APPS) {
            app = mIccCardStatus.getApplication(appIndex);
        } else {
                Log.e(mLogTag, "[IccCard] Invalid Subscription Application index:" + index);
            Log.e(mLogTag, "[IccCard] Invalid Subscription Application index:" + appIndex);
            return IccCard.State.ABSENT;
        }

@@ -765,9 +780,19 @@ public abstract class IccCard {
        return IccCard.State.NOT_READY;
    }

        return IccCard.State.ABSENT;
    }
    private State getConsolidatedState(State left, State right, State preferredState) {
        // Check if either is absent.
        if (right == IccCard.State.ABSENT) return left;
        if (left == IccCard.State.ABSENT) return right;

        // Disregards if either is NOT_READY
        if (right == IccCard.State.NOT_READY) return left;
        if (left == IccCard.State.NOT_READY) return right;

        // At this point, FW currently just assumes the status will be
        // consistent across the applications...
        return preferredState;
    }

    public boolean isApplicationOnIcc(IccCardApplication.AppType type) {
        if (mIccCardStatus == null) return false;