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

Commit 74c141c2 authored by Rakesh Pallerla's avatar Rakesh Pallerla Committed by Steve Kondik
Browse files

Telephony: Add functionality to handle ICC IO error

At present in Android all ICC Card states other than
ICC PRESENT are treated as ICC ABSENT.Adding functionality
to handle ICC IO error card state.

Change-Id: I229bd80cb5e487f4345bef9fb7fee60850f085d9
CRs-Fixed: 184479
(cherry picked from commit 5f414649d354f5b5f3208524e9827d488d183c76)
(cherry picked from commit fa5fb0852573189c107847da711ed61489cf92b5)
(cherry picked from commit 49e48d07a9cb7660d65ee3de30cf6e9f05bbc0ec)
parent 35d3ac55
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -168,6 +168,9 @@ public class PhoneStatusBarPolicy {
        if (IccCardConstants.INTENT_VALUE_ICC_ABSENT.equals(stateExtra)) {
            mSimState = IccCardConstants.State.ABSENT;
        }
        else if (IccCardConstants.INTENT_VALUE_ICC_CARD_IO_ERROR.equals(stateExtra)) {
            mSimState = IccCardConstants.State.CARD_IO_ERROR;
        }
        else if (IccCardConstants.INTENT_VALUE_ICC_READY.equals(stateExtra)) {
            mSimState = IccCardConstants.State.READY;
        }
+8 −0
Original line number Diff line number Diff line
@@ -819,6 +819,10 @@ public class TelephonyManager {
    public static final int SIM_STATE_NETWORK_LOCKED = 4;
    /** SIM card state: Ready */
    public static final int SIM_STATE_READY = 5;
    /** SIM card state: SIM Card Error, Sim Card is present but faulty
     *@hide
     */
    public static final int SIM_STATE_CARD_IO_ERROR = 6;

    /**
     * @return true if a ICC card is present
@@ -845,6 +849,7 @@ public class TelephonyManager {
     * @see #SIM_STATE_PUK_REQUIRED
     * @see #SIM_STATE_NETWORK_LOCKED
     * @see #SIM_STATE_READY
     * @see #SIM_STATE_CARD_IO_ERROR
     */
    public int getSimState() {
        String prop = SystemProperties.get(TelephonyProperties.PROPERTY_SIM_STATE);
@@ -863,6 +868,9 @@ public class TelephonyManager {
        else if ("READY".equals(prop)) {
            return SIM_STATE_READY;
        }
        else if ("CARD_IO_ERROR".equals(prop)) {
            return SIM_STATE_CARD_IO_ERROR;
        }
        else {
            return SIM_STATE_UNKNOWN;
        }
+5 −2
Original line number Diff line number Diff line
@@ -28,6 +28,8 @@ public class IccCardConstants {
    public static final String INTENT_VALUE_ICC_NOT_READY = "NOT_READY";
    /* ABSENT means ICC is missing */
    public static final String INTENT_VALUE_ICC_ABSENT = "ABSENT";
    /* CARD_IO_ERROR means for three consecutive times there was SIM IO error */
    public static final String INTENT_VALUE_ICC_CARD_IO_ERROR = "CARD_IO_ERROR";
    /* LOCKED means ICC is locked by pin or by network */
    public static final String INTENT_VALUE_ICC_LOCKED = "LOCKED";
    /* READY means ICC is ready to access */
@@ -63,7 +65,8 @@ public class IccCardConstants {
        NETWORK_LOCKED,
        READY,
        NOT_READY,
        PERM_DISABLED;
        PERM_DISABLED,
        CARD_IO_ERROR;

        public boolean isPinLocked() {
            return ((this == PIN_REQUIRED) || (this == PUK_REQUIRED));
@@ -72,7 +75,7 @@ public class IccCardConstants {
        public boolean iccCardExist() {
            return ((this == PIN_REQUIRED) || (this == PUK_REQUIRED)
                    || (this == NETWORK_LOCKED) || (this == READY)
                    || (this == PERM_DISABLED));
                    || (this == PERM_DISABLED) || (this == CARD_IO_ERROR));
        }
    }
}