1 /*
2  * Copyright (C) 2007 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  * Interface used to retrieve various phone-related subscriber information.
21  *
22  */
23 interface IPhoneSubInfo {
24 
25     /**
26      * Retrieves the unique device ID, e.g., IMEI for GSM phones.
27      */
getDeviceId(String callingPackage)28     String getDeviceId(String callingPackage);
29 
30      /**
31      * Retrieves the unique Network Access ID
32      */
getNaiForSubscriber(int subId, String callingPackage)33     String getNaiForSubscriber(int subId, String callingPackage);
34 
35     /**
36      * Retrieves the unique device ID of a phone for the device, e.g., IMEI
37      * for GSM phones.
38      */
getDeviceIdForPhone(int phoneId)39     String getDeviceIdForPhone(int phoneId);
40 
41     /**
42      * Retrieves the IMEI.
43      */
getImeiForSubscriber(int subId, String callingPackage)44     String getImeiForSubscriber(int subId, String callingPackage);
45 
46     /**
47      * Retrieves the software version number for the device, e.g., IMEI/SV
48      * for GSM phones.
49      */
getDeviceSvn(String callingPackage)50     String getDeviceSvn(String callingPackage);
51 
52     /**
53      * Retrieves the software version number of a subId for the device, e.g., IMEI/SV
54      * for GSM phones.
55      */
getDeviceSvnUsingSubId(int subId, String callingPackage)56     String getDeviceSvnUsingSubId(int subId, String callingPackage);
57 
58     /**
59      * Retrieves the unique sbuscriber ID, e.g., IMSI for GSM phones.
60      */
getSubscriberId(String callingPackage)61     String getSubscriberId(String callingPackage);
62 
63     /**
64      * Retrieves the unique subscriber ID of a given subId, e.g., IMSI for GSM phones.
65      */
getSubscriberIdForSubscriber(int subId, String callingPackage)66     String getSubscriberIdForSubscriber(int subId, String callingPackage);
67 
68     /**
69      * Retrieves the Group Identifier Level1 for GSM phones.
70      */
getGroupIdLevel1(String callingPackage)71     String getGroupIdLevel1(String callingPackage);
72 
73     /**
74      * Retrieves the Group Identifier Level1 for GSM phones of a subId.
75      */
getGroupIdLevel1ForSubscriber(int subId, String callingPackage)76     String getGroupIdLevel1ForSubscriber(int subId, String callingPackage);
77 
78     /**
79      * Retrieves the serial number of the ICC, if applicable.
80      */
getIccSerialNumber(String callingPackage)81     String getIccSerialNumber(String callingPackage);
82 
83     /**
84      * Retrieves the serial number of a given subId.
85      */
getIccSerialNumberForSubscriber(int subId, String callingPackage)86     String getIccSerialNumberForSubscriber(int subId, String callingPackage);
87 
88     /**
89      * Retrieves the phone number string for line 1.
90      */
getLine1Number(String callingPackage)91     String getLine1Number(String callingPackage);
92 
93     /**
94      * Retrieves the phone number string for line 1 of a subcription.
95      */
getLine1NumberForSubscriber(int subId, String callingPackage)96     String getLine1NumberForSubscriber(int subId, String callingPackage);
97 
98 
99     /**
100      * Retrieves the alpha identifier for line 1.
101      */
getLine1AlphaTag(String callingPackage)102     String getLine1AlphaTag(String callingPackage);
103 
104     /**
105      * Retrieves the alpha identifier for line 1 of a subId.
106      */
getLine1AlphaTagForSubscriber(int subId, String callingPackage)107     String getLine1AlphaTagForSubscriber(int subId, String callingPackage);
108 
109 
110     /**
111      * Retrieves MSISDN Number.
112      */
getMsisdn(String callingPackage)113     String getMsisdn(String callingPackage);
114 
115     /**
116      * Retrieves the Msisdn of a subId.
117      */
getMsisdnForSubscriber(int subId, String callingPackage)118     String getMsisdnForSubscriber(int subId, String callingPackage);
119 
120     /**
121      * Retrieves the voice mail number.
122      */
getVoiceMailNumber(String callingPackage)123     String getVoiceMailNumber(String callingPackage);
124 
125     /**
126      * Retrieves the voice mail number of a given subId.
127      */
getVoiceMailNumberForSubscriber(int subId, String callingPackage)128     String getVoiceMailNumberForSubscriber(int subId, String callingPackage);
129 
130     /**
131      * Retrieves the complete voice mail number.
132      */
getCompleteVoiceMailNumber()133     String getCompleteVoiceMailNumber();
134 
135     /**
136      * Retrieves the complete voice mail number for particular subId
137      */
getCompleteVoiceMailNumberForSubscriber(int subId)138     String getCompleteVoiceMailNumberForSubscriber(int subId);
139 
140     /**
141      * Retrieves the alpha identifier associated with the voice mail number.
142      */
getVoiceMailAlphaTag(String callingPackage)143     String getVoiceMailAlphaTag(String callingPackage);
144 
145     /**
146      * Retrieves the alpha identifier associated with the voice mail number
147      * of a subId.
148      */
getVoiceMailAlphaTagForSubscriber(int subId, String callingPackage)149     String getVoiceMailAlphaTagForSubscriber(int subId, String callingPackage);
150 
151     /**
152      * Returns the IMS private user identity (IMPI) that was loaded from the ISIM.
153      * @return the IMPI, or null if not present or not loaded
154      */
getIsimImpi()155     String getIsimImpi();
156 
157     /**
158      * Returns the IMS home network domain name that was loaded from the ISIM.
159      * @return the IMS domain name, or null if not present or not loaded
160      */
getIsimDomain()161     String getIsimDomain();
162 
163     /**
164      * Returns the IMS public user identities (IMPU) that were loaded from the ISIM.
165      * @return an array of IMPU strings, with one IMPU per string, or null if
166      *      not present or not loaded
167      */
getIsimImpu()168     String[] getIsimImpu();
169 
170     /**
171      * Returns the IMS Service Table (IST) that was loaded from the ISIM.
172      * @return IMS Service Table or null if not present or not loaded
173      */
getIsimIst()174     String getIsimIst();
175 
176     /**
177      * Returns the IMS Proxy Call Session Control Function(PCSCF) that were loaded from the ISIM.
178      * @return an array of PCSCF strings with one PCSCF per string, or null if
179      *      not present or not loaded
180      */
getIsimPcscf()181     String[] getIsimPcscf();
182 
183     /**
184      * TODO: Deprecate and remove this interface. Superceded by getIccsimChallengeResponse.
185      * Returns the response of ISIM Authetification through RIL.
186      * @return the response of ISIM Authetification, or null if
187      *     the Authentification hasn't been successed or isn't present iphonesubinfo.
188      */
getIsimChallengeResponse(String nonce)189     String getIsimChallengeResponse(String nonce);
190 
191     /**
192      * Returns the response of the SIM application on the UICC to authentication
193      * challenge/response algorithm. The data string and challenge response are
194      * Base64 encoded Strings.
195      * Can support EAP-SIM, EAP-AKA with results encoded per 3GPP TS 31.102.
196      *
197      * @param subId subscription ID to be queried
198      * @param appType ICC application type (@see com.android.internal.telephony.PhoneConstants#APPTYPE_xxx)
199      * @param data authentication challenge data
200      * @return challenge response
201      */
getIccSimChallengeResponse(int subId, int appType, String data)202     String getIccSimChallengeResponse(int subId, int appType, String data);
203 }
204