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 com.android.internal.telephony.cdma.CdmaSmsBroadcastConfigInfo;
20 import com.android.internal.telephony.dataconnection.DataProfile;
21 import com.android.internal.telephony.gsm.SmsBroadcastConfigInfo;
22 import com.android.internal.telephony.RadioCapability;
23 import com.android.internal.telephony.uicc.IccCardStatus;
24 
25 import android.os.Message;
26 import android.os.Handler;
27 
28 
29 /**
30  * {@hide}
31  */
32 public interface CommandsInterface {
33     enum RadioState {
34         RADIO_OFF,         /* Radio explicitly powered off (eg CFUN=0) */
35         RADIO_UNAVAILABLE, /* Radio unavailable (eg, resetting or not booted) */
36         RADIO_ON;          /* Radio is on */
37 
isOn()38         public boolean isOn() /* and available...*/ {
39             return this == RADIO_ON;
40         }
41 
isAvailable()42         public boolean isAvailable() {
43             return this != RADIO_UNAVAILABLE;
44         }
45     }
46 
47     //***** Constants
48 
49     // Used as parameter to dial() and setCLIR() below
50     static final int CLIR_DEFAULT = 0;      // "use subscription default value"
51     static final int CLIR_INVOCATION = 1;   // (restrict CLI presentation)
52     static final int CLIR_SUPPRESSION = 2;  // (allow CLI presentation)
53 
54 
55     // Used as parameters for call forward methods below
56     static final int CF_ACTION_DISABLE          = 0;
57     static final int CF_ACTION_ENABLE           = 1;
58 //  static final int CF_ACTION_UNUSED           = 2;
59     static final int CF_ACTION_REGISTRATION     = 3;
60     static final int CF_ACTION_ERASURE          = 4;
61 
62     static final int CF_REASON_UNCONDITIONAL    = 0;
63     static final int CF_REASON_BUSY             = 1;
64     static final int CF_REASON_NO_REPLY         = 2;
65     static final int CF_REASON_NOT_REACHABLE    = 3;
66     static final int CF_REASON_ALL              = 4;
67     static final int CF_REASON_ALL_CONDITIONAL  = 5;
68 
69     // Used for call barring methods below
70     static final String CB_FACILITY_BAOC         = "AO";
71     static final String CB_FACILITY_BAOIC        = "OI";
72     static final String CB_FACILITY_BAOICxH      = "OX";
73     static final String CB_FACILITY_BAIC         = "AI";
74     static final String CB_FACILITY_BAICr        = "IR";
75     static final String CB_FACILITY_BA_ALL       = "AB";
76     static final String CB_FACILITY_BA_MO        = "AG";
77     static final String CB_FACILITY_BA_MT        = "AC";
78     static final String CB_FACILITY_BA_SIM       = "SC";
79     static final String CB_FACILITY_BA_FD        = "FD";
80 
81 
82     // Used for various supp services apis
83     // See 27.007 +CCFC or +CLCK
84     static final int SERVICE_CLASS_NONE     = 0; // no user input
85     static final int SERVICE_CLASS_VOICE    = (1 << 0);
86     static final int SERVICE_CLASS_DATA     = (1 << 1); //synonym for 16+32+64+128
87     static final int SERVICE_CLASS_FAX      = (1 << 2);
88     static final int SERVICE_CLASS_SMS      = (1 << 3);
89     static final int SERVICE_CLASS_DATA_SYNC = (1 << 4);
90     static final int SERVICE_CLASS_DATA_ASYNC = (1 << 5);
91     static final int SERVICE_CLASS_PACKET   = (1 << 6);
92     static final int SERVICE_CLASS_PAD      = (1 << 7);
93     static final int SERVICE_CLASS_MAX      = (1 << 7); // Max SERVICE_CLASS value
94 
95     // Numeric representation of string values returned
96     // by messages sent to setOnUSSD handler
97     static final int USSD_MODE_NOTIFY        = 0;
98     static final int USSD_MODE_REQUEST       = 1;
99     static final int USSD_MODE_NW_RELEASE    = 2;
100     static final int USSD_MODE_LOCAL_CLIENT  = 3;
101     static final int USSD_MODE_NOT_SUPPORTED = 4;
102     static final int USSD_MODE_NW_TIMEOUT    = 5;
103 
104     // GSM SMS fail cause for acknowledgeLastIncomingSMS. From TS 23.040, 9.2.3.22.
105     static final int GSM_SMS_FAIL_CAUSE_MEMORY_CAPACITY_EXCEEDED    = 0xD3;
106     static final int GSM_SMS_FAIL_CAUSE_USIM_APP_TOOLKIT_BUSY       = 0xD4;
107     static final int GSM_SMS_FAIL_CAUSE_USIM_DATA_DOWNLOAD_ERROR    = 0xD5;
108     static final int GSM_SMS_FAIL_CAUSE_UNSPECIFIED_ERROR           = 0xFF;
109 
110     // CDMA SMS fail cause for acknowledgeLastIncomingCdmaSms.  From TS N.S0005, 6.5.2.125.
111     static final int CDMA_SMS_FAIL_CAUSE_INVALID_TELESERVICE_ID     = 4;
112     static final int CDMA_SMS_FAIL_CAUSE_RESOURCE_SHORTAGE          = 35;
113     static final int CDMA_SMS_FAIL_CAUSE_OTHER_TERMINAL_PROBLEM     = 39;
114     static final int CDMA_SMS_FAIL_CAUSE_ENCODING_PROBLEM           = 96;
115 
116     //***** Methods
getRadioState()117     RadioState getRadioState();
118 
119     /**
120      * response.obj.result is an int[2]
121      *
122      * response.obj.result[0] is IMS registration state
123      *                        0 - Not registered
124      *                        1 - Registered
125      * response.obj.result[1] is of type RILConstants.GSM_PHONE or
126      *                                    RILConstants.CDMA_PHONE
127      */
getImsRegistrationState(Message result)128     void getImsRegistrationState(Message result);
129 
130     /**
131      * Fires on any RadioState transition
132      * Always fires immediately as well
133      *
134      * do not attempt to calculate transitions by storing getRadioState() values
135      * on previous invocations of this notification. Instead, use the other
136      * registration methods
137      */
registerForRadioStateChanged(Handler h, int what, Object obj)138     void registerForRadioStateChanged(Handler h, int what, Object obj);
unregisterForRadioStateChanged(Handler h)139     void unregisterForRadioStateChanged(Handler h);
140 
registerForVoiceRadioTechChanged(Handler h, int what, Object obj)141     void registerForVoiceRadioTechChanged(Handler h, int what, Object obj);
unregisterForVoiceRadioTechChanged(Handler h)142     void unregisterForVoiceRadioTechChanged(Handler h);
registerForImsNetworkStateChanged(Handler h, int what, Object obj)143     void registerForImsNetworkStateChanged(Handler h, int what, Object obj);
unregisterForImsNetworkStateChanged(Handler h)144     void unregisterForImsNetworkStateChanged(Handler h);
145 
146     /**
147      * Fires on any transition into RadioState.isOn()
148      * Fires immediately if currently in that state
149      * In general, actions should be idempotent. State may change
150      * before event is received.
151      */
registerForOn(Handler h, int what, Object obj)152     void registerForOn(Handler h, int what, Object obj);
unregisterForOn(Handler h)153     void unregisterForOn(Handler h);
154 
155     /**
156      * Fires on any transition out of RadioState.isAvailable()
157      * Fires immediately if currently in that state
158      * In general, actions should be idempotent. State may change
159      * before event is received.
160      */
registerForAvailable(Handler h, int what, Object obj)161     void registerForAvailable(Handler h, int what, Object obj);
unregisterForAvailable(Handler h)162     void unregisterForAvailable(Handler h);
163 
164     /**
165      * Fires on any transition into !RadioState.isAvailable()
166      * Fires immediately if currently in that state
167      * In general, actions should be idempotent. State may change
168      * before event is received.
169      */
registerForNotAvailable(Handler h, int what, Object obj)170     void registerForNotAvailable(Handler h, int what, Object obj);
unregisterForNotAvailable(Handler h)171     void unregisterForNotAvailable(Handler h);
172 
173     /**
174      * Fires on any transition into RADIO_OFF or !RadioState.isAvailable()
175      * Fires immediately if currently in that state
176      * In general, actions should be idempotent. State may change
177      * before event is received.
178      */
registerForOffOrNotAvailable(Handler h, int what, Object obj)179     void registerForOffOrNotAvailable(Handler h, int what, Object obj);
unregisterForOffOrNotAvailable(Handler h)180     void unregisterForOffOrNotAvailable(Handler h);
181 
182     /**
183      * Fires on any change in ICC status
184      */
registerForIccStatusChanged(Handler h, int what, Object obj)185     void registerForIccStatusChanged(Handler h, int what, Object obj);
unregisterForIccStatusChanged(Handler h)186     void unregisterForIccStatusChanged(Handler h);
187 
registerForCallStateChanged(Handler h, int what, Object obj)188     void registerForCallStateChanged(Handler h, int what, Object obj);
unregisterForCallStateChanged(Handler h)189     void unregisterForCallStateChanged(Handler h);
registerForVoiceNetworkStateChanged(Handler h, int what, Object obj)190     void registerForVoiceNetworkStateChanged(Handler h, int what, Object obj);
unregisterForVoiceNetworkStateChanged(Handler h)191     void unregisterForVoiceNetworkStateChanged(Handler h);
registerForDataNetworkStateChanged(Handler h, int what, Object obj)192     void registerForDataNetworkStateChanged(Handler h, int what, Object obj);
unregisterForDataNetworkStateChanged(Handler h)193     void unregisterForDataNetworkStateChanged(Handler h);
194 
195     /** InCall voice privacy notifications */
registerForInCallVoicePrivacyOn(Handler h, int what, Object obj)196     void registerForInCallVoicePrivacyOn(Handler h, int what, Object obj);
unregisterForInCallVoicePrivacyOn(Handler h)197     void unregisterForInCallVoicePrivacyOn(Handler h);
registerForInCallVoicePrivacyOff(Handler h, int what, Object obj)198     void registerForInCallVoicePrivacyOff(Handler h, int what, Object obj);
unregisterForInCallVoicePrivacyOff(Handler h)199     void unregisterForInCallVoicePrivacyOff(Handler h);
200 
201     /** Single Radio Voice Call State progress notifications */
registerForSrvccStateChanged(Handler h, int what, Object obj)202     void registerForSrvccStateChanged(Handler h, int what, Object obj);
unregisterForSrvccStateChanged(Handler h)203     void unregisterForSrvccStateChanged(Handler h);
204 
205     /**
206      * Handlers for subscription status change indications.
207      *
208      * @param h Handler for subscription status change messages.
209      * @param what User-defined message code.
210      * @param obj User object.
211      */
registerForSubscriptionStatusChanged(Handler h, int what, Object obj)212     void registerForSubscriptionStatusChanged(Handler h, int what, Object obj);
unregisterForSubscriptionStatusChanged(Handler h)213     void unregisterForSubscriptionStatusChanged(Handler h);
214 
215     /**
216      * fires on any change in hardware configuration.
217      */
registerForHardwareConfigChanged(Handler h, int what, Object obj)218     void registerForHardwareConfigChanged(Handler h, int what, Object obj);
unregisterForHardwareConfigChanged(Handler h)219     void unregisterForHardwareConfigChanged(Handler h);
220 
221     /**
222      * unlike the register* methods, there's only one new 3GPP format SMS handler.
223      * if you need to unregister, you should also tell the radio to stop
224      * sending SMS's to you (via AT+CNMI)
225      *
226      * AsyncResult.result is a String containing the SMS PDU
227      */
setOnNewGsmSms(Handler h, int what, Object obj)228     void setOnNewGsmSms(Handler h, int what, Object obj);
unSetOnNewGsmSms(Handler h)229     void unSetOnNewGsmSms(Handler h);
230 
231     /**
232      * unlike the register* methods, there's only one new 3GPP2 format SMS handler.
233      * if you need to unregister, you should also tell the radio to stop
234      * sending SMS's to you (via AT+CNMI)
235      *
236      * AsyncResult.result is a String containing the SMS PDU
237      */
setOnNewCdmaSms(Handler h, int what, Object obj)238     void setOnNewCdmaSms(Handler h, int what, Object obj);
unSetOnNewCdmaSms(Handler h)239     void unSetOnNewCdmaSms(Handler h);
240 
241     /**
242      * Set the handler for SMS Cell Broadcast messages.
243      *
244      * AsyncResult.result is a byte array containing the SMS-CB PDU
245      */
setOnNewGsmBroadcastSms(Handler h, int what, Object obj)246     void setOnNewGsmBroadcastSms(Handler h, int what, Object obj);
unSetOnNewGsmBroadcastSms(Handler h)247     void unSetOnNewGsmBroadcastSms(Handler h);
248 
249     /**
250      * Register for NEW_SMS_ON_SIM unsolicited message
251      *
252      * AsyncResult.result is an int array containing the index of new SMS
253      */
setOnSmsOnSim(Handler h, int what, Object obj)254     void setOnSmsOnSim(Handler h, int what, Object obj);
unSetOnSmsOnSim(Handler h)255     void unSetOnSmsOnSim(Handler h);
256 
257     /**
258      * Register for NEW_SMS_STATUS_REPORT unsolicited message
259      *
260      * AsyncResult.result is a String containing the status report PDU
261      */
setOnSmsStatus(Handler h, int what, Object obj)262     void setOnSmsStatus(Handler h, int what, Object obj);
unSetOnSmsStatus(Handler h)263     void unSetOnSmsStatus(Handler h);
264 
265     /**
266      * unlike the register* methods, there's only one NITZ time handler
267      *
268      * AsyncResult.result is an Object[]
269      * ((Object[])AsyncResult.result)[0] is a String containing the NITZ time string
270      * ((Object[])AsyncResult.result)[1] is a Long containing the milliseconds since boot as
271      *                                   returned by elapsedRealtime() when this NITZ time
272      *                                   was posted.
273      *
274      * Please note that the delivery of this message may be delayed several
275      * seconds on system startup
276      */
setOnNITZTime(Handler h, int what, Object obj)277     void setOnNITZTime(Handler h, int what, Object obj);
unSetOnNITZTime(Handler h)278     void unSetOnNITZTime(Handler h);
279 
280     /**
281      * unlike the register* methods, there's only one USSD notify handler
282      *
283      * Represents the arrival of a USSD "notify" message, which may
284      * or may not have been triggered by a previous USSD send
285      *
286      * AsyncResult.result is a String[]
287      * ((String[])(AsyncResult.result))[0] contains status code
288      *      "0"   USSD-Notify -- text in ((const char **)data)[1]
289      *      "1"   USSD-Request -- text in ((const char **)data)[1]
290      *      "2"   Session terminated by network
291      *      "3"   other local client (eg, SIM Toolkit) has responded
292      *      "4"   Operation not supported
293      *      "5"   Network timeout
294      *
295      * ((String[])(AsyncResult.result))[1] contains the USSD message
296      * The numeric representations of these are in USSD_MODE_*
297      */
298 
setOnUSSD(Handler h, int what, Object obj)299     void setOnUSSD(Handler h, int what, Object obj);
unSetOnUSSD(Handler h)300     void unSetOnUSSD(Handler h);
301 
302     /**
303      * unlike the register* methods, there's only one signal strength handler
304      * AsyncResult.result is an int[2]
305      * response.obj.result[0] is received signal strength (0-31, 99)
306      * response.obj.result[1] is  bit error rate (0-7, 99)
307      * as defined in TS 27.007 8.5
308      */
309 
setOnSignalStrengthUpdate(Handler h, int what, Object obj)310     void setOnSignalStrengthUpdate(Handler h, int what, Object obj);
unSetOnSignalStrengthUpdate(Handler h)311     void unSetOnSignalStrengthUpdate(Handler h);
312 
313     /**
314      * Sets the handler for SIM/RUIM SMS storage full unsolicited message.
315      * Unlike the register* methods, there's only one notification handler
316      *
317      * @param h Handler for notification message.
318      * @param what User-defined message code.
319      * @param obj User object.
320      */
setOnIccSmsFull(Handler h, int what, Object obj)321     void setOnIccSmsFull(Handler h, int what, Object obj);
unSetOnIccSmsFull(Handler h)322     void unSetOnIccSmsFull(Handler h);
323 
324     /**
325      * Sets the handler for SIM Refresh notifications.
326      *
327      * @param h Handler for notification message.
328      * @param what User-defined message code.
329      * @param obj User object.
330      */
registerForIccRefresh(Handler h, int what, Object obj)331     void registerForIccRefresh(Handler h, int what, Object obj);
unregisterForIccRefresh(Handler h)332     void unregisterForIccRefresh(Handler h);
333 
setOnIccRefresh(Handler h, int what, Object obj)334     void setOnIccRefresh(Handler h, int what, Object obj);
unsetOnIccRefresh(Handler h)335     void unsetOnIccRefresh(Handler h);
336 
337     /**
338      * Sets the handler for RING notifications.
339      * Unlike the register* methods, there's only one notification handler
340      *
341      * @param h Handler for notification message.
342      * @param what User-defined message code.
343      * @param obj User object.
344      */
setOnCallRing(Handler h, int what, Object obj)345     void setOnCallRing(Handler h, int what, Object obj);
unSetOnCallRing(Handler h)346     void unSetOnCallRing(Handler h);
347 
348     /**
349      * Sets the handler for RESTRICTED_STATE changed notification,
350      * eg, for Domain Specific Access Control
351      * unlike the register* methods, there's only one signal strength handler
352      *
353      * AsyncResult.result is an int[1]
354      * response.obj.result[0] is a bitmask of RIL_RESTRICTED_STATE_* values
355      */
356 
setOnRestrictedStateChanged(Handler h, int what, Object obj)357     void setOnRestrictedStateChanged(Handler h, int what, Object obj);
unSetOnRestrictedStateChanged(Handler h)358     void unSetOnRestrictedStateChanged(Handler h);
359 
360     /**
361      * Sets the handler for Supplementary Service Notifications.
362      * Unlike the register* methods, there's only one notification handler
363      *
364      * @param h Handler for notification message.
365      * @param what User-defined message code.
366      * @param obj User object.
367      */
setOnSuppServiceNotification(Handler h, int what, Object obj)368     void setOnSuppServiceNotification(Handler h, int what, Object obj);
unSetOnSuppServiceNotification(Handler h)369     void unSetOnSuppServiceNotification(Handler h);
370 
371     /**
372      * Sets the handler for Session End Notifications for CAT.
373      * Unlike the register* methods, there's only one notification handler
374      *
375      * @param h Handler for notification message.
376      * @param what User-defined message code.
377      * @param obj User object.
378      */
setOnCatSessionEnd(Handler h, int what, Object obj)379     void setOnCatSessionEnd(Handler h, int what, Object obj);
unSetOnCatSessionEnd(Handler h)380     void unSetOnCatSessionEnd(Handler h);
381 
382     /**
383      * Sets the handler for Proactive Commands for CAT.
384      * Unlike the register* methods, there's only one notification handler
385      *
386      * @param h Handler for notification message.
387      * @param what User-defined message code.
388      * @param obj User object.
389      */
setOnCatProactiveCmd(Handler h, int what, Object obj)390     void setOnCatProactiveCmd(Handler h, int what, Object obj);
unSetOnCatProactiveCmd(Handler h)391     void unSetOnCatProactiveCmd(Handler h);
392 
393     /**
394      * Sets the handler for Event Notifications for CAT.
395      * Unlike the register* methods, there's only one notification handler
396      *
397      * @param h Handler for notification message.
398      * @param what User-defined message code.
399      * @param obj User object.
400      */
setOnCatEvent(Handler h, int what, Object obj)401     void setOnCatEvent(Handler h, int what, Object obj);
unSetOnCatEvent(Handler h)402     void unSetOnCatEvent(Handler h);
403 
404     /**
405      * Sets the handler for Call Set Up Notifications for CAT.
406      * Unlike the register* methods, there's only one notification handler
407      *
408      * @param h Handler for notification message.
409      * @param what User-defined message code.
410      * @param obj User object.
411      */
setOnCatCallSetUp(Handler h, int what, Object obj)412     void setOnCatCallSetUp(Handler h, int what, Object obj);
unSetOnCatCallSetUp(Handler h)413     void unSetOnCatCallSetUp(Handler h);
414 
415     /**
416      * Enables/disbables supplementary service related notifications from
417      * the network.
418      *
419      * @param enable true to enable notifications, false to disable.
420      * @param result Message to be posted when command completes.
421      */
setSuppServiceNotifications(boolean enable, Message result)422     void setSuppServiceNotifications(boolean enable, Message result);
423     //void unSetSuppServiceNotifications(Handler h);
424 
425     /**
426      * Sets the handler for Alpha Notification during STK Call Control.
427      * Unlike the register* methods, there's only one notification handler
428      *
429      * @param h Handler for notification message.
430      * @param what User-defined message code.
431      * @param obj User object.
432      */
setOnCatCcAlphaNotify(Handler h, int what, Object obj)433     void setOnCatCcAlphaNotify(Handler h, int what, Object obj);
unSetOnCatCcAlphaNotify(Handler h)434     void unSetOnCatCcAlphaNotify(Handler h);
435 
436     /**
437      * Sets the handler for notifying Suplementary Services (SS)
438      * Data during STK Call Control.
439      * Unlike the register* methods, there's only one notification handler
440      *
441      * @param h Handler for notification message.
442      * @param what User-defined message code.
443      * @param obj User object.
444      */
setOnSs(Handler h, int what, Object obj)445     void setOnSs(Handler h, int what, Object obj);
unSetOnSs(Handler h)446     void unSetOnSs(Handler h);
447 
448     /**
449      * Sets the handler for Event Notifications for CDMA Display Info.
450      * Unlike the register* methods, there's only one notification handler
451      *
452      * @param h Handler for notification message.
453      * @param what User-defined message code.
454      * @param obj User object.
455      */
registerForDisplayInfo(Handler h, int what, Object obj)456     void registerForDisplayInfo(Handler h, int what, Object obj);
unregisterForDisplayInfo(Handler h)457     void unregisterForDisplayInfo(Handler h);
458 
459     /**
460      * Sets the handler for Event Notifications for CallWaiting Info.
461      * Unlike the register* methods, there's only one notification handler
462      *
463      * @param h Handler for notification message.
464      * @param what User-defined message code.
465      * @param obj User object.
466      */
registerForCallWaitingInfo(Handler h, int what, Object obj)467     void registerForCallWaitingInfo(Handler h, int what, Object obj);
unregisterForCallWaitingInfo(Handler h)468     void unregisterForCallWaitingInfo(Handler h);
469 
470     /**
471      * Sets the handler for Event Notifications for Signal Info.
472      * Unlike the register* methods, there's only one notification handler
473      *
474      * @param h Handler for notification message.
475      * @param what User-defined message code.
476      * @param obj User object.
477      */
registerForSignalInfo(Handler h, int what, Object obj)478     void registerForSignalInfo(Handler h, int what, Object obj);
unregisterForSignalInfo(Handler h)479     void unregisterForSignalInfo(Handler h);
480 
481     /**
482      * Registers the handler for CDMA number information record
483      * Unlike the register* methods, there's only one notification handler
484      *
485      * @param h Handler for notification message.
486      * @param what User-defined message code.
487      * @param obj User object.
488      */
registerForNumberInfo(Handler h, int what, Object obj)489     void registerForNumberInfo(Handler h, int what, Object obj);
unregisterForNumberInfo(Handler h)490     void unregisterForNumberInfo(Handler h);
491 
492     /**
493      * Registers the handler for CDMA redirected number Information record
494      * Unlike the register* methods, there's only one notification handler
495      *
496      * @param h Handler for notification message.
497      * @param what User-defined message code.
498      * @param obj User object.
499      */
registerForRedirectedNumberInfo(Handler h, int what, Object obj)500     void registerForRedirectedNumberInfo(Handler h, int what, Object obj);
unregisterForRedirectedNumberInfo(Handler h)501     void unregisterForRedirectedNumberInfo(Handler h);
502 
503     /**
504      * Registers the handler for CDMA line control information record
505      * Unlike the register* methods, there's only one notification handler
506      *
507      * @param h Handler for notification message.
508      * @param what User-defined message code.
509      * @param obj User object.
510      */
registerForLineControlInfo(Handler h, int what, Object obj)511     void registerForLineControlInfo(Handler h, int what, Object obj);
unregisterForLineControlInfo(Handler h)512     void unregisterForLineControlInfo(Handler h);
513 
514     /**
515      * Registers the handler for CDMA T53 CLIR information record
516      * Unlike the register* methods, there's only one notification handler
517      *
518      * @param h Handler for notification message.
519      * @param what User-defined message code.
520      * @param obj User object.
521      */
registerFoT53ClirlInfo(Handler h, int what, Object obj)522     void registerFoT53ClirlInfo(Handler h, int what, Object obj);
unregisterForT53ClirInfo(Handler h)523     void unregisterForT53ClirInfo(Handler h);
524 
525     /**
526      * Registers the handler for CDMA T53 audio control information record
527      * Unlike the register* methods, there's only one notification handler
528      *
529      * @param h Handler for notification message.
530      * @param what User-defined message code.
531      * @param obj User object.
532      */
registerForT53AudioControlInfo(Handler h, int what, Object obj)533     void registerForT53AudioControlInfo(Handler h, int what, Object obj);
unregisterForT53AudioControlInfo(Handler h)534     void unregisterForT53AudioControlInfo(Handler h);
535 
536     /**
537      * Fires on if Modem enters Emergency Callback mode
538      */
setEmergencyCallbackMode(Handler h, int what, Object obj)539     void setEmergencyCallbackMode(Handler h, int what, Object obj);
540 
541      /**
542       * Fires on any CDMA OTA provision status change
543       */
registerForCdmaOtaProvision(Handler h,int what, Object obj)544      void registerForCdmaOtaProvision(Handler h,int what, Object obj);
unregisterForCdmaOtaProvision(Handler h)545      void unregisterForCdmaOtaProvision(Handler h);
546 
547      /**
548       * Registers the handler when out-band ringback tone is needed.<p>
549       *
550       *  Messages received from this:
551       *  Message.obj will be an AsyncResult
552       *  AsyncResult.userObj = obj
553       *  AsyncResult.result = boolean. <p>
554       */
registerForRingbackTone(Handler h, int what, Object obj)555      void registerForRingbackTone(Handler h, int what, Object obj);
unregisterForRingbackTone(Handler h)556      void unregisterForRingbackTone(Handler h);
557 
558      /**
559       * Registers the handler when mute/unmute need to be resent to get
560       * uplink audio during a call.<p>
561       *
562       * @param h Handler for notification message.
563       * @param what User-defined message code.
564       * @param obj User object.
565       *
566       */
registerForResendIncallMute(Handler h, int what, Object obj)567      void registerForResendIncallMute(Handler h, int what, Object obj);
unregisterForResendIncallMute(Handler h)568      void unregisterForResendIncallMute(Handler h);
569 
570      /**
571       * Registers the handler for when Cdma subscription changed events
572       *
573       * @param h Handler for notification message.
574       * @param what User-defined message code.
575       * @param obj User object.
576       *
577       */
registerForCdmaSubscriptionChanged(Handler h, int what, Object obj)578      void registerForCdmaSubscriptionChanged(Handler h, int what, Object obj);
unregisterForCdmaSubscriptionChanged(Handler h)579      void unregisterForCdmaSubscriptionChanged(Handler h);
580 
581      /**
582       * Registers the handler for when Cdma prl changed events
583       *
584       * @param h Handler for notification message.
585       * @param what User-defined message code.
586       * @param obj User object.
587       *
588       */
registerForCdmaPrlChanged(Handler h, int what, Object obj)589      void registerForCdmaPrlChanged(Handler h, int what, Object obj);
unregisterForCdmaPrlChanged(Handler h)590      void unregisterForCdmaPrlChanged(Handler h);
591 
592      /**
593       * Registers the handler for when Cdma prl changed events
594       *
595       * @param h Handler for notification message.
596       * @param what User-defined message code.
597       * @param obj User object.
598       *
599       */
registerForExitEmergencyCallbackMode(Handler h, int what, Object obj)600      void registerForExitEmergencyCallbackMode(Handler h, int what, Object obj);
unregisterForExitEmergencyCallbackMode(Handler h)601      void unregisterForExitEmergencyCallbackMode(Handler h);
602 
603      /**
604       * Registers the handler for RIL_UNSOL_RIL_CONNECT events.
605       *
606       * When ril connects or disconnects a message is sent to the registrant
607       * which contains an AsyncResult, ar, in msg.obj. The ar.result is an
608       * Integer which is the version of the ril or -1 if the ril disconnected.
609       *
610       * @param h Handler for notification message.
611       * @param what User-defined message code.
612       * @param obj User object.
613       */
registerForRilConnected(Handler h, int what, Object obj)614      void registerForRilConnected(Handler h, int what, Object obj);
unregisterForRilConnected(Handler h)615      void unregisterForRilConnected(Handler h);
616 
617     /**
618      * Supply the ICC PIN to the ICC card
619      *
620      *  returned message
621      *  retMsg.obj = AsyncResult ar
622      *  ar.exception carries exception on failure
623      *  This exception is CommandException with an error of PASSWORD_INCORRECT
624      *  if the password is incorrect
625      *
626      *  ar.result is an optional array of integers where the first entry
627      *  is the number of attempts remaining before the ICC will be PUK locked.
628      *
629      * ar.exception and ar.result are null on success
630      */
631 
supplyIccPin(String pin, Message result)632     void supplyIccPin(String pin, Message result);
633 
634     /**
635      * Supply the PIN for the app with this AID on the ICC card
636      *
637      *  AID (Application ID), See ETSI 102.221 8.1 and 101.220 4
638      *
639      *  returned message
640      *  retMsg.obj = AsyncResult ar
641      *  ar.exception carries exception on failure
642      *  This exception is CommandException with an error of PASSWORD_INCORRECT
643      *  if the password is incorrect
644      *
645      *  ar.result is an optional array of integers where the first entry
646      *  is the number of attempts remaining before the ICC will be PUK locked.
647      *
648      * ar.exception and ar.result are null on success
649      */
650 
supplyIccPinForApp(String pin, String aid, Message result)651     void supplyIccPinForApp(String pin, String aid, Message result);
652 
653     /**
654      * Supply the ICC PUK and newPin to the ICC card
655      *
656      *  returned message
657      *  retMsg.obj = AsyncResult ar
658      *  ar.exception carries exception on failure
659      *  This exception is CommandException with an error of PASSWORD_INCORRECT
660      *  if the password is incorrect
661      *
662      *  ar.result is an optional array of integers where the first entry
663      *  is the number of attempts remaining before the ICC is permanently disabled.
664      *
665      * ar.exception and ar.result are null on success
666      */
667 
supplyIccPuk(String puk, String newPin, Message result)668     void supplyIccPuk(String puk, String newPin, Message result);
669 
670     /**
671      * Supply the PUK, new pin for the app with this AID on the ICC card
672      *
673      *  AID (Application ID), See ETSI 102.221 8.1 and 101.220 4
674      *
675      *  retMsg.obj = AsyncResult ar
676      *  ar.exception carries exception on failure
677      *  This exception is CommandException with an error of PASSWORD_INCORRECT
678      *  if the password is incorrect
679      *
680      *  ar.result is an optional array of integers where the first entry
681      *  is the number of attempts remaining before the ICC is permanently disabled.
682      *
683      * ar.exception and ar.result are null on success
684      */
685 
supplyIccPukForApp(String puk, String newPin, String aid, Message result)686     void supplyIccPukForApp(String puk, String newPin, String aid, Message result);
687 
688     /**
689      * Supply the ICC PIN2 to the ICC card
690      * Only called following operation where ICC_PIN2 was
691      * returned as a a failure from a previous operation
692      *
693      *  returned message
694      *  retMsg.obj = AsyncResult ar
695      *  ar.exception carries exception on failure
696      *  This exception is CommandException with an error of PASSWORD_INCORRECT
697      *  if the password is incorrect
698      *
699      *  ar.result is an optional array of integers where the first entry
700      *  is the number of attempts remaining before the ICC will be PUK locked.
701      *
702      * ar.exception and ar.result are null on success
703      */
704 
supplyIccPin2(String pin2, Message result)705     void supplyIccPin2(String pin2, Message result);
706 
707     /**
708      * Supply the PIN2 for the app with this AID on the ICC card
709      * Only called following operation where ICC_PIN2 was
710      * returned as a a failure from a previous operation
711      *
712      *  AID (Application ID), See ETSI 102.221 8.1 and 101.220 4
713      *
714      *  returned message
715      *  retMsg.obj = AsyncResult ar
716      *  ar.exception carries exception on failure
717      *  This exception is CommandException with an error of PASSWORD_INCORRECT
718      *  if the password is incorrect
719      *
720      *  ar.result is an optional array of integers where the first entry
721      *  is the number of attempts remaining before the ICC will be PUK locked.
722      *
723      * ar.exception and ar.result are null on success
724      */
725 
supplyIccPin2ForApp(String pin2, String aid, Message result)726     void supplyIccPin2ForApp(String pin2, String aid, Message result);
727 
728     /**
729      * Supply the SIM PUK2 to the SIM card
730      * Only called following operation where SIM_PUK2 was
731      * returned as a a failure from a previous operation
732      *
733      *  returned message
734      *  retMsg.obj = AsyncResult ar
735      *  ar.exception carries exception on failure
736      *  This exception is CommandException with an error of PASSWORD_INCORRECT
737      *  if the password is incorrect
738      *
739      *  ar.result is an optional array of integers where the first entry
740      *  is the number of attempts remaining before the ICC is permanently disabled.
741      *
742      * ar.exception and ar.result are null on success
743      */
744 
supplyIccPuk2(String puk2, String newPin2, Message result)745     void supplyIccPuk2(String puk2, String newPin2, Message result);
746 
747     /**
748      * Supply the PUK2, newPin2 for the app with this AID on the ICC card
749      * Only called following operation where SIM_PUK2 was
750      * returned as a a failure from a previous operation
751      *
752      *  AID (Application ID), See ETSI 102.221 8.1 and 101.220 4
753      *
754      *  returned message
755      *  retMsg.obj = AsyncResult ar
756      *  ar.exception carries exception on failure
757      *  This exception is CommandException with an error of PASSWORD_INCORRECT
758      *  if the password is incorrect
759      *
760      *  ar.result is an optional array of integers where the first entry
761      *  is the number of attempts remaining before the ICC is permanently disabled.
762      *
763      * ar.exception and ar.result are null on success
764      */
765 
supplyIccPuk2ForApp(String puk2, String newPin2, String aid, Message result)766     void supplyIccPuk2ForApp(String puk2, String newPin2, String aid, Message result);
767 
768     // TODO: Add java doc and indicate that msg.arg1 contains the number of attempts remaining.
changeIccPin(String oldPin, String newPin, Message result)769     void changeIccPin(String oldPin, String newPin, Message result);
changeIccPinForApp(String oldPin, String newPin, String aidPtr, Message result)770     void changeIccPinForApp(String oldPin, String newPin, String aidPtr, Message result);
changeIccPin2(String oldPin2, String newPin2, Message result)771     void changeIccPin2(String oldPin2, String newPin2, Message result);
changeIccPin2ForApp(String oldPin2, String newPin2, String aidPtr, Message result)772     void changeIccPin2ForApp(String oldPin2, String newPin2, String aidPtr, Message result);
773 
changeBarringPassword(String facility, String oldPwd, String newPwd, Message result)774     void changeBarringPassword(String facility, String oldPwd, String newPwd, Message result);
775 
supplyNetworkDepersonalization(String netpin, Message result)776     void supplyNetworkDepersonalization(String netpin, Message result);
777 
778     /**
779      *  returned message
780      *  retMsg.obj = AsyncResult ar
781      *  ar.exception carries exception on failure
782      *  ar.userObject contains the orignal value of result.obj
783      *  ar.result contains a List of DriverCall
784      *      The ar.result List is sorted by DriverCall.index
785      */
getCurrentCalls(Message result)786     void getCurrentCalls (Message result);
787 
788     /**
789      *  returned message
790      *  retMsg.obj = AsyncResult ar
791      *  ar.exception carries exception on failure
792      *  ar.userObject contains the orignal value of result.obj
793      *  ar.result contains a List of DataCallResponse
794      *  @deprecated Do not use.
795      */
796     @Deprecated
getPDPContextList(Message result)797     void getPDPContextList(Message result);
798 
799     /**
800      *  returned message
801      *  retMsg.obj = AsyncResult ar
802      *  ar.exception carries exception on failure
803      *  ar.userObject contains the orignal value of result.obj
804      *  ar.result contains a List of DataCallResponse
805      */
getDataCallList(Message result)806     void getDataCallList(Message result);
807 
808     /**
809      *  returned message
810      *  retMsg.obj = AsyncResult ar
811      *  ar.exception carries exception on failure
812      *  ar.userObject contains the orignal value of result.obj
813      *  ar.result is null on success and failure
814      *
815      * CLIR_DEFAULT     == on "use subscription default value"
816      * CLIR_SUPPRESSION == on "CLIR suppression" (allow CLI presentation)
817      * CLIR_INVOCATION  == on "CLIR invocation" (restrict CLI presentation)
818      */
dial(String address, int clirMode, Message result)819     void dial (String address, int clirMode, Message result);
820 
821     /**
822      *  returned message
823      *  retMsg.obj = AsyncResult ar
824      *  ar.exception carries exception on failure
825      *  ar.userObject contains the orignal value of result.obj
826      *  ar.result is null on success and failure
827      *
828      * CLIR_DEFAULT     == on "use subscription default value"
829      * CLIR_SUPPRESSION == on "CLIR suppression" (allow CLI presentation)
830      * CLIR_INVOCATION  == on "CLIR invocation" (restrict CLI presentation)
831      */
dial(String address, int clirMode, UUSInfo uusInfo, Message result)832     void dial(String address, int clirMode, UUSInfo uusInfo, Message result);
833 
834     /**
835      *  returned message
836      *  retMsg.obj = AsyncResult ar
837      *  ar.exception carries exception on failure
838      *  ar.userObject contains the orignal value of result.obj
839      *  ar.result is String containing IMSI on success
840      */
getIMSI(Message result)841     void getIMSI(Message result);
842 
843     /**
844      *  returned message
845      *  retMsg.obj = AsyncResult ar
846      *  ar.exception carries exception on failure
847      *  ar.userObject contains the orignal value of result.obj
848      *  ar.result is String containing IMSI on success
849      */
getIMSIForApp(String aid, Message result)850     void getIMSIForApp(String aid, Message result);
851 
852     /**
853      *  returned message
854      *  retMsg.obj = AsyncResult ar
855      *  ar.exception carries exception on failure
856      *  ar.userObject contains the orignal value of result.obj
857      *  ar.result is String containing IMEI on success
858      */
getIMEI(Message result)859     void getIMEI(Message result);
860 
861     /**
862      *  returned message
863      *  retMsg.obj = AsyncResult ar
864      *  ar.exception carries exception on failure
865      *  ar.userObject contains the orignal value of result.obj
866      *  ar.result is String containing IMEISV on success
867      */
getIMEISV(Message result)868     void getIMEISV(Message result);
869 
870     /**
871      * Hang up one individual connection.
872      *  returned message
873      *  retMsg.obj = AsyncResult ar
874      *  ar.exception carries exception on failure
875      *  ar.userObject contains the orignal value of result.obj
876      *  ar.result is null on success and failure
877      *
878      *  3GPP 22.030 6.5.5
879      *  "Releases a specific active call X"
880      */
hangupConnection(int gsmIndex, Message result)881     void hangupConnection (int gsmIndex, Message result);
882 
883     /**
884      * 3GPP 22.030 6.5.5
885      *  "Releases all held calls or sets User Determined User Busy (UDUB)
886      *   for a waiting call."
887      *  ar.exception carries exception on failure
888      *  ar.userObject contains the orignal value of result.obj
889      *  ar.result is null on success and failure
890      */
hangupWaitingOrBackground(Message result)891     void hangupWaitingOrBackground (Message result);
892 
893     /**
894      * 3GPP 22.030 6.5.5
895      * "Releases all active calls (if any exist) and accepts
896      *  the other (held or waiting) call."
897      *
898      *  ar.exception carries exception on failure
899      *  ar.userObject contains the orignal value of result.obj
900      *  ar.result is null on success and failure
901      */
hangupForegroundResumeBackground(Message result)902     void hangupForegroundResumeBackground (Message result);
903 
904     /**
905      * 3GPP 22.030 6.5.5
906      * "Places all active calls (if any exist) on hold and accepts
907      *  the other (held or waiting) call."
908      *
909      *  ar.exception carries exception on failure
910      *  ar.userObject contains the orignal value of result.obj
911      *  ar.result is null on success and failure
912      */
switchWaitingOrHoldingAndActive(Message result)913     void switchWaitingOrHoldingAndActive (Message result);
914 
915     /**
916      * 3GPP 22.030 6.5.5
917      * "Adds a held call to the conversation"
918      *
919      *  ar.exception carries exception on failure
920      *  ar.userObject contains the orignal value of result.obj
921      *  ar.result is null on success and failure
922      */
conference(Message result)923     void conference (Message result);
924 
925     /**
926      * Set preferred Voice Privacy (VP).
927      *
928      * @param enable true is enhanced and false is normal VP
929      * @param result is a callback message
930      */
setPreferredVoicePrivacy(boolean enable, Message result)931     void setPreferredVoicePrivacy(boolean enable, Message result);
932 
933     /**
934      * Get currently set preferred Voice Privacy (VP) mode.
935      *
936      * @param result is a callback message
937      */
getPreferredVoicePrivacy(Message result)938     void getPreferredVoicePrivacy(Message result);
939 
940     /**
941      * 3GPP 22.030 6.5.5
942      * "Places all active calls on hold except call X with which
943      *  communication shall be supported."
944      */
separateConnection(int gsmIndex, Message result)945     void separateConnection (int gsmIndex, Message result);
946 
947     /**
948      *
949      *  ar.exception carries exception on failure
950      *  ar.userObject contains the orignal value of result.obj
951      *  ar.result is null on success and failure
952      */
acceptCall(Message result)953     void acceptCall (Message result);
954 
955     /**
956      *  also known as UDUB
957      *  ar.exception carries exception on failure
958      *  ar.userObject contains the orignal value of result.obj
959      *  ar.result is null on success and failure
960      */
rejectCall(Message result)961     void rejectCall (Message result);
962 
963     /**
964      * 3GPP 22.030 6.5.5
965      * "Connects the two calls and disconnects the subscriber from both calls"
966      *
967      *  ar.exception carries exception on failure
968      *  ar.userObject contains the orignal value of result.obj
969      *  ar.result is null on success and failure
970      */
explicitCallTransfer(Message result)971     void explicitCallTransfer (Message result);
972 
973     /**
974      * cause code returned as int[0] in Message.obj.response
975      * Returns integer cause code defined in TS 24.008
976      * Annex H or closest approximation.
977      * Most significant codes:
978      * - Any defined in 22.001 F.4 (for generating busy/congestion)
979      * - Cause 68: ACM >= ACMMax
980      */
getLastCallFailCause(Message result)981     void getLastCallFailCause (Message result);
982 
983 
984     /**
985      * Reason for last PDP context deactivate or failure to activate
986      * cause code returned as int[0] in Message.obj.response
987      * returns an integer cause code defined in TS 24.008
988      * section 6.1.3.1.3 or close approximation
989      * @deprecated Do not use.
990      */
991     @Deprecated
getLastPdpFailCause(Message result)992     void getLastPdpFailCause (Message result);
993 
994     /**
995      * The preferred new alternative to getLastPdpFailCause
996      * that is also CDMA-compatible.
997      */
getLastDataCallFailCause(Message result)998     void getLastDataCallFailCause (Message result);
999 
setMute(boolean enableMute, Message response)1000     void setMute (boolean enableMute, Message response);
1001 
getMute(Message response)1002     void getMute (Message response);
1003 
1004     /**
1005      * response.obj is an AsyncResult
1006      * response.obj.result is an int[2]
1007      * response.obj.result[0] is received signal strength (0-31, 99)
1008      * response.obj.result[1] is  bit error rate (0-7, 99)
1009      * as defined in TS 27.007 8.5
1010      */
getSignalStrength(Message response)1011     void getSignalStrength (Message response);
1012 
1013 
1014     /**
1015      * response.obj.result is an int[3]
1016      * response.obj.result[0] is registration state 0-5 from TS 27.007 7.2
1017      * response.obj.result[1] is LAC if registered or -1 if not
1018      * response.obj.result[2] is CID if registered or -1 if not
1019      * valid LAC and CIDs are 0x0000 - 0xffff
1020      *
1021      * Please note that registration state 4 ("unknown") is treated
1022      * as "out of service" above
1023      */
getVoiceRegistrationState(Message response)1024     void getVoiceRegistrationState (Message response);
1025 
1026     /**
1027      * response.obj.result is an int[3]
1028      * response.obj.result[0] is registration state 0-5 from TS 27.007 7.2
1029      * response.obj.result[1] is LAC if registered or -1 if not
1030      * response.obj.result[2] is CID if registered or -1 if not
1031      * valid LAC and CIDs are 0x0000 - 0xffff
1032      *
1033      * Please note that registration state 4 ("unknown") is treated
1034      * as "out of service" above
1035      */
getDataRegistrationState(Message response)1036     void getDataRegistrationState (Message response);
1037 
1038     /**
1039      * response.obj.result is a String[3]
1040      * response.obj.result[0] is long alpha or null if unregistered
1041      * response.obj.result[1] is short alpha or null if unregistered
1042      * response.obj.result[2] is numeric or null if unregistered
1043      */
getOperator(Message response)1044     void getOperator(Message response);
1045 
1046     /**
1047      *  ar.exception carries exception on failure
1048      *  ar.userObject contains the orignal value of result.obj
1049      *  ar.result is null on success and failure
1050      */
sendDtmf(char c, Message result)1051     void sendDtmf(char c, Message result);
1052 
1053 
1054     /**
1055      *  ar.exception carries exception on failure
1056      *  ar.userObject contains the orignal value of result.obj
1057      *  ar.result is null on success and failure
1058      */
startDtmf(char c, Message result)1059     void startDtmf(char c, Message result);
1060 
1061     /**
1062      *  ar.exception carries exception on failure
1063      *  ar.userObject contains the orignal value of result.obj
1064      *  ar.result is null on success and failure
1065      */
stopDtmf(Message result)1066     void stopDtmf(Message result);
1067 
1068     /**
1069      *  ar.exception carries exception on failure
1070      *  ar.userObject contains the orignal value of result.obj
1071      *  ar.result is null on success and failure
1072      */
sendBurstDtmf(String dtmfString, int on, int off, Message result)1073     void sendBurstDtmf(String dtmfString, int on, int off, Message result);
1074 
1075     /**
1076      * smscPDU is smsc address in PDU form GSM BCD format prefixed
1077      *      by a length byte (as expected by TS 27.005) or NULL for default SMSC
1078      * pdu is SMS in PDU format as an ASCII hex string
1079      *      less the SMSC address
1080      */
sendSMS(String smscPDU, String pdu, Message response)1081     void sendSMS (String smscPDU, String pdu, Message response);
1082 
1083     /**
1084      * Send an SMS message, Identical to sendSMS,
1085      * except that more messages are expected to be sent soon
1086      * smscPDU is smsc address in PDU form GSM BCD format prefixed
1087      *      by a length byte (as expected by TS 27.005) or NULL for default SMSC
1088      * pdu is SMS in PDU format as an ASCII hex string
1089      *      less the SMSC address
1090      */
sendSMSExpectMore(String smscPDU, String pdu, Message response)1091     void sendSMSExpectMore (String smscPDU, String pdu, Message response);
1092 
1093     /**
1094      * @param pdu is CDMA-SMS in internal pseudo-PDU format
1095      * @param response sent when operation completes
1096      */
sendCdmaSms(byte[] pdu, Message response)1097     void sendCdmaSms(byte[] pdu, Message response);
1098 
1099     /**
1100      * send SMS over IMS with 3GPP/GSM SMS format
1101      * @param smscPDU is smsc address in PDU form GSM BCD format prefixed
1102      *      by a length byte (as expected by TS 27.005) or NULL for default SMSC
1103      * @param pdu is SMS in PDU format as an ASCII hex string
1104      *      less the SMSC address
1105      * @param retry indicates if this is a retry; 0 == not retry, nonzero = retry
1106      * @param messageRef valid field if retry is set to nonzero.
1107      *        Contains messageRef from RIL_SMS_Response corresponding to failed MO SMS
1108      * @param response sent when operation completes
1109      */
sendImsGsmSms(String smscPDU, String pdu, int retry, int messageRef, Message response)1110     void sendImsGsmSms (String smscPDU, String pdu, int retry, int messageRef,
1111             Message response);
1112 
1113     /**
1114      * send SMS over IMS with 3GPP2/CDMA SMS format
1115      * @param pdu is CDMA-SMS in internal pseudo-PDU format
1116      * @param response sent when operation completes
1117      * @param retry indicates if this is a retry; 0 == not retry, nonzero = retry
1118      * @param messageRef valid field if retry is set to nonzero.
1119      *        Contains messageRef from RIL_SMS_Response corresponding to failed MO SMS
1120      * @param response sent when operation completes
1121      */
sendImsCdmaSms(byte[] pdu, int retry, int messageRef, Message response)1122     void sendImsCdmaSms(byte[] pdu, int retry, int messageRef, Message response);
1123 
1124     /**
1125      * Deletes the specified SMS record from SIM memory (EF_SMS).
1126      *
1127      * @param index index of the SMS record to delete
1128      * @param response sent when operation completes
1129      */
deleteSmsOnSim(int index, Message response)1130     void deleteSmsOnSim(int index, Message response);
1131 
1132     /**
1133      * Deletes the specified SMS record from RUIM memory (EF_SMS in DF_CDMA).
1134      *
1135      * @param index index of the SMS record to delete
1136      * @param response sent when operation completes
1137      */
deleteSmsOnRuim(int index, Message response)1138     void deleteSmsOnRuim(int index, Message response);
1139 
1140     /**
1141      * Writes an SMS message to SIM memory (EF_SMS).
1142      *
1143      * @param status status of message on SIM.  One of:
1144      *                  SmsManger.STATUS_ON_ICC_READ
1145      *                  SmsManger.STATUS_ON_ICC_UNREAD
1146      *                  SmsManger.STATUS_ON_ICC_SENT
1147      *                  SmsManger.STATUS_ON_ICC_UNSENT
1148      * @param pdu message PDU, as hex string
1149      * @param response sent when operation completes.
1150      *                  response.obj will be an AsyncResult, and will indicate
1151      *                  any error that may have occurred (eg, out of memory).
1152      */
writeSmsToSim(int status, String smsc, String pdu, Message response)1153     void writeSmsToSim(int status, String smsc, String pdu, Message response);
1154 
writeSmsToRuim(int status, String pdu, Message response)1155     void writeSmsToRuim(int status, String pdu, Message response);
1156 
setRadioPower(boolean on, Message response)1157     void setRadioPower(boolean on, Message response);
1158 
acknowledgeLastIncomingGsmSms(boolean success, int cause, Message response)1159     void acknowledgeLastIncomingGsmSms(boolean success, int cause, Message response);
1160 
acknowledgeLastIncomingCdmaSms(boolean success, int cause, Message response)1161     void acknowledgeLastIncomingCdmaSms(boolean success, int cause, Message response);
1162 
1163     /**
1164      * Acknowledge successful or failed receipt of last incoming SMS,
1165      * including acknowledgement TPDU to send as the RP-User-Data element
1166      * of the RP-ACK or RP-ERROR PDU.
1167      *
1168      * @param success true to send RP-ACK, false to send RP-ERROR
1169      * @param ackPdu the acknowledgement TPDU in hexadecimal format
1170      * @param response sent when operation completes.
1171      */
acknowledgeIncomingGsmSmsWithPdu(boolean success, String ackPdu, Message response)1172     void acknowledgeIncomingGsmSmsWithPdu(boolean success, String ackPdu, Message response);
1173 
1174     /**
1175      * parameters equivalent to 27.007 AT+CRSM command
1176      * response.obj will be an AsyncResult
1177      * response.obj.result will be an IccIoResult on success
1178      */
iccIO(int command, int fileid, String path, int p1, int p2, int p3, String data, String pin2, Message response)1179     void iccIO (int command, int fileid, String path, int p1, int p2, int p3,
1180             String data, String pin2, Message response);
1181 
1182     /**
1183      * parameters equivalent to 27.007 AT+CRSM command
1184      * response.obj will be an AsyncResult
1185      * response.obj.userObj will be a IccIoResult on success
1186      */
iccIOForApp(int command, int fileid, String path, int p1, int p2, int p3, String data, String pin2, String aid, Message response)1187     void iccIOForApp (int command, int fileid, String path, int p1, int p2, int p3,
1188             String data, String pin2, String aid, Message response);
1189 
1190     /**
1191      * (AsyncResult)response.obj).result is an int[] with element [0] set to
1192      * 1 for "CLIP is provisioned", and 0 for "CLIP is not provisioned".
1193      *
1194      * @param response is callback message
1195      */
1196 
queryCLIP(Message response)1197     void queryCLIP(Message response);
1198 
1199     /**
1200      * response.obj will be a an int[2]
1201      *
1202      * response.obj[0] will be TS 27.007 +CLIR parameter 'n'
1203      *  0 presentation indicator is used according to the subscription of the CLIR service
1204      *  1 CLIR invocation
1205      *  2 CLIR suppression
1206      *
1207      * response.obj[1] will be TS 27.007 +CLIR parameter 'm'
1208      *  0 CLIR not provisioned
1209      *  1 CLIR provisioned in permanent mode
1210      *  2 unknown (e.g. no network, etc.)
1211      *  3 CLIR temporary mode presentation restricted
1212      *  4 CLIR temporary mode presentation allowed
1213      */
1214 
getCLIR(Message response)1215     void getCLIR(Message response);
1216 
1217     /**
1218      * clirMode is one of the CLIR_* constants above
1219      *
1220      * response.obj is null
1221      */
1222 
setCLIR(int clirMode, Message response)1223     void setCLIR(int clirMode, Message response);
1224 
1225     /**
1226      * (AsyncResult)response.obj).result is an int[] with element [0] set to
1227      * 0 for disabled, 1 for enabled.
1228      *
1229      * @param serviceClass is a sum of SERVICE_CLASS_*
1230      * @param response is callback message
1231      */
1232 
queryCallWaiting(int serviceClass, Message response)1233     void queryCallWaiting(int serviceClass, Message response);
1234 
1235     /**
1236      * @param enable is true to enable, false to disable
1237      * @param serviceClass is a sum of SERVICE_CLASS_*
1238      * @param response is callback message
1239      */
1240 
setCallWaiting(boolean enable, int serviceClass, Message response)1241     void setCallWaiting(boolean enable, int serviceClass, Message response);
1242 
1243     /**
1244      * @param action is one of CF_ACTION_*
1245      * @param cfReason is one of CF_REASON_*
1246      * @param serviceClass is a sum of SERVICE_CLASSS_*
1247      */
setCallForward(int action, int cfReason, int serviceClass, String number, int timeSeconds, Message response)1248     void setCallForward(int action, int cfReason, int serviceClass,
1249                 String number, int timeSeconds, Message response);
1250 
1251     /**
1252      * cfReason is one of CF_REASON_*
1253      *
1254      * ((AsyncResult)response.obj).result will be an array of
1255      * CallForwardInfo's
1256      *
1257      * An array of length 0 means "disabled for all codes"
1258      */
queryCallForwardStatus(int cfReason, int serviceClass, String number, Message response)1259     void queryCallForwardStatus(int cfReason, int serviceClass,
1260             String number, Message response);
1261 
setNetworkSelectionModeAutomatic(Message response)1262     void setNetworkSelectionModeAutomatic(Message response);
1263 
setNetworkSelectionModeManual(String operatorNumeric, Message response)1264     void setNetworkSelectionModeManual(String operatorNumeric, Message response);
1265 
1266     /**
1267      * Queries whether the current network selection mode is automatic
1268      * or manual
1269      *
1270      * ((AsyncResult)response.obj).result  is an int[] with element [0] being
1271      * a 0 for automatic selection and a 1 for manual selection
1272      */
1273 
getNetworkSelectionMode(Message response)1274     void getNetworkSelectionMode(Message response);
1275 
1276     /**
1277      * Queries the currently available networks
1278      *
1279      * ((AsyncResult)response.obj).result  is a List of NetworkInfo objects
1280      */
getAvailableNetworks(Message response)1281     void getAvailableNetworks(Message response);
1282 
getBasebandVersion(Message response)1283     void getBasebandVersion (Message response);
1284 
1285 
1286     /**
1287      * (AsyncResult)response.obj).result will be an Integer representing
1288      * the sum of enabled service classes (sum of SERVICE_CLASS_*)
1289      *
1290      * @param facility one of CB_FACILTY_*
1291      * @param password password or "" if not required
1292      * @param serviceClass is a sum of SERVICE_CLASS_*
1293      * @param response is callback message
1294      */
1295 
queryFacilityLock(String facility, String password, int serviceClass, Message response)1296     void queryFacilityLock (String facility, String password, int serviceClass,
1297         Message response);
1298 
1299     /**
1300      * (AsyncResult)response.obj).result will be an Integer representing
1301      * the sum of enabled service classes (sum of SERVICE_CLASS_*) for the
1302      * application with appId.
1303      *
1304      * @param facility one of CB_FACILTY_*
1305      * @param password password or "" if not required
1306      * @param serviceClass is a sum of SERVICE_CLASS_*
1307      * @param appId is application Id or null if none
1308      * @param response is callback message
1309      */
1310 
queryFacilityLockForApp(String facility, String password, int serviceClass, String appId, Message response)1311     void queryFacilityLockForApp(String facility, String password, int serviceClass, String appId,
1312         Message response);
1313 
1314     /**
1315      * @param facility one of CB_FACILTY_*
1316      * @param lockState true means lock, false means unlock
1317      * @param password password or "" if not required
1318      * @param serviceClass is a sum of SERVICE_CLASS_*
1319      * @param response is callback message
1320      */
setFacilityLock(String facility, boolean lockState, String password, int serviceClass, Message response)1321     void setFacilityLock (String facility, boolean lockState, String password,
1322         int serviceClass, Message response);
1323 
1324     /**
1325      * Set the facility lock for the app with this AID on the ICC card.
1326      *
1327      * @param facility one of CB_FACILTY_*
1328      * @param lockState true means lock, false means unlock
1329      * @param password password or "" if not required
1330      * @param serviceClass is a sum of SERVICE_CLASS_*
1331      * @param appId is application Id or null if none
1332      * @param response is callback message
1333      */
setFacilityLockForApp(String facility, boolean lockState, String password, int serviceClass, String appId, Message response)1334     void setFacilityLockForApp(String facility, boolean lockState, String password,
1335         int serviceClass, String appId, Message response);
1336 
sendUSSD(String ussdString, Message response)1337     void sendUSSD (String ussdString, Message response);
1338 
1339     /**
1340      * Cancels a pending USSD session if one exists.
1341      * @param response callback message
1342      */
cancelPendingUssd(Message response)1343     void cancelPendingUssd (Message response);
1344 
resetRadio(Message result)1345     void resetRadio(Message result);
1346 
1347     /**
1348      * Assign a specified band for RF configuration.
1349      *
1350      * @param bandMode one of BM_*_BAND
1351      * @param response is callback message
1352      */
setBandMode(int bandMode, Message response)1353     void setBandMode (int bandMode, Message response);
1354 
1355     /**
1356      * Query the list of band mode supported by RF.
1357      *
1358      * @param response is callback message
1359      *        ((AsyncResult)response.obj).result  is an int[] where int[0] is
1360      *        the size of the array and the rest of each element representing
1361      *        one available BM_*_BAND
1362      */
queryAvailableBandMode(Message response)1363     void queryAvailableBandMode (Message response);
1364 
1365     /**
1366      *  Requests to set the preferred network type for searching and registering
1367      * (CS/PS domain, RAT, and operation mode)
1368      * @param networkType one of  NT_*_TYPE
1369      * @param response is callback message
1370      */
setPreferredNetworkType(int networkType , Message response)1371     void setPreferredNetworkType(int networkType , Message response);
1372 
1373      /**
1374      *  Query the preferred network type setting
1375      *
1376      * @param response is callback message to report one of  NT_*_TYPE
1377      */
getPreferredNetworkType(Message response)1378     void getPreferredNetworkType(Message response);
1379 
1380     /**
1381      * Query neighboring cell ids
1382      *
1383      * @param response s callback message to cell ids
1384      */
getNeighboringCids(Message response)1385     void getNeighboringCids(Message response);
1386 
1387     /**
1388      * Request to enable/disable network state change notifications when
1389      * location information (lac and/or cid) has changed.
1390      *
1391      * @param enable true to enable, false to disable
1392      * @param response callback message
1393      */
setLocationUpdates(boolean enable, Message response)1394     void setLocationUpdates(boolean enable, Message response);
1395 
1396     /**
1397      * Gets the default SMSC address.
1398      *
1399      * @param result Callback message contains the SMSC address.
1400      */
getSmscAddress(Message result)1401     void getSmscAddress(Message result);
1402 
1403     /**
1404      * Sets the default SMSC address.
1405      *
1406      * @param address new SMSC address
1407      * @param result Callback message is empty on completion
1408      */
setSmscAddress(String address, Message result)1409     void setSmscAddress(String address, Message result);
1410 
1411     /**
1412      * Indicates whether there is storage available for new SMS messages.
1413      * @param available true if storage is available
1414      * @param result callback message
1415      */
reportSmsMemoryStatus(boolean available, Message result)1416     void reportSmsMemoryStatus(boolean available, Message result);
1417 
1418     /**
1419      * Indicates to the vendor ril that StkService is running
1420      * and is ready to receive RIL_UNSOL_STK_XXXX commands.
1421      *
1422      * @param result callback message
1423      */
reportStkServiceIsRunning(Message result)1424     void reportStkServiceIsRunning(Message result);
1425 
invokeOemRilRequestRaw(byte[] data, Message response)1426     void invokeOemRilRequestRaw(byte[] data, Message response);
1427 
invokeOemRilRequestStrings(String[] strings, Message response)1428     void invokeOemRilRequestStrings(String[] strings, Message response);
1429 
1430     /**
1431      * Fires when RIL_UNSOL_OEM_HOOK_RAW is received from the RIL.
1432      */
setOnUnsolOemHookRaw(Handler h, int what, Object obj)1433     void setOnUnsolOemHookRaw(Handler h, int what, Object obj);
unSetOnUnsolOemHookRaw(Handler h)1434     void unSetOnUnsolOemHookRaw(Handler h);
1435 
1436     /**
1437      * Send TERMINAL RESPONSE to the SIM, after processing a proactive command
1438      * sent by the SIM.
1439      *
1440      * @param contents  String containing SAT/USAT response in hexadecimal
1441      *                  format starting with first byte of response data. See
1442      *                  TS 102 223 for details.
1443      * @param response  Callback message
1444      */
sendTerminalResponse(String contents, Message response)1445     public void sendTerminalResponse(String contents, Message response);
1446 
1447     /**
1448      * Send ENVELOPE to the SIM, after processing a proactive command sent by
1449      * the SIM.
1450      *
1451      * @param contents  String containing SAT/USAT response in hexadecimal
1452      *                  format starting with command tag. See TS 102 223 for
1453      *                  details.
1454      * @param response  Callback message
1455      */
sendEnvelope(String contents, Message response)1456     public void sendEnvelope(String contents, Message response);
1457 
1458     /**
1459      * Send ENVELOPE to the SIM, such as an SMS-PP data download envelope
1460      * for a SIM data download message. This method has one difference
1461      * from {@link #sendEnvelope}: The SW1 and SW2 status bytes from the UICC response
1462      * are returned along with the response data.
1463      *
1464      * response.obj will be an AsyncResult
1465      * response.obj.result will be an IccIoResult on success
1466      *
1467      * @param contents  String containing SAT/USAT response in hexadecimal
1468      *                  format starting with command tag. See TS 102 223 for
1469      *                  details.
1470      * @param response  Callback message
1471      */
sendEnvelopeWithStatus(String contents, Message response)1472     public void sendEnvelopeWithStatus(String contents, Message response);
1473 
1474     /**
1475      * Accept or reject the call setup request from SIM.
1476      *
1477      * @param accept   true if the call is to be accepted, false otherwise.
1478      * @param response Callback message
1479      */
handleCallSetupRequestFromSim(boolean accept, Message response)1480     public void handleCallSetupRequestFromSim(boolean accept, Message response);
1481 
1482     /**
1483      * Activate or deactivate cell broadcast SMS for GSM.
1484      *
1485      * @param activate
1486      *            true = activate, false = deactivate
1487      * @param result Callback message is empty on completion
1488      */
setGsmBroadcastActivation(boolean activate, Message result)1489     public void setGsmBroadcastActivation(boolean activate, Message result);
1490 
1491     /**
1492      * Configure cell broadcast SMS for GSM.
1493      *
1494      * @param response Callback message is empty on completion
1495      */
setGsmBroadcastConfig(SmsBroadcastConfigInfo[] config, Message response)1496     public void setGsmBroadcastConfig(SmsBroadcastConfigInfo[] config, Message response);
1497 
1498     /**
1499      * Query the current configuration of cell broadcast SMS of GSM.
1500      *
1501      * @param response
1502      *        Callback message contains the configuration from the modem
1503      *        on completion
1504      */
getGsmBroadcastConfig(Message response)1505     public void getGsmBroadcastConfig(Message response);
1506 
1507     //***** new Methods for CDMA support
1508 
1509     /**
1510      * Request the device ESN / MEID / IMEI / IMEISV.
1511      * "response" is const char **
1512      *   [0] is IMEI if GSM subscription is available
1513      *   [1] is IMEISV if GSM subscription is available
1514      *   [2] is ESN if CDMA subscription is available
1515      *   [3] is MEID if CDMA subscription is available
1516      */
getDeviceIdentity(Message response)1517     public void getDeviceIdentity(Message response);
1518 
1519     /**
1520      * Request the device MDN / H_SID / H_NID / MIN.
1521      * "response" is const char **
1522      *   [0] is MDN if CDMA subscription is available
1523      *   [1] is a comma separated list of H_SID (Home SID) in decimal format
1524      *       if CDMA subscription is available
1525      *   [2] is a comma separated list of H_NID (Home NID) in decimal format
1526      *       if CDMA subscription is available
1527      *   [3] is MIN (10 digits, MIN2+MIN1) if CDMA subscription is available
1528      */
getCDMASubscription(Message response)1529     public void getCDMASubscription(Message response);
1530 
1531     /**
1532      * Send Flash Code.
1533      * "response" is is NULL
1534      *   [0] is a FLASH string
1535      */
sendCDMAFeatureCode(String FeatureCode, Message response)1536     public void sendCDMAFeatureCode(String FeatureCode, Message response);
1537 
1538     /** Set the Phone type created */
setPhoneType(int phoneType)1539     void setPhoneType(int phoneType);
1540 
1541     /**
1542      *  Query the CDMA roaming preference setting
1543      *
1544      * @param response is callback message to report one of  CDMA_RM_*
1545      */
queryCdmaRoamingPreference(Message response)1546     void queryCdmaRoamingPreference(Message response);
1547 
1548     /**
1549      *  Requests to set the CDMA roaming preference
1550      * @param cdmaRoamingType one of  CDMA_RM_*
1551      * @param response is callback message
1552      */
setCdmaRoamingPreference(int cdmaRoamingType, Message response)1553     void setCdmaRoamingPreference(int cdmaRoamingType, Message response);
1554 
1555     /**
1556      *  Requests to set the CDMA subscription mode
1557      * @param cdmaSubscriptionType one of  CDMA_SUBSCRIPTION_*
1558      * @param response is callback message
1559      */
setCdmaSubscriptionSource(int cdmaSubscriptionType, Message response)1560     void setCdmaSubscriptionSource(int cdmaSubscriptionType, Message response);
1561 
1562     /**
1563      *  Requests to get the CDMA subscription srouce
1564      * @param response is callback message
1565      */
getCdmaSubscriptionSource(Message response)1566     void getCdmaSubscriptionSource(Message response);
1567 
1568     /**
1569      *  Set the TTY mode
1570      *
1571      * @param ttyMode one of the following:
1572      * - {@link com.android.internal.telephony.Phone#TTY_MODE_OFF}
1573      * - {@link com.android.internal.telephony.Phone#TTY_MODE_FULL}
1574      * - {@link com.android.internal.telephony.Phone#TTY_MODE_HCO}
1575      * - {@link com.android.internal.telephony.Phone#TTY_MODE_VCO}
1576      * @param response is callback message
1577      */
setTTYMode(int ttyMode, Message response)1578     void setTTYMode(int ttyMode, Message response);
1579 
1580     /**
1581      *  Query the TTY mode
1582      * (AsyncResult)response.obj).result is an int[] with element [0] set to
1583      * tty mode:
1584      * - {@link com.android.internal.telephony.Phone#TTY_MODE_OFF}
1585      * - {@link com.android.internal.telephony.Phone#TTY_MODE_FULL}
1586      * - {@link com.android.internal.telephony.Phone#TTY_MODE_HCO}
1587      * - {@link com.android.internal.telephony.Phone#TTY_MODE_VCO}
1588      * @param response is callback message
1589      */
queryTTYMode(Message response)1590     void queryTTYMode(Message response);
1591 
1592     /**
1593      * Setup a packet data connection On successful completion, the result
1594      * message will return a {@link com.android.internal.telephony.dataconnection.DataCallResponse}
1595      * object containing the connection information.
1596      *
1597      * @param radioTechnology
1598      *            Radio technology to use. Values is one of RIL_RADIO_TECHNOLOGY_*
1599      * @param profile
1600      *            Profile Number. Values is one of DATA_PROFILE_*
1601      * @param apn
1602      *            the APN to connect to if radio technology is GSM/UMTS.
1603      *            Otherwise null for CDMA.
1604      * @param user
1605      *            the username for APN, or NULL
1606      * @param password
1607      *            the password for APN, or NULL
1608      * @param authType
1609      *            the PAP / CHAP auth type. Values is one of SETUP_DATA_AUTH_*
1610      * @param protocol
1611      *            one of the PDP_type values in TS 27.007 section 10.1.1.
1612      *            For example, "IP", "IPV6", "IPV4V6", or "PPP".
1613      * @param result
1614      *            Callback message
1615      */
setupDataCall(int radioTechnology, int profile, String apn, String user, String password, int authType, String protocol, Message result)1616     public void setupDataCall(int radioTechnology, int profile,
1617             String apn, String user, String password, int authType,
1618             String protocol, Message result);
1619 
1620     /**
1621      * Deactivate packet data connection
1622      *
1623      * @param cid
1624      *            The connection ID
1625      * @param reason
1626      *            Data disconnect reason.
1627      * @param result
1628      *            Callback message is empty on completion
1629      */
deactivateDataCall(int cid, int reason, Message result)1630     public void deactivateDataCall(int cid, int reason, Message result);
1631 
1632     /**
1633      * Activate or deactivate cell broadcast SMS for CDMA.
1634      *
1635      * @param activate
1636      *            true = activate, false = deactivate
1637      * @param result
1638      *            Callback message is empty on completion
1639      */
setCdmaBroadcastActivation(boolean activate, Message result)1640     public void setCdmaBroadcastActivation(boolean activate, Message result);
1641 
1642     /**
1643      * Configure cdma cell broadcast SMS.
1644      *
1645      * @param response
1646      *            Callback message is empty on completion
1647      */
setCdmaBroadcastConfig(CdmaSmsBroadcastConfigInfo[] configs, Message response)1648     public void setCdmaBroadcastConfig(CdmaSmsBroadcastConfigInfo[] configs, Message response);
1649 
1650     /**
1651      * Query the current configuration of cdma cell broadcast SMS.
1652      *
1653      * @param result
1654      *            Callback message contains the configuration from the modem on completion
1655      */
getCdmaBroadcastConfig(Message result)1656     public void getCdmaBroadcastConfig(Message result);
1657 
1658     /**
1659      *  Requests the radio's system selection module to exit emergency callback mode.
1660      *  This function should only be called from for CDMA.
1661      *
1662      * @param response callback message
1663      */
exitEmergencyCallbackMode(Message response)1664     public void exitEmergencyCallbackMode(Message response);
1665 
1666     /**
1667      * Request the status of the ICC and UICC cards.
1668      *
1669      * @param result
1670      *          Callback message containing {@link IccCardStatus} structure for the card.
1671      */
getIccCardStatus(Message result)1672     public void getIccCardStatus(Message result);
1673 
1674     /**
1675      * Return if the current radio is LTE on CDMA. This
1676      * is a tri-state return value as for a period of time
1677      * the mode may be unknown.
1678      *
1679      * @return {@link PhoneConstants#LTE_ON_CDMA_UNKNOWN}, {@link PhoneConstants#LTE_ON_CDMA_FALSE}
1680      * or {@link PhoneConstants#LTE_ON_CDMA_TRUE}
1681      */
getLteOnCdmaMode()1682     public int getLteOnCdmaMode();
1683 
1684     /**
1685      * Request the ISIM application on the UICC to perform the AKA
1686      * challenge/response algorithm for IMS authentication. The nonce string
1687      * and challenge response are Base64 encoded Strings.
1688      *
1689      * @param nonce the nonce string to pass with the ISIM authentication request
1690      * @param response a callback message with the String response in the obj field
1691      * @deprecated
1692      * @see requestIccSimAuthentication
1693      */
requestIsimAuthentication(String nonce, Message response)1694     public void requestIsimAuthentication(String nonce, Message response);
1695 
1696     /**
1697      * Request the SIM application on the UICC to perform authentication
1698      * challenge/response algorithm. The data string and challenge response are
1699      * Base64 encoded Strings.
1700      * Can support EAP-SIM, EAP-AKA with results encoded per 3GPP TS 31.102.
1701      *
1702      * @param authContext is the P2 parameter that specifies the authentication context per 3GPP TS
1703      *                    31.102 (Section 7.1.2)
1704      * @param data authentication challenge data
1705      * @param aid used to determine which application/slot to send the auth command to. See ETSI
1706      *            102.221 8.1 and 101.220 4
1707      * @param response a callback message with the String response in the obj field
1708      */
requestIccSimAuthentication(int authContext, String data, String aid, Message response)1709     public void requestIccSimAuthentication(int authContext, String data, String aid, Message response);
1710 
1711     /**
1712      * Get the current Voice Radio Technology.
1713      *
1714      * AsyncResult.result is an int array with the first value
1715      * being one of the ServiceState.RIL_RADIO_TECHNOLOGY_xxx values.
1716      *
1717      * @param result is sent back to handler and result.obj is a AsyncResult
1718      */
getVoiceRadioTechnology(Message result)1719     void getVoiceRadioTechnology(Message result);
1720 
1721     /**
1722      * Return the current set of CellInfo records
1723      *
1724      * AsyncResult.result is a of Collection<CellInfo>
1725      *
1726      * @param result is sent back to handler and result.obj is a AsyncResult
1727      */
getCellInfoList(Message result)1728     void getCellInfoList(Message result);
1729 
1730     /**
1731      * Sets the minimum time in milli-seconds between when RIL_UNSOL_CELL_INFO_LIST
1732      * should be invoked.
1733      *
1734      * The default, 0, means invoke RIL_UNSOL_CELL_INFO_LIST when any of the reported
1735      * information changes. Setting the value to INT_MAX(0x7fffffff) means never issue
1736      * A RIL_UNSOL_CELL_INFO_LIST.
1737      *
1738      *
1739 
1740      * @param rateInMillis is sent back to handler and result.obj is a AsyncResult
1741      * @param response.obj is AsyncResult ar when sent to associated handler
1742      *                        ar.exception carries exception on failure or null on success
1743      *                        otherwise the error.
1744      */
setCellInfoListRate(int rateInMillis, Message response)1745     void setCellInfoListRate(int rateInMillis, Message response);
1746 
1747     /**
1748      * Fires when RIL_UNSOL_CELL_INFO_LIST is received from the RIL.
1749      */
registerForCellInfoList(Handler h, int what, Object obj)1750     void registerForCellInfoList(Handler h, int what, Object obj);
unregisterForCellInfoList(Handler h)1751     void unregisterForCellInfoList(Handler h);
1752 
1753     /**
1754      * Set Initial Attach Apn
1755      *
1756      * @param apn
1757      *            the APN to connect to if radio technology is GSM/UMTS.
1758      * @param protocol
1759      *            one of the PDP_type values in TS 27.007 section 10.1.1.
1760      *            For example, "IP", "IPV6", "IPV4V6", or "PPP".
1761      * @param authType
1762      *            authentication protocol used for this PDP context
1763      *            (None: 0, PAP: 1, CHAP: 2, PAP&CHAP: 3)
1764      * @param username
1765      *            the username for APN, or NULL
1766      * @param password
1767      *            the password for APN, or NULL
1768      * @param result
1769      *            callback message contains the information of SUCCESS/FAILURE
1770      */
setInitialAttachApn(String apn, String protocol, int authType, String username, String password, Message result)1771     public void setInitialAttachApn(String apn, String protocol, int authType, String username,
1772             String password, Message result);
1773 
1774     /**
1775      * Set data profiles in modem
1776      *
1777      * @param dps
1778      *            Array of the data profiles set to modem
1779      * @param result
1780      *            callback message contains the information of SUCCESS/FAILURE
1781      */
setDataProfile(DataProfile[] dps, Message result)1782     public void setDataProfile(DataProfile[] dps, Message result);
1783 
1784     /**
1785      * Notifiy that we are testing an emergency call
1786      */
testingEmergencyCall()1787     public void testingEmergencyCall();
1788 
1789     /**
1790      * Open a logical channel to the SIM.
1791      *
1792      * Input parameters equivalent to TS 27.007 AT+CCHO command.
1793      *
1794      * @param AID Application id. See ETSI 102.221 and 101.220.
1795      * @param response Callback message. response.obj will be an int [1] with
1796      *            element [0] set to the id of the logical channel.
1797      */
iccOpenLogicalChannel(String AID, Message response)1798     public void iccOpenLogicalChannel(String AID, Message response);
1799 
1800     /**
1801      * Close a previously opened logical channel to the SIM.
1802      *
1803      * Input parameters equivalent to TS 27.007 AT+CCHC command.
1804      *
1805      * @param channel Channel id. Id of the channel to be closed.
1806      * @param response Callback message.
1807      */
iccCloseLogicalChannel(int channel, Message response)1808     public void iccCloseLogicalChannel(int channel, Message response);
1809 
1810     /**
1811      * Exchange APDUs with the SIM on a logical channel.
1812      *
1813      * Input parameters equivalent to TS 27.007 AT+CGLA command.
1814      *
1815      * @param channel Channel id of the channel to use for communication. Has to
1816      *            be greater than zero.
1817      * @param cla Class of the APDU command.
1818      * @param instruction Instruction of the APDU command.
1819      * @param p1 P1 value of the APDU command.
1820      * @param p2 P2 value of the APDU command.
1821      * @param p3 P3 value of the APDU command. If p3 is negative a 4 byte APDU
1822      *            is sent to the SIM.
1823      * @param data Data to be sent with the APDU.
1824      * @param response Callback message. response.obj.userObj will be
1825      *            an IccIoResult on success.
1826      */
iccTransmitApduLogicalChannel(int channel, int cla, int instruction, int p1, int p2, int p3, String data, Message response)1827     public void iccTransmitApduLogicalChannel(int channel, int cla, int instruction,
1828             int p1, int p2, int p3, String data, Message response);
1829 
1830     /**
1831      * Exchange APDUs with the SIM on a basic channel.
1832      *
1833      * Input parameters equivalent to TS 27.007 AT+CSIM command.
1834      *
1835      * @param cla Class of the APDU command.
1836      * @param instruction Instruction of the APDU command.
1837      * @param p1 P1 value of the APDU command.
1838      * @param p2 P2 value of the APDU command.
1839      * @param p3 P3 value of the APDU command. If p3 is negative a 4 byte APDU
1840      *            is sent to the SIM.
1841      * @param data Data to be sent with the APDU.
1842      * @param response Callback message. response.obj.userObj will be
1843      *            an IccIoResult on success.
1844      */
iccTransmitApduBasicChannel(int cla, int instruction, int p1, int p2, int p3, String data, Message response)1845     public void iccTransmitApduBasicChannel(int cla, int instruction, int p1, int p2,
1846             int p3, String data, Message response);
1847 
1848     /**
1849      * Read one of the NV items defined in {@link RadioNVItems} / {@code ril_nv_items.h}.
1850      * Used for device configuration by some CDMA operators.
1851      *
1852      * @param itemID the ID of the item to read
1853      * @param response callback message with the String response in the obj field
1854      */
nvReadItem(int itemID, Message response)1855     void nvReadItem(int itemID, Message response);
1856 
1857     /**
1858      * Write one of the NV items defined in {@link RadioNVItems} / {@code ril_nv_items.h}.
1859      * Used for device configuration by some CDMA operators.
1860      *
1861      * @param itemID the ID of the item to read
1862      * @param itemValue the value to write, as a String
1863      * @param response Callback message.
1864      */
nvWriteItem(int itemID, String itemValue, Message response)1865     void nvWriteItem(int itemID, String itemValue, Message response);
1866 
1867     /**
1868      * Update the CDMA Preferred Roaming List (PRL) in the radio NV storage.
1869      * Used for device configuration by some CDMA operators.
1870      *
1871      * @param preferredRoamingList byte array containing the new PRL
1872      * @param response Callback message.
1873      */
nvWriteCdmaPrl(byte[] preferredRoamingList, Message response)1874     void nvWriteCdmaPrl(byte[] preferredRoamingList, Message response);
1875 
1876     /**
1877      * Perform the specified type of NV config reset. The radio will be taken offline
1878      * and the device must be rebooted after erasing the NV. Used for device
1879      * configuration by some CDMA operators.
1880      *
1881      * @param resetType reset type: 1: reload NV reset, 2: erase NV reset, 3: factory NV reset
1882      * @param response Callback message.
1883      */
nvResetConfig(int resetType, Message response)1884     void nvResetConfig(int resetType, Message response);
1885 
1886     /**
1887      *  returned message
1888      *  retMsg.obj = AsyncResult ar
1889      *  ar.exception carries exception on failure
1890      *  ar.userObject contains the orignal value of result.obj
1891      *  ar.result contains a List of HardwareConfig
1892      */
getHardwareConfig(Message result)1893     void getHardwareConfig (Message result);
1894 
1895     /**
1896      * @return version of the ril.
1897      */
getRilVersion()1898     int getRilVersion();
1899 
1900    /**
1901      * Sets user selected subscription at Modem.
1902      *
1903      * @param slotId
1904      *          Slot.
1905      * @param appIndex
1906      *          Application index in the card.
1907      * @param subId
1908      *          Indicates subscription 0 or subscription 1.
1909      * @param subStatus
1910      *          Activation status, 1 = activate and 0 = deactivate.
1911      * @param result
1912      *          Callback message contains the information of SUCCESS/FAILURE.
1913      */
1914     // FIXME Update the doc and consider modifying the request to make more generic.
setUiccSubscription(int slotId, int appIndex, int subId, int subStatus, Message result)1915     public void setUiccSubscription(int slotId, int appIndex, int subId, int subStatus,
1916             Message result);
1917 
1918     /**
1919      * Tells the modem if data is allowed or not.
1920      *
1921      * @param allowed
1922      *          true = allowed, false = not alowed
1923      * @param result
1924      *          Callback message contains the information of SUCCESS/FAILURE.
1925      */
1926     // FIXME We may need to pass AID and slotid also
setDataAllowed(boolean allowed, Message result)1927     public void setDataAllowed(boolean allowed, Message result);
1928 
1929     /**
1930      * Inform RIL that the device is shutting down
1931      *
1932      * @param result Callback message contains the information of SUCCESS/FAILURE
1933      */
requestShutdown(Message result)1934     public void requestShutdown(Message result);
1935 
1936     /**
1937      *  Set phone radio type and access technology.
1938      *
1939      *  @param rc the phone radio capability defined in
1940      *         RadioCapability. It's a input object used to transfer parameter to logic modem
1941      *
1942      *  @param result Callback message.
1943      */
setRadioCapability(RadioCapability rc, Message result)1944     public void setRadioCapability(RadioCapability rc, Message result);
1945 
1946     /**
1947      *  Get phone radio capability
1948      *
1949      *  @param result Callback message.
1950      */
getRadioCapability(Message result)1951     public void getRadioCapability(Message result);
1952 
1953     /**
1954      * Registers the handler when phone radio capability is changed.
1955      *
1956      * @param h Handler for notification message.
1957      * @param what User-defined message code.
1958      * @param obj User object.
1959      */
registerForRadioCapabilityChanged(Handler h, int what, Object obj)1960     public void registerForRadioCapabilityChanged(Handler h, int what, Object obj);
1961 
1962     /**
1963      * Unregister for notifications when phone radio capability is changed.
1964      *
1965      * @param h Handler to be removed from the registrant list.
1966      */
unregisterForRadioCapabilityChanged(Handler h)1967     public void unregisterForRadioCapabilityChanged(Handler h);
1968 
1969     /**
1970      * Start LCE (Link Capacity Estimation) service with a desired reporting interval.
1971      *
1972      * @param reportIntervalMs
1973      *        LCE info reporting interval (ms).
1974      *
1975      * @param result Callback message contains the current LCE status.
1976      * {byte status, int actualIntervalMs}
1977      */
startLceService(int reportIntervalMs, boolean pullMode, Message result)1978     public void startLceService(int reportIntervalMs, boolean pullMode, Message result);
1979 
1980     /**
1981      * Stop LCE service.
1982      *
1983      * @param result Callback message contains the current LCE status:
1984      * {byte status, int actualIntervalMs}
1985      *
1986      */
stopLceService(Message result)1987     public void stopLceService(Message result);
1988 
1989     /**
1990      * Pull LCE service for capacity data.
1991      *
1992      * @param result Callback message contains the capacity info:
1993      * {int capacityKbps, byte confidenceLevel, byte lceSuspendedTemporarily}
1994      */
pullLceData(Message result)1995     public void pullLceData(Message result);
1996 
1997     /**
1998      * Register a LCE info listener.
1999      *
2000      * @param h Handler for notification message.
2001      * @param what User-defined message code.
2002      * @param obj User object.
2003      */
registerForLceInfo(Handler h, int what, Object obj)2004     void registerForLceInfo(Handler h, int what, Object obj);
2005 
2006     /**
2007      * Unregister the LCE Info listener.
2008      *
2009      * @param h handle to be removed.
2010      */
unregisterForLceInfo(Handler h)2011     void unregisterForLceInfo(Handler h);
2012 
2013     /**
2014      *
2015      * Get modem activity info and stats
2016      *
2017      * @param result Callback message contains the modem activity information
2018      */
getModemActivityInfo(Message result)2019     public void getModemActivityInfo(Message result);
2020 }
2021