1 /* 2 * Copyright (C) 2006 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.internal.telephony.uicc; 18 19 /** 20 * See also RIL_CardStatus in include/telephony/ril.h 21 * 22 * {@hide} 23 */ 24 public class IccCardStatus { 25 public static final int CARD_MAX_APPS = 8; 26 27 public enum CardState { 28 CARDSTATE_ABSENT, 29 CARDSTATE_PRESENT, 30 CARDSTATE_ERROR; 31 isCardPresent()32 boolean isCardPresent() { 33 return this == CARDSTATE_PRESENT; 34 } 35 } 36 37 public enum PinState { 38 PINSTATE_UNKNOWN, 39 PINSTATE_ENABLED_NOT_VERIFIED, 40 PINSTATE_ENABLED_VERIFIED, 41 PINSTATE_DISABLED, 42 PINSTATE_ENABLED_BLOCKED, 43 PINSTATE_ENABLED_PERM_BLOCKED; 44 isPermBlocked()45 boolean isPermBlocked() { 46 return this == PINSTATE_ENABLED_PERM_BLOCKED; 47 } 48 isPinRequired()49 boolean isPinRequired() { 50 return this == PINSTATE_ENABLED_NOT_VERIFIED; 51 } 52 isPukRequired()53 boolean isPukRequired() { 54 return this == PINSTATE_ENABLED_BLOCKED; 55 } 56 } 57 58 public CardState mCardState; 59 public PinState mUniversalPinState; 60 public int mGsmUmtsSubscriptionAppIndex; 61 public int mCdmaSubscriptionAppIndex; 62 public int mImsSubscriptionAppIndex; 63 64 public IccCardApplicationStatus[] mApplications; 65 setCardState(int state)66 public void setCardState(int state) { 67 switch(state) { 68 case 0: 69 mCardState = CardState.CARDSTATE_ABSENT; 70 break; 71 case 1: 72 mCardState = CardState.CARDSTATE_PRESENT; 73 break; 74 case 2: 75 mCardState = CardState.CARDSTATE_ERROR; 76 break; 77 default: 78 throw new RuntimeException("Unrecognized RIL_CardState: " + state); 79 } 80 } 81 setUniversalPinState(int state)82 public void setUniversalPinState(int state) { 83 switch(state) { 84 case 0: 85 mUniversalPinState = PinState.PINSTATE_UNKNOWN; 86 break; 87 case 1: 88 mUniversalPinState = PinState.PINSTATE_ENABLED_NOT_VERIFIED; 89 break; 90 case 2: 91 mUniversalPinState = PinState.PINSTATE_ENABLED_VERIFIED; 92 break; 93 case 3: 94 mUniversalPinState = PinState.PINSTATE_DISABLED; 95 break; 96 case 4: 97 mUniversalPinState = PinState.PINSTATE_ENABLED_BLOCKED; 98 break; 99 case 5: 100 mUniversalPinState = PinState.PINSTATE_ENABLED_PERM_BLOCKED; 101 break; 102 default: 103 throw new RuntimeException("Unrecognized RIL_PinState: " + state); 104 } 105 } 106 107 @Override toString()108 public String toString() { 109 IccCardApplicationStatus app; 110 111 StringBuilder sb = new StringBuilder(); 112 sb.append("IccCardState {").append(mCardState).append(",") 113 .append(mUniversalPinState) 114 .append(",num_apps=").append(mApplications.length) 115 .append(",gsm_id=").append(mGsmUmtsSubscriptionAppIndex); 116 if (mGsmUmtsSubscriptionAppIndex >=0 117 && mGsmUmtsSubscriptionAppIndex <CARD_MAX_APPS) { 118 app = mApplications[mGsmUmtsSubscriptionAppIndex]; 119 sb.append(app == null ? "null" : app); 120 } 121 122 sb.append(",cdma_id=").append(mCdmaSubscriptionAppIndex); 123 if (mCdmaSubscriptionAppIndex >=0 124 && mCdmaSubscriptionAppIndex <CARD_MAX_APPS) { 125 app = mApplications[mCdmaSubscriptionAppIndex]; 126 sb.append(app == null ? "null" : app); 127 } 128 129 sb.append(",ims_id=").append(mImsSubscriptionAppIndex); 130 if (mImsSubscriptionAppIndex >=0 131 && mImsSubscriptionAppIndex <CARD_MAX_APPS) { 132 app = mApplications[mImsSubscriptionAppIndex]; 133 sb.append(app == null ? "null" : app); 134 } 135 136 sb.append("}"); 137 138 return sb.toString(); 139 } 140 141 } 142