]> nv-tegra.nvidia Code Review - android/platform/frameworks/opt/telephony.git/blob - src/java/com/android/internal/telephony/uicc/IccCardApplicationStatus.java
Telephony: Check SmsTracker's mSentIntent for null
[android/platform/frameworks/opt/telephony.git] / src / java / com / android / internal / telephony / uicc / IccCardApplicationStatus.java
1 /*
2  * Copyright (C) 2006 The Android Open Source Project
3  *
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
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16
17 package com.android.internal.telephony.uicc;
18
19 import com.android.internal.telephony.uicc.IccCardStatus.PinState;
20
21
22 /**
23  * See also RIL_AppStatus in include/telephony/ril.h
24  *
25  * {@hide}
26  */
27 public class IccCardApplicationStatus {
28     public enum AppType{
29         APPTYPE_UNKNOWN,
30         APPTYPE_SIM,
31         APPTYPE_USIM,
32         APPTYPE_RUIM,
33         APPTYPE_CSIM,
34         APPTYPE_ISIM
35     };
36
37     public enum AppState{
38         APPSTATE_UNKNOWN,
39         APPSTATE_DETECTED,
40         APPSTATE_PIN,
41         APPSTATE_PUK,
42         APPSTATE_SUBSCRIPTION_PERSO,
43         APPSTATE_READY;
44
45         boolean isPinRequired() {
46             return this == APPSTATE_PIN;
47         }
48
49         boolean isPukRequired() {
50             return this == APPSTATE_PUK;
51         }
52
53         boolean isSubscriptionPersoEnabled() {
54             return this == APPSTATE_SUBSCRIPTION_PERSO;
55         }
56
57         boolean isAppReady() {
58             return this == APPSTATE_READY;
59         }
60
61         boolean isAppNotReady() {
62             return this == APPSTATE_UNKNOWN  ||
63                    this == APPSTATE_DETECTED;
64         }
65     };
66
67     public enum PersoSubState{
68         PERSOSUBSTATE_UNKNOWN,
69         PERSOSUBSTATE_IN_PROGRESS,
70         PERSOSUBSTATE_READY,
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;
93
94         boolean isPersoSubStateUnknown() {
95             return this == PERSOSUBSTATE_UNKNOWN;
96         }
97     };
98
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 */
104     public String         aid;
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;
111
112     public AppType AppTypeFromRILInt(int type) {
113         AppType newType;
114         /* RIL_AppType ril.h */
115         switch(type) {
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;
122             default:
123                 throw new RuntimeException(
124                             "Unrecognized RIL_AppType: " +type);
125         }
126         return newType;
127     }
128
129     public AppState AppStateFromRILInt(int state) {
130         AppState newState;
131         /* RIL_AppState ril.h */
132         switch(state) {
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;
139             default:
140                 throw new RuntimeException(
141                             "Unrecognized RIL_AppState: " +state);
142         }
143         return newState;
144     }
145
146     public PersoSubState PersoSubstateFromRILInt(int substate) {
147         PersoSubState newSubState;
148         /* RIL_PeroSubstate ril.h */
149         switch(substate) {
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;
175             default:
176                 throw new RuntimeException(
177                             "Unrecognized RIL_PersoSubstate: " +substate);
178         }
179         return newSubState;
180     }
181
182     public PinState PinStateFromRILInt(int state) {
183         PinState newPinState;
184         switch(state) {
185             case 0:
186                 newPinState = PinState.PINSTATE_UNKNOWN;
187                 break;
188             case 1:
189                 newPinState = PinState.PINSTATE_ENABLED_NOT_VERIFIED;
190                 break;
191             case 2:
192                 newPinState = PinState.PINSTATE_ENABLED_VERIFIED;
193                 break;
194             case 3:
195                 newPinState = PinState.PINSTATE_DISABLED;
196                 break;
197             case 4:
198                 newPinState = PinState.PINSTATE_ENABLED_BLOCKED;
199                 break;
200             case 5:
201                 newPinState = PinState.PINSTATE_ENABLED_PERM_BLOCKED;
202                 break;
203             default:
204                 throw new RuntimeException("Unrecognized RIL_PinState: " + state);
205         }
206         return newPinState;
207     }
208
209     @Override
210     public String toString() {
211         StringBuilder sb = new StringBuilder();
212
213         sb.append("{").append(app_type).append(",").append(app_state);
214         if (app_state == AppState.APPSTATE_SUBSCRIPTION_PERSO) {
215             sb.append(",").append(perso_substate);
216         }
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);
222         }
223         sb.append("}");
224         return sb.toString();
225     }
226 }