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