/* * Copyright (C) 2006 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.internal.telephony; import java.util.ArrayList; /** * See also RIL_CardStatus in include/telephony/ril.h * * {@hide} */ public class IccCardStatus { static final int CARD_MAX_APPS = 8; public enum CardState { CARDSTATE_ABSENT, CARDSTATE_PRESENT, CARDSTATE_ERROR; boolean isCardPresent() { return this == CARDSTATE_PRESENT; } } public enum PinState { PINSTATE_UNKNOWN, PINSTATE_ENABLED_NOT_VERIFIED, PINSTATE_ENABLED_VERIFIED, PINSTATE_DISABLED, PINSTATE_ENABLED_BLOCKED, PINSTATE_ENABLED_PERM_BLOCKED; boolean isPermBlocked() { return this == PINSTATE_ENABLED_PERM_BLOCKED; } boolean isPinRequired() { return this == PINSTATE_ENABLED_NOT_VERIFIED; } boolean isPukRequired() { return this == PINSTATE_ENABLED_BLOCKED; } } private CardState mCardState; private PinState mUniversalPinState; private int mGsmUmtsSubscriptionAppIndex; private int mCdmaSubscriptionAppIndex; private int mImsSubscriptionAppIndex; private int mNumApplications; private ArrayList mApplications = new ArrayList(CARD_MAX_APPS); public CardState getCardState() { return mCardState; } public void setCardState(int state) { switch(state) { case 0: mCardState = CardState.CARDSTATE_ABSENT; break; case 1: mCardState = CardState.CARDSTATE_PRESENT; break; case 2: mCardState = CardState.CARDSTATE_ERROR; break; default: throw new RuntimeException("Unrecognized RIL_CardState: " + state); } } public PinState getUniversalPinState() { return mUniversalPinState; } public void setUniversalPinState(int state) { switch(state) { case 0: mUniversalPinState = PinState.PINSTATE_UNKNOWN; break; case 1: mUniversalPinState = PinState.PINSTATE_ENABLED_NOT_VERIFIED; break; case 2: mUniversalPinState = PinState.PINSTATE_ENABLED_VERIFIED; break; case 3: mUniversalPinState = PinState.PINSTATE_DISABLED; break; case 4: mUniversalPinState = PinState.PINSTATE_ENABLED_BLOCKED; break; case 5: mUniversalPinState = PinState.PINSTATE_ENABLED_PERM_BLOCKED; break; default: throw new RuntimeException("Unrecognized RIL_PinState: " + state); } } public int getGsmUmtsSubscriptionAppIndex() { return mGsmUmtsSubscriptionAppIndex; } public void setGsmUmtsSubscriptionAppIndex(int gsmUmtsSubscriptionAppIndex) { mGsmUmtsSubscriptionAppIndex = gsmUmtsSubscriptionAppIndex; } public int getCdmaSubscriptionAppIndex() { return mCdmaSubscriptionAppIndex; } public void setCdmaSubscriptionAppIndex(int cdmaSubscriptionAppIndex) { mCdmaSubscriptionAppIndex = cdmaSubscriptionAppIndex; } public int getImsSubscriptionAppIndex() { return mImsSubscriptionAppIndex; } public void setImsSubscriptionAppIndex(int imsSubscriptionAppIndex) { mImsSubscriptionAppIndex = imsSubscriptionAppIndex; } public int getNumApplications() { return mNumApplications; } public void setNumApplications(int numApplications) { mNumApplications = numApplications; } public void addApplication(IccCardApplication application) { mApplications.add(application); } public IccCardApplication getApplication(int index) { return mApplications.get(index); } @Override public String toString() { IccCardApplication app; StringBuilder sb = new StringBuilder(); sb.append("IccCardState {").append(mCardState).append(",") .append(mUniversalPinState) .append(",num_apps=").append(mNumApplications) .append(",gsm_id=").append(mGsmUmtsSubscriptionAppIndex); if (mGsmUmtsSubscriptionAppIndex >=0 && mGsmUmtsSubscriptionAppIndex