blob: c751a21f24de2ce59d268458c636b53f80929915 [file] [log] [blame]
/*
* 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<IccCardApplication> mApplications =
new ArrayList<IccCardApplication>(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 <CARD_MAX_APPS) {
app = getApplication(mGsmUmtsSubscriptionAppIndex);
sb.append(app == null ? "null" : app);
}
sb.append(",cmda_id=").append(mCdmaSubscriptionAppIndex);
if (mCdmaSubscriptionAppIndex >=0
&& mCdmaSubscriptionAppIndex <CARD_MAX_APPS) {
app = getApplication(mCdmaSubscriptionAppIndex);
sb.append(app == null ? "null" : app);
}
sb.append(",ism_id=").append(mImsSubscriptionAppIndex);
sb.append("}");
return sb.toString();
}
}