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