1fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville/*
28fec2e4414abfbc4e4e20d719e80ba99dc9ceb60Wink Saville * Copyright (C) 2014 The Android Open Source Project
38fec2e4414abfbc4e4e20d719e80ba99dc9ceb60Wink Saville *
48fec2e4414abfbc4e4e20d719e80ba99dc9ceb60Wink Saville * Licensed under the Apache License, Version 2.0 (the "License");
58fec2e4414abfbc4e4e20d719e80ba99dc9ceb60Wink Saville * you may not use this file except in compliance with the License.
68fec2e4414abfbc4e4e20d719e80ba99dc9ceb60Wink Saville * You may obtain a copy of the License at
78fec2e4414abfbc4e4e20d719e80ba99dc9ceb60Wink Saville *
88fec2e4414abfbc4e4e20d719e80ba99dc9ceb60Wink Saville *      http://www.apache.org/licenses/LICENSE-2.0
98fec2e4414abfbc4e4e20d719e80ba99dc9ceb60Wink Saville *
108fec2e4414abfbc4e4e20d719e80ba99dc9ceb60Wink Saville * Unless required by applicable law or agreed to in writing, software
118fec2e4414abfbc4e4e20d719e80ba99dc9ceb60Wink Saville * distributed under the License is distributed on an "AS IS" BASIS,
128fec2e4414abfbc4e4e20d719e80ba99dc9ceb60Wink Saville * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
138fec2e4414abfbc4e4e20d719e80ba99dc9ceb60Wink Saville * See the License for the specific language governing permissions and
148fec2e4414abfbc4e4e20d719e80ba99dc9ceb60Wink Saville * limitations under the License.
158fec2e4414abfbc4e4e20d719e80ba99dc9ceb60Wink Saville */
16fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville
17fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Savillepackage com.android.internal.telephony;
18fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville
19fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Savilleimport android.app.PendingIntent;
20a374c3d03b28f135cdfba2cadf6fe6f03ac010bdWink Savilleimport android.telephony.SubscriptionInfo;
21fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville
22fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Savilleinterface ISub {
23fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville    /**
2421301f6016ce50594f6cd9c66581ee9a08b57be9Svet Ganov     * @param callingPackage The package maing the call.
25d09c4cad65c708f2c4810d24295456708a2000d2Wink Saville     * @return a list of all subscriptions in the database, this includes
26d09c4cad65c708f2c4810d24295456708a2000d2Wink Saville     * all subscriptions that have been seen.
27fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville     */
2821301f6016ce50594f6cd9c66581ee9a08b57be9Svet Ganov    List<SubscriptionInfo> getAllSubInfoList(String callingPackage);
29fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville
30fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville    /**
3121301f6016ce50594f6cd9c66581ee9a08b57be9Svet Ganov     * @param callingPackage The package maing the call.
32d09c4cad65c708f2c4810d24295456708a2000d2Wink Saville     * @return the count of all subscriptions in the database, this includes
33d09c4cad65c708f2c4810d24295456708a2000d2Wink Saville     * all subscriptions that have been seen.
34fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville     */
3521301f6016ce50594f6cd9c66581ee9a08b57be9Svet Ganov    int getAllSubInfoCount(String callingPackage);
36fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville
37fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville    /**
38d09c4cad65c708f2c4810d24295456708a2000d2Wink Saville     * Get the active SubscriptionInfo with the subId key
39d09c4cad65c708f2c4810d24295456708a2000d2Wink Saville     * @param subId The unique SubscriptionInfo key in database
4021301f6016ce50594f6cd9c66581ee9a08b57be9Svet Ganov     * @param callingPackage The package maing the call.
41d09c4cad65c708f2c4810d24295456708a2000d2Wink Saville     * @return SubscriptionInfo, maybe null if its not active
42fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville     */
4321301f6016ce50594f6cd9c66581ee9a08b57be9Svet Ganov    SubscriptionInfo getActiveSubscriptionInfo(int subId, String callingPackage);
44fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville
45fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville    /**
46d09c4cad65c708f2c4810d24295456708a2000d2Wink Saville     * Get the active SubscriptionInfo associated with the iccId
47d09c4cad65c708f2c4810d24295456708a2000d2Wink Saville     * @param iccId the IccId of SIM card
4821301f6016ce50594f6cd9c66581ee9a08b57be9Svet Ganov     * @param callingPackage The package maing the call.
49d09c4cad65c708f2c4810d24295456708a2000d2Wink Saville     * @return SubscriptionInfo, maybe null if its not active
50fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville     */
5121301f6016ce50594f6cd9c66581ee9a08b57be9Svet Ganov    SubscriptionInfo getActiveSubscriptionInfoForIccId(String iccId, String callingPackage);
52fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville
53fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville    /**
547e4602519977b6bb9c41afc91a44ca782e716e40Sanket Padawe     * Get the active SubscriptionInfo associated with the slotIndex
557e4602519977b6bb9c41afc91a44ca782e716e40Sanket Padawe     * @param slotIndex the slot which the subscription is inserted
5621301f6016ce50594f6cd9c66581ee9a08b57be9Svet Ganov     * @param callingPackage The package maing the call.
57d09c4cad65c708f2c4810d24295456708a2000d2Wink Saville     * @return SubscriptionInfo, maybe null if its not active
58fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville     */
597e4602519977b6bb9c41afc91a44ca782e716e40Sanket Padawe    SubscriptionInfo getActiveSubscriptionInfoForSimSlotIndex(int slotIndex, String callingPackage);
60fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville
61fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville    /**
62d09c4cad65c708f2c4810d24295456708a2000d2Wink Saville     * Get the SubscriptionInfo(s) of the active subscriptions. The records will be sorted
63d09c4cad65c708f2c4810d24295456708a2000d2Wink Saville     * by {@link SubscriptionInfo#getSimSlotIndex} then by {@link SubscriptionInfo#getSubscriptionId}.
64d09c4cad65c708f2c4810d24295456708a2000d2Wink Saville     *
6521301f6016ce50594f6cd9c66581ee9a08b57be9Svet Ganov     * @param callingPackage The package maing the call.
66d09c4cad65c708f2c4810d24295456708a2000d2Wink Saville     * @return Sorted list of the currently {@link SubscriptionInfo} records available on the device.
67d09c4cad65c708f2c4810d24295456708a2000d2Wink Saville     * <ul>
68d09c4cad65c708f2c4810d24295456708a2000d2Wink Saville     * <li>
69d09c4cad65c708f2c4810d24295456708a2000d2Wink Saville     * If null is returned the current state is unknown but if a {@link OnSubscriptionsChangedListener}
70d09c4cad65c708f2c4810d24295456708a2000d2Wink Saville     * has been registered {@link OnSubscriptionsChangedListener#onSubscriptionsChanged} will be
71d09c4cad65c708f2c4810d24295456708a2000d2Wink Saville     * invoked in the future.
72d09c4cad65c708f2c4810d24295456708a2000d2Wink Saville     * </li>
73d09c4cad65c708f2c4810d24295456708a2000d2Wink Saville     * <li>
74d09c4cad65c708f2c4810d24295456708a2000d2Wink Saville     * If the list is empty then there are no {@link SubscriptionInfo} records currently available.
75d09c4cad65c708f2c4810d24295456708a2000d2Wink Saville     * </li>
76d09c4cad65c708f2c4810d24295456708a2000d2Wink Saville     * <li>
77d09c4cad65c708f2c4810d24295456708a2000d2Wink Saville     * if the list is non-empty the list is sorted by {@link SubscriptionInfo#getSimSlotIndex}
78d09c4cad65c708f2c4810d24295456708a2000d2Wink Saville     * then by {@link SubscriptionInfo#getSubscriptionId}.
79d09c4cad65c708f2c4810d24295456708a2000d2Wink Saville     * </li>
80d09c4cad65c708f2c4810d24295456708a2000d2Wink Saville     * </ul>
81fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville     */
8221301f6016ce50594f6cd9c66581ee9a08b57be9Svet Ganov    List<SubscriptionInfo> getActiveSubscriptionInfoList(String callingPackage);
83fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville
84fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville    /**
85278b8f950948435fb08db0a12313e2ea704fa637Robert Greenwalt     * @param callingPackage The package making the call.
86d09c4cad65c708f2c4810d24295456708a2000d2Wink Saville     * @return the number of active subscriptions
87c650e0b12a656060de767d91d99f6b33e51c6ab2Wink Saville     */
8821301f6016ce50594f6cd9c66581ee9a08b57be9Svet Ganov    int getActiveSubInfoCount(String callingPackage);
89c650e0b12a656060de767d91d99f6b33e51c6ab2Wink Saville
90c650e0b12a656060de767d91d99f6b33e51c6ab2Wink Saville    /**
91d09c4cad65c708f2c4810d24295456708a2000d2Wink Saville     * @return the maximum number of subscriptions this device will support at any one time.
92d09c4cad65c708f2c4810d24295456708a2000d2Wink Saville     */
93d09c4cad65c708f2c4810d24295456708a2000d2Wink Saville    int getActiveSubInfoCountMax();
94d09c4cad65c708f2c4810d24295456708a2000d2Wink Saville
95d09c4cad65c708f2c4810d24295456708a2000d2Wink Saville    /**
96d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson     * @see android.telephony.SubscriptionManager#getAvailableSubscriptionInfoList
97d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson     */
98d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson    List<SubscriptionInfo> getAvailableSubscriptionInfoList(String callingPackage);
99d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson
100d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson    /**
101d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson     * @see android.telephony.SubscriptionManager#getAccessibleSubscriptionInfoList
102d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson     */
103d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson    List<SubscriptionInfo> getAccessibleSubscriptionInfoList(String callingPackage);
104d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson
105d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson    /**
106d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson     * @see android.telephony.SubscriptionManager#requestEmbeddedSubscriptionInfoListRefresh
107d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson     */
108d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson    oneway void requestEmbeddedSubscriptionInfoListRefresh();
109d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson
110d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson    /**
111a374c3d03b28f135cdfba2cadf6fe6f03ac010bdWink Saville     * Add a new SubscriptionInfo to subinfo database if needed
112fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville     * @param iccId the IccId of the SIM card
1137e4602519977b6bb9c41afc91a44ca782e716e40Sanket Padawe     * @param slotIndex the slot which the SIM is inserted
114fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville     * @return the URL of the newly created row or the updated row
115fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville     */
1167e4602519977b6bb9c41afc91a44ca782e716e40Sanket Padawe    int addSubInfoRecord(String iccId, int slotIndex);
117fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville
118fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville    /**
119ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott     * Set SIM icon tint color by simInfo index
120ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott     * @param tint the icon tint color of the SIM
121a374c3d03b28f135cdfba2cadf6fe6f03ac010bdWink Saville     * @param subId the unique SubscriptionInfo index in database
122fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville     * @return the number of records updated
123fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville     */
124278b8f950948435fb08db0a12313e2ea704fa637Robert Greenwalt    int setIconTint(int tint, int subId);
125fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville
126fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville    /**
127fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville     * Set display name by simInfo index
128fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville     * @param displayName the display name of SIM card
129a374c3d03b28f135cdfba2cadf6fe6f03ac010bdWink Saville     * @param subId the unique SubscriptionInfo index in database
130fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville     * @return the number of records updated
131fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville     */
132278b8f950948435fb08db0a12313e2ea704fa637Robert Greenwalt    int setDisplayName(String displayName, int subId);
133fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville
134fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville    /**
135fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville     * Set display name by simInfo index with name source
136fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville     * @param displayName the display name of SIM card
137a374c3d03b28f135cdfba2cadf6fe6f03ac010bdWink Saville     * @param subId the unique SubscriptionInfo index in database
138fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville     * @param nameSource, 0: DEFAULT_SOURCE, 1: SIM_SOURCE, 2: USER_INPUT
139fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville     * @return the number of records updated
140fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville     */
141278b8f950948435fb08db0a12313e2ea704fa637Robert Greenwalt    int setDisplayNameUsingSrc(String displayName, int subId, long nameSource);
142fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville
143fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville    /**
144fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville     * Set phone number by subId
145fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville     * @param number the phone number of the SIM
146a374c3d03b28f135cdfba2cadf6fe6f03ac010bdWink Saville     * @param subId the unique SubscriptionInfo index in database
147fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville     * @return the number of records updated
148fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville     */
149278b8f950948435fb08db0a12313e2ea704fa637Robert Greenwalt    int setDisplayNumber(String number, int subId);
150fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville
151fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville    /**
152fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville     * Set data roaming by simInfo index
153fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville     * @param roaming 0:Don't allow data when roaming, 1:Allow data when roaming
154a374c3d03b28f135cdfba2cadf6fe6f03ac010bdWink Saville     * @param subId the unique SubscriptionInfo index in database
155fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville     * @return the number of records updated
156fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville     */
157278b8f950948435fb08db0a12313e2ea704fa637Robert Greenwalt    int setDataRoaming(int roaming, int subId);
158fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville
1597e4602519977b6bb9c41afc91a44ca782e716e40Sanket Padawe    int getSlotIndex(int subId);
160fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville
1617e4602519977b6bb9c41afc91a44ca782e716e40Sanket Padawe    int[] getSubId(int slotIndex);
162fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville
16363f03dd94c43c22f2c77306059b5748e5e1e0e3cWink Saville    int getDefaultSubId();
164fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville
165278b8f950948435fb08db0a12313e2ea704fa637Robert Greenwalt    int clearSubInfo();
166fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville
16763f03dd94c43c22f2c77306059b5748e5e1e0e3cWink Saville    int getPhoneId(int subId);
168fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville
169fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville    /**
170fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville     * Get the default data subscription
171fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville     * @return Id of the data subscription
172fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville     */
17363f03dd94c43c22f2c77306059b5748e5e1e0e3cWink Saville    int getDefaultDataSubId();
174fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville
17563f03dd94c43c22f2c77306059b5748e5e1e0e3cWink Saville    void setDefaultDataSubId(int subId);
176fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville
17763f03dd94c43c22f2c77306059b5748e5e1e0e3cWink Saville    int getDefaultVoiceSubId();
178fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville
17963f03dd94c43c22f2c77306059b5748e5e1e0e3cWink Saville    void setDefaultVoiceSubId(int subId);
180c650e0b12a656060de767d91d99f6b33e51c6ab2Wink Saville
18163f03dd94c43c22f2c77306059b5748e5e1e0e3cWink Saville    int getDefaultSmsSubId();
182c650e0b12a656060de767d91d99f6b33e51c6ab2Wink Saville
18363f03dd94c43c22f2c77306059b5748e5e1e0e3cWink Saville    void setDefaultSmsSubId(int subId);
184c650e0b12a656060de767d91d99f6b33e51c6ab2Wink Saville
185278b8f950948435fb08db0a12313e2ea704fa637Robert Greenwalt    void clearDefaultsForInactiveSubIds();
186c650e0b12a656060de767d91d99f6b33e51c6ab2Wink Saville
18763f03dd94c43c22f2c77306059b5748e5e1e0e3cWink Saville    int[] getActiveSubIdList();
18847920fac33efb7ce4bf33a5691e4af1b67ab6019Wink Saville
189dc49309cefed9519611b183ae2c616e6f0110738Sanket Padawe    void setSubscriptionProperty(int subId, String propKey, String propValue);
190dc49309cefed9519611b183ae2c616e6f0110738Sanket Padawe
191dc49309cefed9519611b183ae2c616e6f0110738Sanket Padawe    String getSubscriptionProperty(int subId, String propKey, String callingPackage);
192dc49309cefed9519611b183ae2c616e6f0110738Sanket Padawe
19347920fac33efb7ce4bf33a5691e4af1b67ab6019Wink Saville    /**
1947e4602519977b6bb9c41afc91a44ca782e716e40Sanket Padawe     * Get the SIM state for the slot index
19547920fac33efb7ce4bf33a5691e4af1b67ab6019Wink Saville     * @return SIM state as the ordinal of IccCardConstants.State
19647920fac33efb7ce4bf33a5691e4af1b67ab6019Wink Saville     */
1977e4602519977b6bb9c41afc91a44ca782e716e40Sanket Padawe    int getSimStateForSlotIndex(int slotIndex);
19847920fac33efb7ce4bf33a5691e4af1b67ab6019Wink Saville
1990ced792cd69ff4e78b3ea84e6b38c1f1fddce82eShishir Agrawal    boolean isActiveSubId(int subId);
200fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville}
201