104e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville/* 204e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville * Copyright (C) 2006 The Android Open Source Project 304e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville * 404e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville * Licensed under the Apache License, Version 2.0 (the "License"); 504e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville * you may not use this file except in compliance with the License. 604e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville * You may obtain a copy of the License at 704e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville * 804e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville * http://www.apache.org/licenses/LICENSE-2.0 904e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville * 1004e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville * Unless required by applicable law or agreed to in writing, software 1104e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville * distributed under the License is distributed on an "AS IS" BASIS, 1204e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1304e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville * See the License for the specific language governing permissions and 1404e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville * limitations under the License. 1504e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville */ 1604e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville 1704e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Savillepackage com.android.internal.telephony; 1804e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville 1904e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Savilleimport java.util.ArrayList; 2004e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville 2104e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville/** 2204e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville * See also RIL_CardStatus in include/telephony/ril.h 2304e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville * 2404e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville * {@hide} 2504e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville */ 2604e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Savillepublic class IccCardStatus { 2704e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville static final int CARD_MAX_APPS = 8; 2804e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville 2904e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville public enum CardState { 3004e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville CARDSTATE_ABSENT, 3104e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville CARDSTATE_PRESENT, 3204e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville CARDSTATE_ERROR; 3304e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville 3404e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville boolean isCardPresent() { 3504e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville return this == CARDSTATE_PRESENT; 3604e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville } 3704e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville }; 3804e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville 3904e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville public enum PinState { 4004e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville PINSTATE_UNKNOWN, 4104e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville PINSTATE_ENABLED_NOT_VERIFIED, 4204e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville PINSTATE_ENABLED_VERIFIED, 4304e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville PINSTATE_DISABLED, 4404e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville PINSTATE_ENABLED_BLOCKED, 4504e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville PINSTATE_ENABLED_PERM_BLOCKED 4604e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville }; 4704e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville 48cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh private CardState mCardState; 49cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh private PinState mUniversalPinState; 50cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh private int mGsmUmtsSubscriptionAppIndex; 51cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh private int mCdmaSubscriptionAppIndex; 52cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh private int mNumApplications; 5304e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville 54cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh private ArrayList<IccCardApplication> mApplications = 55cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh new ArrayList<IccCardApplication>(CARD_MAX_APPS); 5604e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville 57cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh public CardState getCardState() { 58cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh return mCardState; 59cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh } 60cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh 61cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh public void setCardState(int state) { 6204e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville switch(state) { 63cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh case 0: 64cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh mCardState = CardState.CARDSTATE_ABSENT; 65cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh break; 66cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh case 1: 67cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh mCardState = CardState.CARDSTATE_PRESENT; 68cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh break; 69cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh case 2: 70cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh mCardState = CardState.CARDSTATE_ERROR; 71cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh break; 72cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh default: 73cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh throw new RuntimeException("Unrecognized RIL_CardState: " + state); 7404e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville } 7504e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville } 7604e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville 77cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh public void setUniversalPinState(int state) { 7804e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville switch(state) { 79cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh case 0: 80cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh mUniversalPinState = PinState.PINSTATE_UNKNOWN; 81cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh break; 82cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh case 1: 83cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh mUniversalPinState = PinState.PINSTATE_ENABLED_NOT_VERIFIED; 84cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh break; 85cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh case 2: 86cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh mUniversalPinState = PinState.PINSTATE_ENABLED_VERIFIED; 87cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh break; 88cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh case 3: 89cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh mUniversalPinState = PinState.PINSTATE_DISABLED; 90cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh break; 91cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh case 4: 92cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh mUniversalPinState = PinState.PINSTATE_ENABLED_BLOCKED; 93cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh break; 94cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh case 5: 95cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh mUniversalPinState = PinState.PINSTATE_ENABLED_PERM_BLOCKED; 96cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh break; 97cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh default: 98cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh throw new RuntimeException("Unrecognized RIL_PinState: " + state); 9904e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville } 100cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh } 101cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh 102cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh public int getGsmUmtsSubscriptionAppIndex() { 103cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh return mGsmUmtsSubscriptionAppIndex; 104cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh } 105cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh 106cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh public void setGsmUmtsSubscriptionAppIndex(int gsmUmtsSubscriptionAppIndex) { 107cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh mGsmUmtsSubscriptionAppIndex = gsmUmtsSubscriptionAppIndex; 108cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh } 109cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh 110cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh public int getCdmaSubscriptionAppIndex() { 111cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh return mCdmaSubscriptionAppIndex; 112cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh } 113cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh 114cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh public void setCdmaSubscriptionAppIndex(int cdmaSubscriptionAppIndex) { 115cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh mCdmaSubscriptionAppIndex = cdmaSubscriptionAppIndex; 116cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh } 117cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh 118cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh public int getNumApplications() { 119cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh return mNumApplications; 120cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh } 121cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh 122cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh public void setNumApplications(int numApplications) { 123cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh mNumApplications = numApplications; 124cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh } 125cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh 126cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh public void addApplication(IccCardApplication application) { 127cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh mApplications.add(application); 128cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh } 129cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh 130cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh public IccCardApplication getApplication(int index) { 131cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh return mApplications.get(index); 13204e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville } 13304e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville} 134