133034b13cae1429d526722374bd39be3f9605ae4Wink Saville/* 233034b13cae1429d526722374bd39be3f9605ae4Wink Saville * Copyright (C) 2012 The Android Open Source Project 333034b13cae1429d526722374bd39be3f9605ae4Wink Saville * 433034b13cae1429d526722374bd39be3f9605ae4Wink Saville * Licensed under the Apache License, Version 2.0 (the "License"); 533034b13cae1429d526722374bd39be3f9605ae4Wink Saville * you may not use this file except in compliance with the License. 633034b13cae1429d526722374bd39be3f9605ae4Wink Saville * You may obtain a copy of the License at 733034b13cae1429d526722374bd39be3f9605ae4Wink Saville * 833034b13cae1429d526722374bd39be3f9605ae4Wink Saville * http://www.apache.org/licenses/LICENSE-2.0 933034b13cae1429d526722374bd39be3f9605ae4Wink Saville * 1033034b13cae1429d526722374bd39be3f9605ae4Wink Saville * Unless required by applicable law or agreed to in writing, software 1133034b13cae1429d526722374bd39be3f9605ae4Wink Saville * distributed under the License is distributed on an "AS IS" BASIS, 1233034b13cae1429d526722374bd39be3f9605ae4Wink Saville * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1333034b13cae1429d526722374bd39be3f9605ae4Wink Saville * See the License for the specific language governing permissions and 1433034b13cae1429d526722374bd39be3f9605ae4Wink Saville * limitations under the License. 1533034b13cae1429d526722374bd39be3f9605ae4Wink Saville */ 1633034b13cae1429d526722374bd39be3f9605ae4Wink Savillepackage com.android.internal.telephony; 1733034b13cae1429d526722374bd39be3f9605ae4Wink Saville 1847920fac33efb7ce4bf33a5691e4af1b67ab6019Wink Savilleimport android.telephony.TelephonyManager; 1947920fac33efb7ce4bf33a5691e4af1b67ab6019Wink Saville 2033034b13cae1429d526722374bd39be3f9605ae4Wink Saville/** 2133034b13cae1429d526722374bd39be3f9605ae4Wink Saville * {@hide} 2233034b13cae1429d526722374bd39be3f9605ae4Wink Saville */ 2333034b13cae1429d526722374bd39be3f9605ae4Wink Savillepublic class IccCardConstants { 2433034b13cae1429d526722374bd39be3f9605ae4Wink Saville 2547920fac33efb7ce4bf33a5691e4af1b67ab6019Wink Saville /* The extra data for broadcasting intent INTENT_ICC_STATE_CHANGE */ 2633034b13cae1429d526722374bd39be3f9605ae4Wink Saville public static final String INTENT_KEY_ICC_STATE = "ss"; 27ceb9bbc5df7c384d5a6b3dec916e1c838f994536Alex Yakavenka /* UNKNOWN means the ICC state is unknown */ 28ceb9bbc5df7c384d5a6b3dec916e1c838f994536Alex Yakavenka public static final String INTENT_VALUE_ICC_UNKNOWN = "UNKNOWN"; 2933034b13cae1429d526722374bd39be3f9605ae4Wink Saville /* NOT_READY means the ICC interface is not ready (eg, radio is off or powering on) */ 3033034b13cae1429d526722374bd39be3f9605ae4Wink Saville public static final String INTENT_VALUE_ICC_NOT_READY = "NOT_READY"; 3133034b13cae1429d526722374bd39be3f9605ae4Wink Saville /* ABSENT means ICC is missing */ 3233034b13cae1429d526722374bd39be3f9605ae4Wink Saville public static final String INTENT_VALUE_ICC_ABSENT = "ABSENT"; 33f099a5f389a43a1a1f0abc6577e45c7dfca14c5cRakesh Pallerla /* CARD_IO_ERROR means for three consecutive times there was SIM IO error */ 34f099a5f389a43a1a1f0abc6577e45c7dfca14c5cRakesh Pallerla static public final String INTENT_VALUE_ICC_CARD_IO_ERROR = "CARD_IO_ERROR"; 35a2f6a675112fa7029dbdd51eb6379bc9ce2bbf53Junda Liu /* CARD_RESTRICTED means card is present but not usable due to carrier restrictions */ 36a2f6a675112fa7029dbdd51eb6379bc9ce2bbf53Junda Liu static public final String INTENT_VALUE_ICC_CARD_RESTRICTED = "CARD_RESTRICTED"; 3733034b13cae1429d526722374bd39be3f9605ae4Wink Saville /* LOCKED means ICC is locked by pin or by network */ 3833034b13cae1429d526722374bd39be3f9605ae4Wink Saville public static final String INTENT_VALUE_ICC_LOCKED = "LOCKED"; 3918b9c3cb506ae99bed1e9e95757a22b234cf366bxinhe //TODO: we can remove this state in the future if Bug 18489776 analysis 4018b9c3cb506ae99bed1e9e95757a22b234cf366bxinhe //#42's first race condition is resolved 4118b9c3cb506ae99bed1e9e95757a22b234cf366bxinhe /* INTERNAL LOCKED means ICC is locked by pin or by network */ 4218b9c3cb506ae99bed1e9e95757a22b234cf366bxinhe public static final String INTENT_VALUE_ICC_INTERNAL_LOCKED = "INTERNAL_LOCKED"; 4333034b13cae1429d526722374bd39be3f9605ae4Wink Saville /* READY means ICC is ready to access */ 4433034b13cae1429d526722374bd39be3f9605ae4Wink Saville public static final String INTENT_VALUE_ICC_READY = "READY"; 4533034b13cae1429d526722374bd39be3f9605ae4Wink Saville /* IMSI means ICC IMSI is ready in property */ 4633034b13cae1429d526722374bd39be3f9605ae4Wink Saville public static final String INTENT_VALUE_ICC_IMSI = "IMSI"; 4733034b13cae1429d526722374bd39be3f9605ae4Wink Saville /* LOADED means all ICC records, including IMSI, are loaded */ 4833034b13cae1429d526722374bd39be3f9605ae4Wink Saville public static final String INTENT_VALUE_ICC_LOADED = "LOADED"; 4947920fac33efb7ce4bf33a5691e4af1b67ab6019Wink Saville /* The extra data for broadcasting intent INTENT_ICC_STATE_CHANGE */ 5033034b13cae1429d526722374bd39be3f9605ae4Wink Saville public static final String INTENT_KEY_LOCKED_REASON = "reason"; 5133034b13cae1429d526722374bd39be3f9605ae4Wink Saville /* PIN means ICC is locked on PIN1 */ 5233034b13cae1429d526722374bd39be3f9605ae4Wink Saville public static final String INTENT_VALUE_LOCKED_ON_PIN = "PIN"; 5333034b13cae1429d526722374bd39be3f9605ae4Wink Saville /* PUK means ICC is locked on PUK1 */ 5433034b13cae1429d526722374bd39be3f9605ae4Wink Saville public static final String INTENT_VALUE_LOCKED_ON_PUK = "PUK"; 5533034b13cae1429d526722374bd39be3f9605ae4Wink Saville /* NETWORK means ICC is locked on NETWORK PERSONALIZATION */ 5633034b13cae1429d526722374bd39be3f9605ae4Wink Saville public static final String INTENT_VALUE_LOCKED_NETWORK = "NETWORK"; 5733034b13cae1429d526722374bd39be3f9605ae4Wink Saville /* PERM_DISABLED means ICC is permanently disabled due to puk fails */ 5833034b13cae1429d526722374bd39be3f9605ae4Wink Saville public static final String INTENT_VALUE_ABSENT_ON_PERM_DISABLED = "PERM_DISABLED"; 5933034b13cae1429d526722374bd39be3f9605ae4Wink Saville 60022668bf33ead5de5eb8633f0dea2b0f30455df6Alex Yakavenka /** 61022668bf33ead5de5eb8633f0dea2b0f30455df6Alex Yakavenka * This is combination of IccCardStatus.CardState and IccCardApplicationStatus.AppState 62022668bf33ead5de5eb8633f0dea2b0f30455df6Alex Yakavenka * for external apps (like PhoneApp) to use 63022668bf33ead5de5eb8633f0dea2b0f30455df6Alex Yakavenka * 64022668bf33ead5de5eb8633f0dea2b0f30455df6Alex Yakavenka * UNKNOWN is a transient state, for example, after user inputs ICC pin under 65022668bf33ead5de5eb8633f0dea2b0f30455df6Alex Yakavenka * PIN_REQUIRED state, the query for ICC status returns UNKNOWN before it 66022668bf33ead5de5eb8633f0dea2b0f30455df6Alex Yakavenka * turns to READY 6747920fac33efb7ce4bf33a5691e4af1b67ab6019Wink Saville * 6847920fac33efb7ce4bf33a5691e4af1b67ab6019Wink Saville * The ordinal values much match {@link TelephonyManager#SIM_STATE_UNKNOWN} ... 6933034b13cae1429d526722374bd39be3f9605ae4Wink Saville */ 7033034b13cae1429d526722374bd39be3f9605ae4Wink Saville public enum State { 7147920fac33efb7ce4bf33a5691e4af1b67ab6019Wink Saville UNKNOWN, /** ordinal(0) == {@See TelephonyManager#SIM_STATE_UNKNOWN} */ 7247920fac33efb7ce4bf33a5691e4af1b67ab6019Wink Saville ABSENT, /** ordinal(1) == {@See TelephonyManager#SIM_STATE_ABSENT} */ 7347920fac33efb7ce4bf33a5691e4af1b67ab6019Wink Saville PIN_REQUIRED, /** ordinal(2) == {@See TelephonyManager#SIM_STATE_PIN_REQUIRED} */ 7447920fac33efb7ce4bf33a5691e4af1b67ab6019Wink Saville PUK_REQUIRED, /** ordinal(3) == {@See TelephonyManager#SIM_STATE_PUK_REQUIRED} */ 7547920fac33efb7ce4bf33a5691e4af1b67ab6019Wink Saville NETWORK_LOCKED, /** ordinal(4) == {@See TelephonyManager#SIM_STATE_NETWORK_LOCKED} */ 7647920fac33efb7ce4bf33a5691e4af1b67ab6019Wink Saville READY, /** ordinal(5) == {@See TelephonyManager#SIM_STATE_READY} */ 7747920fac33efb7ce4bf33a5691e4af1b67ab6019Wink Saville NOT_READY, /** ordinal(6) == {@See TelephonyManager#SIM_STATE_NOT_READY} */ 7847920fac33efb7ce4bf33a5691e4af1b67ab6019Wink Saville PERM_DISABLED, /** ordinal(7) == {@See TelephonyManager#SIM_STATE_PERM_DISABLED} */ 79a2f6a675112fa7029dbdd51eb6379bc9ce2bbf53Junda Liu CARD_IO_ERROR, /** ordinal(8) == {@See TelephonyManager#SIM_STATE_CARD_IO_ERROR} */ 80a2f6a675112fa7029dbdd51eb6379bc9ce2bbf53Junda Liu CARD_RESTRICTED;/** ordinal(9) == {@See TelephonyManager#SIM_STATE_CARD_RESTRICTED} */ 8133034b13cae1429d526722374bd39be3f9605ae4Wink Saville 8233034b13cae1429d526722374bd39be3f9605ae4Wink Saville public boolean isPinLocked() { 8333034b13cae1429d526722374bd39be3f9605ae4Wink Saville return ((this == PIN_REQUIRED) || (this == PUK_REQUIRED)); 8433034b13cae1429d526722374bd39be3f9605ae4Wink Saville } 8533034b13cae1429d526722374bd39be3f9605ae4Wink Saville 8633034b13cae1429d526722374bd39be3f9605ae4Wink Saville public boolean iccCardExist() { 8733034b13cae1429d526722374bd39be3f9605ae4Wink Saville return ((this == PIN_REQUIRED) || (this == PUK_REQUIRED) 8833034b13cae1429d526722374bd39be3f9605ae4Wink Saville || (this == NETWORK_LOCKED) || (this == READY) 89a2f6a675112fa7029dbdd51eb6379bc9ce2bbf53Junda Liu || (this == PERM_DISABLED) || (this == CARD_IO_ERROR) 90a2f6a675112fa7029dbdd51eb6379bc9ce2bbf53Junda Liu || (this == CARD_RESTRICTED)); 9133034b13cae1429d526722374bd39be3f9605ae4Wink Saville } 9218b9c3cb506ae99bed1e9e95757a22b234cf366bxinhe 9318b9c3cb506ae99bed1e9e95757a22b234cf366bxinhe public static State intToState(int state) throws IllegalArgumentException { 9418b9c3cb506ae99bed1e9e95757a22b234cf366bxinhe switch(state) { 9518b9c3cb506ae99bed1e9e95757a22b234cf366bxinhe case 0: return UNKNOWN; 9618b9c3cb506ae99bed1e9e95757a22b234cf366bxinhe case 1: return ABSENT; 9718b9c3cb506ae99bed1e9e95757a22b234cf366bxinhe case 2: return PIN_REQUIRED; 9818b9c3cb506ae99bed1e9e95757a22b234cf366bxinhe case 3: return PUK_REQUIRED; 9918b9c3cb506ae99bed1e9e95757a22b234cf366bxinhe case 4: return NETWORK_LOCKED; 10018b9c3cb506ae99bed1e9e95757a22b234cf366bxinhe case 5: return READY; 10118b9c3cb506ae99bed1e9e95757a22b234cf366bxinhe case 6: return NOT_READY; 10218b9c3cb506ae99bed1e9e95757a22b234cf366bxinhe case 7: return PERM_DISABLED; 10318b9c3cb506ae99bed1e9e95757a22b234cf366bxinhe case 8: return CARD_IO_ERROR; 104a2f6a675112fa7029dbdd51eb6379bc9ce2bbf53Junda Liu case 9: return CARD_RESTRICTED; 10518b9c3cb506ae99bed1e9e95757a22b234cf366bxinhe default: 10618b9c3cb506ae99bed1e9e95757a22b234cf366bxinhe throw new IllegalArgumentException(); 10718b9c3cb506ae99bed1e9e95757a22b234cf366bxinhe } 10818b9c3cb506ae99bed1e9e95757a22b234cf366bxinhe } 10933034b13cae1429d526722374bd39be3f9605ae4Wink Saville } 11033034b13cae1429d526722374bd39be3f9605ae4Wink Saville} 111