• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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;
18 
19 
20 /**
21  * See also RIL_AppStatus in include/telephony/ril.h
22  *
23  * {@hide}
24  */
25 public class IccCardApplication {
26     public enum AppType{
27         APPTYPE_UNKNOWN,
28         APPTYPE_SIM,
29         APPTYPE_USIM,
30         APPTYPE_RUIM,
31         APPTYPE_CSIM
32     };
33 
34     public enum AppState{
35         APPSTATE_UNKNOWN,
36         APPSTATE_DETECTED,
37         APPSTATE_PIN,
38         APPSTATE_PUK,
39         APPSTATE_SUBSCRIPTION_PERSO,
40         APPSTATE_READY;
41 
isPinRequired()42         boolean isPinRequired() {
43             return this == APPSTATE_PIN;
44         }
45 
isPukRequired()46         boolean isPukRequired() {
47             return this == APPSTATE_PUK;
48         }
49 
isSubscriptionPersoEnabled()50         boolean isSubscriptionPersoEnabled() {
51             return this == APPSTATE_SUBSCRIPTION_PERSO;
52         }
53 
isAppReady()54         boolean isAppReady() {
55             return this == APPSTATE_READY;
56         }
57 
isAppNotReady()58         boolean isAppNotReady() {
59             return this == APPSTATE_UNKNOWN  ||
60                    this == APPSTATE_DETECTED;
61         }
62     };
63 
64     public enum PersoSubState{
65         PERSOSUBSTATE_UNKNOWN,
66         PERSOSUBSTATE_IN_PROGRESS,
67         PERSOSUBSTATE_READY,
68         PERSOSUBSTATE_SIM_NETWORK,
69         PERSOSUBSTATE_SIM_NETWORK_SUBSET,
70         PERSOSUBSTATE_SIM_CORPORATE,
71         PERSOSUBSTATE_SIM_SERVICE_PROVIDER,
72         PERSOSUBSTATE_SIM_SIM,
73         PERSOSUBSTATE_SIM_NETWORK_PUK,
74         PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK,
75         PERSOSUBSTATE_SIM_CORPORATE_PUK,
76         PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK,
77         PERSOSUBSTATE_SIM_SIM_PUK,
78         PERSOSUBSTATE_RUIM_NETWORK1,
79         PERSOSUBSTATE_RUIM_NETWORK2,
80         PERSOSUBSTATE_RUIM_HRPD,
81         PERSOSUBSTATE_RUIM_CORPORATE,
82         PERSOSUBSTATE_RUIM_SERVICE_PROVIDER,
83         PERSOSUBSTATE_RUIM_RUIM,
84         PERSOSUBSTATE_RUIM_NETWORK1_PUK,
85         PERSOSUBSTATE_RUIM_NETWORK2_PUK,
86         PERSOSUBSTATE_RUIM_HRPD_PUK,
87         PERSOSUBSTATE_RUIM_CORPORATE_PUK,
88         PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK,
89         PERSOSUBSTATE_RUIM_RUIM_PUK;
90 
isPersoSubStateUnknown()91         boolean isPersoSubStateUnknown() {
92             return this == PERSOSUBSTATE_UNKNOWN;
93         }
94     };
95 
96     public AppType        app_type;
97     public AppState       app_state;
98     // applicable only if app_state == RIL_APPSTATE_SUBSCRIPTION_PERSO
99     public PersoSubState  perso_substate;
100     // null terminated string, e.g., from 0xA0, 0x00 -> 0x41, 0x30, 0x30, 0x30 */
101     public String         aid;
102     // null terminated string
103     public String         app_label;
104     // applicable to USIM and CSIM
105     public int            pin1_replaced;
106     public int            pin1;
107     public int            pin2;
108 
AppTypeFromRILInt(int type)109     AppType AppTypeFromRILInt(int type) {
110         AppType newType;
111         /* RIL_AppType ril.h */
112         switch(type) {
113             case 0: newType = AppType.APPTYPE_UNKNOWN; break;
114             case 1: newType = AppType.APPTYPE_SIM;     break;
115             case 2: newType = AppType.APPTYPE_USIM;    break;
116             case 3: newType = AppType.APPTYPE_RUIM;    break;
117             case 4: newType = AppType.APPTYPE_CSIM;    break;
118             default:
119                 throw new RuntimeException(
120                             "Unrecognized RIL_AppType: " +type);
121         }
122         return newType;
123     }
124 
AppStateFromRILInt(int state)125     AppState AppStateFromRILInt(int state) {
126         AppState newState;
127         /* RIL_AppState ril.h */
128         switch(state) {
129             case 0: newState = AppState.APPSTATE_UNKNOWN;  break;
130             case 1: newState = AppState.APPSTATE_DETECTED; break;
131             case 2: newState = AppState.APPSTATE_PIN; break;
132             case 3: newState = AppState.APPSTATE_PUK; break;
133             case 4: newState = AppState.APPSTATE_SUBSCRIPTION_PERSO; break;
134             case 5: newState = AppState.APPSTATE_READY; break;
135             default:
136                 throw new RuntimeException(
137                             "Unrecognized RIL_AppState: " +state);
138         }
139         return newState;
140     }
141 
PersoSubstateFromRILInt(int substate)142     PersoSubState PersoSubstateFromRILInt(int substate) {
143         PersoSubState newSubState;
144         /* RIL_PeroSubstate ril.h */
145         switch(substate) {
146             case 0:  newSubState = PersoSubState.PERSOSUBSTATE_UNKNOWN;  break;
147             case 1:  newSubState = PersoSubState.PERSOSUBSTATE_IN_PROGRESS; break;
148             case 2:  newSubState = PersoSubState.PERSOSUBSTATE_READY; break;
149             case 3:  newSubState = PersoSubState.PERSOSUBSTATE_SIM_NETWORK; break;
150             case 4:  newSubState = PersoSubState.PERSOSUBSTATE_SIM_NETWORK_SUBSET; break;
151             case 5:  newSubState = PersoSubState.PERSOSUBSTATE_SIM_CORPORATE; break;
152             case 6:  newSubState = PersoSubState.PERSOSUBSTATE_SIM_SERVICE_PROVIDER; break;
153             case 7:  newSubState = PersoSubState.PERSOSUBSTATE_SIM_SIM;  break;
154             case 8:  newSubState = PersoSubState.PERSOSUBSTATE_SIM_NETWORK_PUK; break;
155             case 9:  newSubState = PersoSubState.PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK; break;
156             case 10: newSubState = PersoSubState.PERSOSUBSTATE_SIM_CORPORATE_PUK; break;
157             case 11: newSubState = PersoSubState.PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK; break;
158             case 12: newSubState = PersoSubState.PERSOSUBSTATE_SIM_SIM_PUK; break;
159             case 13: newSubState = PersoSubState.PERSOSUBSTATE_RUIM_NETWORK1; break;
160             case 14: newSubState = PersoSubState.PERSOSUBSTATE_RUIM_NETWORK2; break;
161             case 15: newSubState = PersoSubState.PERSOSUBSTATE_RUIM_HRPD; break;
162             case 16: newSubState = PersoSubState.PERSOSUBSTATE_RUIM_CORPORATE; break;
163             case 17: newSubState = PersoSubState.PERSOSUBSTATE_RUIM_SERVICE_PROVIDER; break;
164             case 18: newSubState = PersoSubState.PERSOSUBSTATE_RUIM_RUIM; break;
165             case 19: newSubState = PersoSubState.PERSOSUBSTATE_RUIM_NETWORK1_PUK; break;
166             case 20: newSubState = PersoSubState.PERSOSUBSTATE_RUIM_NETWORK2_PUK; break;
167             case 21: newSubState = PersoSubState.PERSOSUBSTATE_RUIM_HRPD_PUK ; break;
168             case 22: newSubState = PersoSubState.PERSOSUBSTATE_RUIM_CORPORATE_PUK; break;
169             case 23: newSubState = PersoSubState.PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK; break;
170             case 24: newSubState = PersoSubState.PERSOSUBSTATE_RUIM_RUIM_PUK; break;
171             default:
172                 throw new RuntimeException(
173                             "Unrecognized RIL_PersoSubstate: " +substate);
174         }
175         return newSubState;
176     }
177 
178 }
179