2 * Copyright (C) 2006 The Android Open Source Project
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 package com.android.internal.telephony.uicc;
19 import com.android.internal.telephony.uicc.IccCardStatus.PinState;
23 * See also RIL_AppStatus in include/telephony/ril.h
27 public class IccCardApplicationStatus {
42 APPSTATE_SUBSCRIPTION_PERSO,
45 boolean isPinRequired() {
46 return this == APPSTATE_PIN;
49 boolean isPukRequired() {
50 return this == APPSTATE_PUK;
53 boolean isSubscriptionPersoEnabled() {
54 return this == APPSTATE_SUBSCRIPTION_PERSO;
57 boolean isAppReady() {
58 return this == APPSTATE_READY;
61 boolean isAppNotReady() {
62 return this == APPSTATE_UNKNOWN ||
63 this == APPSTATE_DETECTED;
67 public enum PersoSubState{
68 PERSOSUBSTATE_UNKNOWN,
69 PERSOSUBSTATE_IN_PROGRESS,
71 PERSOSUBSTATE_SIM_NETWORK,
72 PERSOSUBSTATE_SIM_NETWORK_SUBSET,
73 PERSOSUBSTATE_SIM_CORPORATE,
74 PERSOSUBSTATE_SIM_SERVICE_PROVIDER,
75 PERSOSUBSTATE_SIM_SIM,
76 PERSOSUBSTATE_SIM_NETWORK_PUK,
77 PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK,
78 PERSOSUBSTATE_SIM_CORPORATE_PUK,
79 PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK,
80 PERSOSUBSTATE_SIM_SIM_PUK,
81 PERSOSUBSTATE_RUIM_NETWORK1,
82 PERSOSUBSTATE_RUIM_NETWORK2,
83 PERSOSUBSTATE_RUIM_HRPD,
84 PERSOSUBSTATE_RUIM_CORPORATE,
85 PERSOSUBSTATE_RUIM_SERVICE_PROVIDER,
86 PERSOSUBSTATE_RUIM_RUIM,
87 PERSOSUBSTATE_RUIM_NETWORK1_PUK,
88 PERSOSUBSTATE_RUIM_NETWORK2_PUK,
89 PERSOSUBSTATE_RUIM_HRPD_PUK,
90 PERSOSUBSTATE_RUIM_CORPORATE_PUK,
91 PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK,
92 PERSOSUBSTATE_RUIM_RUIM_PUK;
94 boolean isPersoSubStateUnknown() {
95 return this == PERSOSUBSTATE_UNKNOWN;
99 public AppType app_type;
100 public AppState app_state;
101 // applicable only if app_state == RIL_APPSTATE_SUBSCRIPTION_PERSO
102 public PersoSubState perso_substate;
103 // null terminated string, e.g., from 0xA0, 0x00 -> 0x41, 0x30, 0x30, 0x30 */
105 // null terminated string
106 public String app_label;
107 // applicable to USIM and CSIM
108 public int pin1_replaced;
109 public PinState pin1;
110 public PinState pin2;
112 public AppType AppTypeFromRILInt(int type) {
114 /* RIL_AppType ril.h */
116 case 0: newType = AppType.APPTYPE_UNKNOWN; break;
117 case 1: newType = AppType.APPTYPE_SIM; break;
118 case 2: newType = AppType.APPTYPE_USIM; break;
119 case 3: newType = AppType.APPTYPE_RUIM; break;
120 case 4: newType = AppType.APPTYPE_CSIM; break;
121 case 5: newType = AppType.APPTYPE_ISIM; break;
123 throw new RuntimeException(
124 "Unrecognized RIL_AppType: " +type);
129 public AppState AppStateFromRILInt(int state) {
131 /* RIL_AppState ril.h */
133 case 0: newState = AppState.APPSTATE_UNKNOWN; break;
134 case 1: newState = AppState.APPSTATE_DETECTED; break;
135 case 2: newState = AppState.APPSTATE_PIN; break;
136 case 3: newState = AppState.APPSTATE_PUK; break;
137 case 4: newState = AppState.APPSTATE_SUBSCRIPTION_PERSO; break;
138 case 5: newState = AppState.APPSTATE_READY; break;
140 throw new RuntimeException(
141 "Unrecognized RIL_AppState: " +state);
146 public PersoSubState PersoSubstateFromRILInt(int substate) {
147 PersoSubState newSubState;
148 /* RIL_PeroSubstate ril.h */
150 case 0: newSubState = PersoSubState.PERSOSUBSTATE_UNKNOWN; break;
151 case 1: newSubState = PersoSubState.PERSOSUBSTATE_IN_PROGRESS; break;
152 case 2: newSubState = PersoSubState.PERSOSUBSTATE_READY; break;
153 case 3: newSubState = PersoSubState.PERSOSUBSTATE_SIM_NETWORK; break;
154 case 4: newSubState = PersoSubState.PERSOSUBSTATE_SIM_NETWORK_SUBSET; break;
155 case 5: newSubState = PersoSubState.PERSOSUBSTATE_SIM_CORPORATE; break;
156 case 6: newSubState = PersoSubState.PERSOSUBSTATE_SIM_SERVICE_PROVIDER; break;
157 case 7: newSubState = PersoSubState.PERSOSUBSTATE_SIM_SIM; break;
158 case 8: newSubState = PersoSubState.PERSOSUBSTATE_SIM_NETWORK_PUK; break;
159 case 9: newSubState = PersoSubState.PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK; break;
160 case 10: newSubState = PersoSubState.PERSOSUBSTATE_SIM_CORPORATE_PUK; break;
161 case 11: newSubState = PersoSubState.PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK; break;
162 case 12: newSubState = PersoSubState.PERSOSUBSTATE_SIM_SIM_PUK; break;
163 case 13: newSubState = PersoSubState.PERSOSUBSTATE_RUIM_NETWORK1; break;
164 case 14: newSubState = PersoSubState.PERSOSUBSTATE_RUIM_NETWORK2; break;
165 case 15: newSubState = PersoSubState.PERSOSUBSTATE_RUIM_HRPD; break;
166 case 16: newSubState = PersoSubState.PERSOSUBSTATE_RUIM_CORPORATE; break;
167 case 17: newSubState = PersoSubState.PERSOSUBSTATE_RUIM_SERVICE_PROVIDER; break;
168 case 18: newSubState = PersoSubState.PERSOSUBSTATE_RUIM_RUIM; break;
169 case 19: newSubState = PersoSubState.PERSOSUBSTATE_RUIM_NETWORK1_PUK; break;
170 case 20: newSubState = PersoSubState.PERSOSUBSTATE_RUIM_NETWORK2_PUK; break;
171 case 21: newSubState = PersoSubState.PERSOSUBSTATE_RUIM_HRPD_PUK ; break;
172 case 22: newSubState = PersoSubState.PERSOSUBSTATE_RUIM_CORPORATE_PUK; break;
173 case 23: newSubState = PersoSubState.PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK; break;
174 case 24: newSubState = PersoSubState.PERSOSUBSTATE_RUIM_RUIM_PUK; break;
176 throw new RuntimeException(
177 "Unrecognized RIL_PersoSubstate: " +substate);
182 public PinState PinStateFromRILInt(int state) {
183 PinState newPinState;
186 newPinState = PinState.PINSTATE_UNKNOWN;
189 newPinState = PinState.PINSTATE_ENABLED_NOT_VERIFIED;
192 newPinState = PinState.PINSTATE_ENABLED_VERIFIED;
195 newPinState = PinState.PINSTATE_DISABLED;
198 newPinState = PinState.PINSTATE_ENABLED_BLOCKED;
201 newPinState = PinState.PINSTATE_ENABLED_PERM_BLOCKED;
204 throw new RuntimeException("Unrecognized RIL_PinState: " + state);
210 public String toString() {
211 StringBuilder sb = new StringBuilder();
213 sb.append("{").append(app_type).append(",").append(app_state);
214 if (app_state == AppState.APPSTATE_SUBSCRIPTION_PERSO) {
215 sb.append(",").append(perso_substate);
217 if (app_type == AppType.APPTYPE_CSIM ||
218 app_type == AppType.APPTYPE_USIM ||
219 app_type == AppType.APPTYPE_ISIM) {
220 sb.append(",pin1=").append(pin1);
221 sb.append(",pin2=").append(pin2);
224 return sb.toString();