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

Commit 475c36f4 authored by Sarah Chin's avatar Sarah Chin Committed by Automerger Merge Worker
Browse files

Merge "Add response for CardStatus and update PersoSubstate" into rvc-dev am: 5944637d

Change-Id: Iacd7edc7315e2e4ec52bdde00170c4f7e0ac6d52
parents 8ca113d9 5944637d
Loading
Loading
Loading
Loading
+65 −0
Original line number Diff line number Diff line
@@ -126,6 +126,15 @@ public class RadioResponse extends IRadioResponse.Stub {
        responseIccCardStatus_1_4(responseInfo, cardStatus);
    }

    /**
     * @param responseInfo Response info struct containing response type, serial no. and error
     * @param cardStatus ICC card status as defined by CardStatus in 1.5/types.hal
     */
    public void getIccCardStatusResponse_1_5(RadioResponseInfo responseInfo,
            android.hardware.radio.V1_5.CardStatus cardStatus) {
        responseIccCardStatus_1_5(responseInfo, cardStatus);
    }

    /**
     * @param responseInfo Response info struct containing response type, serial no. and error
     * @param remainingAttempts Number of retries remaining, must be equal to -1 if unknown.
@@ -1677,6 +1686,48 @@ public class RadioResponse extends IRadioResponse.Stub {
        return iccCardStatus;
    }

    private IccCardStatus convertHalCardStatus_1_5(
            android.hardware.radio.V1_5.CardStatus cardStatus) {
        IccCardStatus iccCardStatus = new IccCardStatus();
        iccCardStatus.setCardState(cardStatus.base.base.base.cardState);
        iccCardStatus.setUniversalPinState(cardStatus.base.base.base.universalPinState);
        iccCardStatus.mGsmUmtsSubscriptionAppIndex =
                cardStatus.base.base.base.gsmUmtsSubscriptionAppIndex;
        iccCardStatus.mCdmaSubscriptionAppIndex =
                cardStatus.base.base.base.cdmaSubscriptionAppIndex;
        iccCardStatus.mImsSubscriptionAppIndex =
                cardStatus.base.base.base.imsSubscriptionAppIndex;
        iccCardStatus.physicalSlotIndex = cardStatus.base.base.physicalSlotId;
        iccCardStatus.atr = cardStatus.base.base.atr;
        iccCardStatus.iccid = cardStatus.base.base.iccid;
        iccCardStatus.eid = cardStatus.base.eid;
        int numApplications = cardStatus.applications.size();

        // limit to maximum allowed applications
        if (numApplications
                > com.android.internal.telephony.uicc.IccCardStatus.CARD_MAX_APPS) {
            numApplications =
                    com.android.internal.telephony.uicc.IccCardStatus.CARD_MAX_APPS;
        }
        iccCardStatus.mApplications = new IccCardApplicationStatus[numApplications];
        for (int i = 0; i < numApplications; i++) {
            android.hardware.radio.V1_5.AppStatus rilAppStatus = cardStatus.applications.get(i);
            IccCardApplicationStatus appStatus = new IccCardApplicationStatus();
            appStatus.app_type       = appStatus.AppTypeFromRILInt(rilAppStatus.base.appType);
            appStatus.app_state      = appStatus.AppStateFromRILInt(rilAppStatus.base.appState);
            appStatus.perso_substate = appStatus.PersoSubstateFromRILInt(
                    rilAppStatus.persoSubstate);
            appStatus.aid            = rilAppStatus.base.aidPtr;
            appStatus.app_label      = rilAppStatus.base.appLabelPtr;
            appStatus.pin1_replaced  = rilAppStatus.base.pin1Replaced;
            appStatus.pin1           = appStatus.PinStateFromRILInt(rilAppStatus.base.pin1);
            appStatus.pin2           = appStatus.PinStateFromRILInt(rilAppStatus.base.pin2);
            iccCardStatus.mApplications[i] = appStatus;
            mRil.riljLog("IccCardApplicationStatus " + i + ":" + appStatus.toString());
        }
        return iccCardStatus;
    }

    private void responseIccCardStatus(RadioResponseInfo responseInfo, CardStatus cardStatus) {
        RILRequest rr = mRil.processResponse(responseInfo);

@@ -1725,6 +1776,20 @@ public class RadioResponse extends IRadioResponse.Stub {
        }
    }

    private void responseIccCardStatus_1_5(RadioResponseInfo responseInfo,
            android.hardware.radio.V1_5.CardStatus cardStatus) {
        RILRequest rr = mRil.processResponse(responseInfo);

        if (rr != null) {
            IccCardStatus iccCardStatus = convertHalCardStatus_1_5(cardStatus);
            mRil.riljLog("responseIccCardStatus: from HIDL: " + iccCardStatus);
            if (responseInfo.error == RadioError.NONE) {
                sendMessageResponse(rr.mResult, iccCardStatus);
            }
            mRil.processResponseDone(rr, responseInfo, iccCardStatus);
        }
    }

    /**
     * @param responseInfo Response info struct containing response type, serial no. and error
     */
+19 −1
Original line number Diff line number Diff line
@@ -116,7 +116,16 @@ public class IccCardApplicationStatus {
        PERSOSUBSTATE_RUIM_HRPD_PUK,
        PERSOSUBSTATE_RUIM_CORPORATE_PUK,
        PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK,
        PERSOSUBSTATE_RUIM_RUIM_PUK;
        PERSOSUBSTATE_RUIM_RUIM_PUK,
        PERSOSUBSTATE_SIM_SPN,
        PERSOSUBSTATE_SIM_SPN_PUK,
        PERSOSUBSTATE_SIM_SP_EHPLMN,
        PERSOSUBSTATE_SIM_ICCID,
        PERSOSUBSTATE_SIM_ICCID_PUK,
        PERSOSUBSTATE_SIM_IMPI,
        PERSOSUBSTATE_SIM_IMPI_PUK,
        PERSOSUBSTATE_SIM_NS_SP,
        PERSOSUBSTATE_SIM_NS_SP_PUK;

        boolean isPersoSubStateUnknown() {
            return this == PERSOSUBSTATE_UNKNOWN;
@@ -205,6 +214,15 @@ public class IccCardApplicationStatus {
            case 22: newSubState = PersoSubState.PERSOSUBSTATE_RUIM_CORPORATE_PUK; break;
            case 23: newSubState = PersoSubState.PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK; break;
            case 24: newSubState = PersoSubState.PERSOSUBSTATE_RUIM_RUIM_PUK; break;
            case 25: newSubState = PersoSubState.PERSOSUBSTATE_SIM_SPN; break;
            case 26: newSubState = PersoSubState.PERSOSUBSTATE_SIM_SPN_PUK; break;
            case 27: newSubState = PersoSubState.PERSOSUBSTATE_SIM_SP_EHPLMN; break;
            case 28: newSubState = PersoSubState.PERSOSUBSTATE_SIM_ICCID; break;
            case 29: newSubState = PersoSubState.PERSOSUBSTATE_SIM_ICCID_PUK; break;
            case 30: newSubState = PersoSubState.PERSOSUBSTATE_SIM_IMPI; break;
            case 31: newSubState = PersoSubState.PERSOSUBSTATE_SIM_IMPI_PUK; break;
            case 32: newSubState = PersoSubState.PERSOSUBSTATE_SIM_NS_SP; break;
            case 33: newSubState = PersoSubState.PERSOSUBSTATE_SIM_NS_SP_PUK; break;
            default:
                newSubState = PersoSubState.PERSOSUBSTATE_UNKNOWN;
                loge("PersoSubstateFromRILInt: bad substate: " + substate