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 import java.io.FileDescriptor;
20 import java.io.PrintWriter;
21 
22 import android.os.RemoteException;
23 import android.os.ServiceManager;
24 
25 
26 public class PhoneSubInfoProxy extends IPhoneSubInfo.Stub {
27     private PhoneSubInfo mPhoneSubInfo;
28 
PhoneSubInfoProxy(PhoneSubInfo phoneSubInfo)29     public PhoneSubInfoProxy(PhoneSubInfo phoneSubInfo) {
30         mPhoneSubInfo = phoneSubInfo;
31     }
32 
setmPhoneSubInfo(PhoneSubInfo phoneSubInfo)33     public void setmPhoneSubInfo(PhoneSubInfo phoneSubInfo) {
34         mPhoneSubInfo = phoneSubInfo;
35     }
36 
37     @Override
getDeviceId()38     public String getDeviceId() {
39         return mPhoneSubInfo.getDeviceId();
40     }
41 
getImei()42     public String getImei() {
43         return mPhoneSubInfo.getImei();
44     }
45 
getNai()46     public String getNai() {
47         return mPhoneSubInfo.getNai();
48     }
49 
50     @Override
getDeviceSvn()51     public String getDeviceSvn() {
52         return mPhoneSubInfo.getDeviceSvn();
53     }
54 
55     /**
56      * Retrieves the unique subscriber ID, e.g., IMSI for GSM phones.
57      */
58     @Override
getSubscriberId()59     public String getSubscriberId() {
60         return mPhoneSubInfo.getSubscriberId();
61     }
62 
63     /**
64      * Retrieves the Group Identifier Level1 for GSM phones.
65      */
getGroupIdLevel1()66     public String getGroupIdLevel1() {
67         return mPhoneSubInfo.getGroupIdLevel1();
68     }
69 
70     /**
71      * Retrieves the serial number of the ICC, if applicable.
72      */
73     @Override
getIccSerialNumber()74     public String getIccSerialNumber() {
75         return mPhoneSubInfo.getIccSerialNumber();
76     }
77 
78     /**
79      * Retrieves the phone number string for line 1.
80      */
81     @Override
getLine1Number()82     public String getLine1Number() {
83         return mPhoneSubInfo.getLine1Number();
84     }
85 
86     /**
87      * Retrieves the alpha identifier for line 1.
88      */
89     @Override
getLine1AlphaTag()90     public String getLine1AlphaTag() {
91         return mPhoneSubInfo.getLine1AlphaTag();
92     }
93 
94     /**
95      * Retrieves the MSISDN Number.
96      */
97     @Override
getMsisdn()98     public String getMsisdn() {
99         return mPhoneSubInfo.getMsisdn();
100     }
101 
102     /**
103      * Retrieves the voice mail number.
104      */
105     @Override
getVoiceMailNumber()106     public String getVoiceMailNumber() {
107         return mPhoneSubInfo.getVoiceMailNumber();
108     }
109 
110     /**
111      * Retrieves the complete voice mail number.
112      */
113     @Override
getCompleteVoiceMailNumber()114     public String getCompleteVoiceMailNumber() {
115         return mPhoneSubInfo.getCompleteVoiceMailNumber();
116     }
117 
118     /**
119      * Retrieves the alpha identifier associated with the voice mail number.
120      */
121     @Override
getVoiceMailAlphaTag()122     public String getVoiceMailAlphaTag() {
123         return mPhoneSubInfo.getVoiceMailAlphaTag();
124     }
125 
126     /**
127      * Returns the IMS private user identity (IMPI) that was loaded from the ISIM.
128      * @return the IMPI, or null if not present or not loaded
129      */
130     @Override
getIsimImpi()131     public String getIsimImpi() {
132         return mPhoneSubInfo.getIsimImpi();
133     }
134 
135     /**
136      * Returns the IMS home network domain name that was loaded from the ISIM.
137      * @return the IMS domain name, or null if not present or not loaded
138      */
139     @Override
getIsimDomain()140     public String getIsimDomain() {
141         return mPhoneSubInfo.getIsimDomain();
142     }
143 
144     /**
145      * Returns the IMS public user identities (IMPU) that were loaded from the ISIM.
146      * @return an array of IMPU strings, with one IMPU per string, or null if
147      *      not present or not loaded
148      */
149     @Override
getIsimImpu()150     public String[] getIsimImpu() {
151         return mPhoneSubInfo.getIsimImpu();
152     }
153 
154     @Override
getDeviceIdForPhone(int phoneId)155     public String getDeviceIdForPhone(int phoneId) throws RemoteException {
156         // FIXME: getDeviceIdForPhone
157         return null;
158     }
159 
160     @Override
getImeiForSubscriber(int subId)161     public String getImeiForSubscriber(int subId) throws RemoteException {
162         // FIXME: getImeiForSubscriber
163         return null;
164     }
165 
166     @Override
getDeviceSvnUsingSubId(int subId)167     public String getDeviceSvnUsingSubId(int subId) throws RemoteException {
168         // FIXME: getDeviceSvnUsingSubId
169         return null;
170     }
171 
172     @Override
getNaiForSubscriber(int subId)173     public String getNaiForSubscriber(int subId) throws RemoteException {
174         // FIXME: NaiForSubscriber
175         return null;
176     }
177 
178     @Override
getSubscriberIdForSubscriber(int subId)179     public String getSubscriberIdForSubscriber(int subId) throws RemoteException {
180         // FIXME: getSubscriberIdForSubscriber
181         return null;
182     }
183 
184     @Override
getGroupIdLevel1ForSubscriber(int subId)185     public String getGroupIdLevel1ForSubscriber(int subId) throws RemoteException {
186         // FIXME: getGroupIdLevel1ForSubscriber
187         return null;
188     }
189 
190     @Override
getIccSerialNumberForSubscriber(int subId)191     public String getIccSerialNumberForSubscriber(int subId) throws RemoteException {
192         // FIXME: getIccSerialNumberForSubscriber
193         return null;
194     }
195 
196     @Override
getLine1NumberForSubscriber(int subId)197     public String getLine1NumberForSubscriber(int subId) throws RemoteException {
198         // FIXME: getLine1NumberForSubscriber
199         return null;
200     }
201 
202     @Override
getLine1AlphaTagForSubscriber(int subId)203     public String getLine1AlphaTagForSubscriber(int subId) throws RemoteException {
204         // FIXME: getLine1AlphaTagForSubscriber
205         return null;
206     }
207 
208     @Override
getMsisdnForSubscriber(int subId)209     public String getMsisdnForSubscriber(int subId) throws RemoteException {
210         // FIXME: getMsisdnForSubscriber
211         return null;
212     }
213 
214     @Override
getVoiceMailNumberForSubscriber(int subId)215     public String getVoiceMailNumberForSubscriber(int subId) throws RemoteException {
216         // FIXME: getVoiceMailNumberForSubscriber
217         return null;
218     }
219 
220     @Override
getCompleteVoiceMailNumberForSubscriber(int subId)221     public String getCompleteVoiceMailNumberForSubscriber(int subId) throws RemoteException {
222         // FIXME: getCompleteVoiceMailNumberForSubscriber
223         return null;
224     }
225 
226     @Override
getVoiceMailAlphaTagForSubscriber(int subId)227     public String getVoiceMailAlphaTagForSubscriber(int subId) throws RemoteException {
228         // FIXME: getVoiceMailAlphaTagForSubscriber
229         return null;
230     }
231 
232     /**
233      * Returns the IMS Service Table (IST) that was loaded from the ISIM.
234      * @return IMS Service Table or null if not present or not loaded
235      */
236     @Override
getIsimIst()237     public String getIsimIst() {
238         return mPhoneSubInfo.getIsimIst();
239     }
240 
241     /**
242      * Returns the IMS Proxy Call Session Control Function(PCSCF) that were loaded from the ISIM.
243      * @return an array of  PCSCF strings with one PCSCF per string, or null if
244      *      not present or not loaded
245      */
246     @Override
getIsimPcscf()247     public String[] getIsimPcscf() {
248         return mPhoneSubInfo.getIsimPcscf();
249     }
250 
251     /**
252      * Returns the response of ISIM Authetification through RIL.
253      * Returns null if the Authentification hasn't been successed or isn't present iphonesubinfo.
254      * @return the response of ISIM Authetification, or null if not available
255      * @deprecated
256      * @see getIccSimChallengeResponse
257      */
getIsimChallengeResponse(String nonce)258     public String getIsimChallengeResponse(String nonce) {
259         return mPhoneSubInfo.getIsimChallengeResponse(nonce);
260     }
261 
262     /**
263      * Returns the response of the SIM application on the UICC to authentication
264      * challenge/response algorithm. The data string and challenge response are
265      * Base64 encoded Strings.
266      * Can support EAP-SIM, EAP-AKA with results encoded per 3GPP TS 31.102.
267      *
268      * @param appType ICC application type (@see com.android.internal.telephony.PhoneConstants#APPTYPE_xxx)
269      * @param data authentication challenge data
270      * @return challenge response
271      */
getIccSimChallengeResponse(int subId, int appType, String data)272     public String getIccSimChallengeResponse(int subId, int appType, String data) {
273         return mPhoneSubInfo.getIccSimChallengeResponse(subId, appType, data);
274     }
275 
276     @Override
dump(FileDescriptor fd, PrintWriter pw, String[] args)277     protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
278         mPhoneSubInfo.dump(fd, pw, args);
279     }
280 }
281