• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2006 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.internal.telephony;
18 
19 import com.android.internal.telephony.gsm.SmsBroadcastConfigInfo;
20 
21 import android.os.Message;
22 import android.os.Handler;
23 
24 /**
25  * {@hide}
26  */
27 public interface CommandsInterface {
28     enum RadioState {
29         RADIO_OFF(0),         /* Radio explictly powered off (eg CFUN=0) */
30         RADIO_UNAVAILABLE(0), /* Radio unavailable (eg, resetting or not booted) */
31         SIM_NOT_READY(1),     /* Radio is on, but the SIM interface is not ready */
32         SIM_LOCKED_OR_ABSENT(1),  /* SIM PIN locked, PUK required, network
33                                      personalization, or SIM absent */
34         SIM_READY(1),         /* Radio is on and SIM interface is available */
35         RUIM_NOT_READY(2),    /* Radio is on, but the RUIM interface is not ready */
36         RUIM_READY(2),        /* Radio is on and the RUIM interface is available */
37         RUIM_LOCKED_OR_ABSENT(2), /* RUIM PIN locked, PUK required, network
38                                      personalization locked, or RUIM absent */
39         NV_NOT_READY(3),      /* Radio is on, but the NV interface is not available */
40         NV_READY(3);          /* Radio is on and the NV interface is available */
41 
isOn()42         public boolean isOn() /* and available...*/ {
43             return this == SIM_NOT_READY
44                     || this == SIM_LOCKED_OR_ABSENT
45                     || this == SIM_READY
46                     || this == RUIM_NOT_READY
47                     || this == RUIM_READY
48                     || this == RUIM_LOCKED_OR_ABSENT
49                     || this == NV_NOT_READY
50                     || this == NV_READY;
51         }
52         private int stateType;
RadioState(int type)53         private RadioState (int type) {
54             stateType = type;
55         }
56 
getType()57         public int getType() {
58             return stateType;
59         }
60 
isAvailable()61         public boolean isAvailable() {
62             return this != RADIO_UNAVAILABLE;
63         }
64 
isSIMReady()65         public boolean isSIMReady() {
66             return this == SIM_READY;
67         }
68 
isRUIMReady()69         public boolean isRUIMReady() {
70             return this == RUIM_READY;
71         }
72 
isNVReady()73         public boolean isNVReady() {
74             return this == NV_READY;
75         }
76 
isGsm()77         public boolean isGsm() {
78             if (BaseCommands.getLteOnCdmaModeStatic() == Phone.LTE_ON_CDMA_TRUE) {
79                 return false;
80             } else {
81                 return this == SIM_NOT_READY
82                         || this == SIM_LOCKED_OR_ABSENT
83                         || this == SIM_READY;
84             }
85         }
86 
isCdma()87         public boolean isCdma() {
88             if (BaseCommands.getLteOnCdmaModeStatic() == Phone.LTE_ON_CDMA_TRUE) {
89                 return true;
90             } else {
91                 return this ==  RUIM_NOT_READY
92                         || this == RUIM_READY
93                         || this == RUIM_LOCKED_OR_ABSENT
94                         || this == NV_NOT_READY
95                         || this == NV_READY;
96             }
97         }
98     }
99 
100     //***** Constants
101 
102     // Used as parameter to dial() and setCLIR() below
103     static final int CLIR_DEFAULT = 0;      // "use subscription default value"
104     static final int CLIR_INVOCATION = 1;   // (restrict CLI presentation)
105     static final int CLIR_SUPPRESSION = 2;  // (allow CLI presentation)
106 
107 
108     // Used as parameters for call forward methods below
109     static final int CF_ACTION_DISABLE          = 0;
110     static final int CF_ACTION_ENABLE           = 1;
111 //  static final int CF_ACTION_UNUSED           = 2;
112     static final int CF_ACTION_REGISTRATION     = 3;
113     static final int CF_ACTION_ERASURE          = 4;
114 
115     static final int CF_REASON_UNCONDITIONAL    = 0;
116     static final int CF_REASON_BUSY             = 1;
117     static final int CF_REASON_NO_REPLY         = 2;
118     static final int CF_REASON_NOT_REACHABLE    = 3;
119     static final int CF_REASON_ALL              = 4;
120     static final int CF_REASON_ALL_CONDITIONAL  = 5;
121 
122     // Used for call barring methods below
123     static final String CB_FACILITY_BAOC         = "AO";
124     static final String CB_FACILITY_BAOIC        = "OI";
125     static final String CB_FACILITY_BAOICxH      = "OX";
126     static final String CB_FACILITY_BAIC         = "AI";
127     static final String CB_FACILITY_BAICr        = "IR";
128     static final String CB_FACILITY_BA_ALL       = "AB";
129     static final String CB_FACILITY_BA_MO        = "AG";
130     static final String CB_FACILITY_BA_MT        = "AC";
131     static final String CB_FACILITY_BA_SIM       = "SC";
132     static final String CB_FACILITY_BA_FD        = "FD";
133 
134 
135     // Used for various supp services apis
136     // See 27.007 +CCFC or +CLCK
137     static final int SERVICE_CLASS_NONE     = 0; // no user input
138     static final int SERVICE_CLASS_VOICE    = (1 << 0);
139     static final int SERVICE_CLASS_DATA     = (1 << 1); //synonym for 16+32+64+128
140     static final int SERVICE_CLASS_FAX      = (1 << 2);
141     static final int SERVICE_CLASS_SMS      = (1 << 3);
142     static final int SERVICE_CLASS_DATA_SYNC = (1 << 4);
143     static final int SERVICE_CLASS_DATA_ASYNC = (1 << 5);
144     static final int SERVICE_CLASS_PACKET   = (1 << 6);
145     static final int SERVICE_CLASS_PAD      = (1 << 7);
146     static final int SERVICE_CLASS_MAX      = (1 << 7); // Max SERVICE_CLASS value
147 
148     // Numeric representation of string values returned
149     // by messages sent to setOnUSSD handler
150     static final int USSD_MODE_NOTIFY       = 0;
151     static final int USSD_MODE_REQUEST      = 1;
152 
153     // SIM Refresh results, passed up from RIL.
154     static final int SIM_REFRESH_FILE_UPDATED   = 0;  // Single file updated
155     static final int SIM_REFRESH_INIT           = 1;  // SIM initialized; reload all
156     static final int SIM_REFRESH_RESET          = 2;  // SIM reset; may be locked
157 
158     // GSM SMS fail cause for acknowledgeLastIncomingSMS. From TS 23.040, 9.2.3.22.
159     static final int GSM_SMS_FAIL_CAUSE_MEMORY_CAPACITY_EXCEEDED    = 0xD3;
160     static final int GSM_SMS_FAIL_CAUSE_UNSPECIFIED_ERROR           = 0xFF;
161 
162     // CDMA SMS fail cause for acknowledgeLastIncomingCdmaSms.  From TS N.S0005, 6.5.2.125.
163     static final int CDMA_SMS_FAIL_CAUSE_INVALID_TELESERVICE_ID     = 4;
164     static final int CDMA_SMS_FAIL_CAUSE_RESOURCE_SHORTAGE          = 35;
165     static final int CDMA_SMS_FAIL_CAUSE_OTHER_TERMINAL_PROBLEM     = 39;
166     static final int CDMA_SMS_FAIL_CAUSE_ENCODING_PROBLEM           = 96;
167 
168     //***** Methods
169 
getRadioState()170     RadioState getRadioState();
getSimState()171     RadioState getSimState();
getRuimState()172     RadioState getRuimState();
getNvState()173     RadioState getNvState();
174 
175     /**
176      * Fires on any RadioState transition
177      * Always fires immediately as well
178      *
179      * do not attempt to calculate transitions by storing getRadioState() values
180      * on previous invocations of this notification. Instead, use the other
181      * registration methods
182      */
registerForRadioStateChanged(Handler h, int what, Object obj)183     void registerForRadioStateChanged(Handler h, int what, Object obj);
unregisterForRadioStateChanged(Handler h)184     void unregisterForRadioStateChanged(Handler h);
185 
186     /**
187      * Fires on any transition into RadioState.isOn()
188      * Fires immediately if currently in that state
189      * In general, actions should be idempotent. State may change
190      * before event is received.
191      */
registerForOn(Handler h, int what, Object obj)192     void registerForOn(Handler h, int what, Object obj);
unregisterForOn(Handler h)193     void unregisterForOn(Handler h);
194 
195     /**
196      * Fires on any transition out of RadioState.isAvailable()
197      * Fires immediately if currently in that state
198      * In general, actions should be idempotent. State may change
199      * before event is received.
200      */
registerForAvailable(Handler h, int what, Object obj)201     void registerForAvailable(Handler h, int what, Object obj);
unregisterForAvailable(Handler h)202     void unregisterForAvailable(Handler h);
203 
204     /**
205      * Fires on any transition into !RadioState.isAvailable()
206      * Fires immediately if currently in that state
207      * In general, actions should be idempotent. State may change
208      * before event is received.
209      */
registerForNotAvailable(Handler h, int what, Object obj)210     void registerForNotAvailable(Handler h, int what, Object obj);
unregisterForNotAvailable(Handler h)211     void unregisterForNotAvailable(Handler h);
212 
213     /**
214      * Fires on any transition into RADIO_OFF or !RadioState.isAvailable()
215      * Fires immediately if currently in that state
216      * In general, actions should be idempotent. State may change
217      * before event is received.
218      */
registerForOffOrNotAvailable(Handler h, int what, Object obj)219     void registerForOffOrNotAvailable(Handler h, int what, Object obj);
unregisterForOffOrNotAvailable(Handler h)220     void unregisterForOffOrNotAvailable(Handler h);
221 
222     /**
223      * Fires on any transition into SIM_READY
224      * Fires immediately if if currently in that state
225      * In general, actions should be idempotent. State may change
226      * before event is received.
227      */
registerForSIMReady(Handler h, int what, Object obj)228     void registerForSIMReady(Handler h, int what, Object obj);
unregisterForSIMReady(Handler h)229     void unregisterForSIMReady(Handler h);
230 
231     /** Any transition into SIM_LOCKED_OR_ABSENT */
registerForSIMLockedOrAbsent(Handler h, int what, Object obj)232     void registerForSIMLockedOrAbsent(Handler h, int what, Object obj);
unregisterForSIMLockedOrAbsent(Handler h)233     void unregisterForSIMLockedOrAbsent(Handler h);
234 
registerForIccStatusChanged(Handler h, int what, Object obj)235     void registerForIccStatusChanged(Handler h, int what, Object obj);
unregisterForIccStatusChanged(Handler h)236     void unregisterForIccStatusChanged(Handler h);
237 
registerForCallStateChanged(Handler h, int what, Object obj)238     void registerForCallStateChanged(Handler h, int what, Object obj);
unregisterForCallStateChanged(Handler h)239     void unregisterForCallStateChanged(Handler h);
registerForVoiceNetworkStateChanged(Handler h, int what, Object obj)240     void registerForVoiceNetworkStateChanged(Handler h, int what, Object obj);
unregisterForVoiceNetworkStateChanged(Handler h)241     void unregisterForVoiceNetworkStateChanged(Handler h);
registerForDataNetworkStateChanged(Handler h, int what, Object obj)242     void registerForDataNetworkStateChanged(Handler h, int what, Object obj);
unregisterForDataNetworkStateChanged(Handler h)243     void unregisterForDataNetworkStateChanged(Handler h);
244 
registerForRadioTechnologyChanged(Handler h, int what, Object obj)245     void registerForRadioTechnologyChanged(Handler h, int what, Object obj);
unregisterForRadioTechnologyChanged(Handler h)246     void unregisterForRadioTechnologyChanged(Handler h);
registerForNVReady(Handler h, int what, Object obj)247     void registerForNVReady(Handler h, int what, Object obj);
unregisterForNVReady(Handler h)248     void unregisterForNVReady(Handler h);
registerForRUIMLockedOrAbsent(Handler h, int what, Object obj)249     void registerForRUIMLockedOrAbsent(Handler h, int what, Object obj);
unregisterForRUIMLockedOrAbsent(Handler h)250     void unregisterForRUIMLockedOrAbsent(Handler h);
251 
252     /** InCall voice privacy notifications */
registerForInCallVoicePrivacyOn(Handler h, int what, Object obj)253     void registerForInCallVoicePrivacyOn(Handler h, int what, Object obj);
unregisterForInCallVoicePrivacyOn(Handler h)254     void unregisterForInCallVoicePrivacyOn(Handler h);
registerForInCallVoicePrivacyOff(Handler h, int what, Object obj)255     void registerForInCallVoicePrivacyOff(Handler h, int what, Object obj);
unregisterForInCallVoicePrivacyOff(Handler h)256     void unregisterForInCallVoicePrivacyOff(Handler h);
257 
258     /**
259      * Fires on any transition into RUIM_READY
260      * Fires immediately if if currently in that state
261      * In general, actions should be idempotent. State may change
262      * before event is received.
263      */
registerForRUIMReady(Handler h, int what, Object obj)264     void registerForRUIMReady(Handler h, int what, Object obj);
unregisterForRUIMReady(Handler h)265     void unregisterForRUIMReady(Handler h);
266 
267     /**
268      * unlike the register* methods, there's only one new 3GPP format SMS handler.
269      * if you need to unregister, you should also tell the radio to stop
270      * sending SMS's to you (via AT+CNMI)
271      *
272      * AsyncResult.result is a String containing the SMS PDU
273      */
setOnNewGsmSms(Handler h, int what, Object obj)274     void setOnNewGsmSms(Handler h, int what, Object obj);
unSetOnNewGsmSms(Handler h)275     void unSetOnNewGsmSms(Handler h);
276 
277     /**
278      * unlike the register* methods, there's only one new 3GPP2 format SMS handler.
279      * if you need to unregister, you should also tell the radio to stop
280      * sending SMS's to you (via AT+CNMI)
281      *
282      * AsyncResult.result is a String containing the SMS PDU
283      */
setOnNewCdmaSms(Handler h, int what, Object obj)284     void setOnNewCdmaSms(Handler h, int what, Object obj);
unSetOnNewCdmaSms(Handler h)285     void unSetOnNewCdmaSms(Handler h);
286 
287     /**
288      * Set the handler for SMS Cell Broadcast messages.
289      *
290      * AsyncResult.result is a byte array containing the SMS-CB PDU
291      */
setOnNewGsmBroadcastSms(Handler h, int what, Object obj)292     void setOnNewGsmBroadcastSms(Handler h, int what, Object obj);
unSetOnNewGsmBroadcastSms(Handler h)293     void unSetOnNewGsmBroadcastSms(Handler h);
294 
295    /**
296      * Register for NEW_SMS_ON_SIM unsolicited message
297      *
298      * AsyncResult.result is an int array containing the index of new SMS
299      */
setOnSmsOnSim(Handler h, int what, Object obj)300     void setOnSmsOnSim(Handler h, int what, Object obj);
unSetOnSmsOnSim(Handler h)301     void unSetOnSmsOnSim(Handler h);
302 
303     /**
304      * Register for NEW_SMS_STATUS_REPORT unsolicited message
305      *
306      * AsyncResult.result is a String containing the status report PDU
307      */
setOnSmsStatus(Handler h, int what, Object obj)308     void setOnSmsStatus(Handler h, int what, Object obj);
unSetOnSmsStatus(Handler h)309     void unSetOnSmsStatus(Handler h);
310 
311     /**
312      * unlike the register* methods, there's only one NITZ time handler
313      *
314      * AsyncResult.result is an Object[]
315      * ((Object[])AsyncResult.result)[0] is a String containing the NITZ time string
316      * ((Object[])AsyncResult.result)[1] is a Long containing the milliseconds since boot as
317      *                                   returned by elapsedRealtime() when this NITZ time
318      *                                   was posted.
319      *
320      * Please note that the delivery of this message may be delayed several
321      * seconds on system startup
322      */
setOnNITZTime(Handler h, int what, Object obj)323     void setOnNITZTime(Handler h, int what, Object obj);
unSetOnNITZTime(Handler h)324     void unSetOnNITZTime(Handler h);
325 
326     /**
327      * unlike the register* methods, there's only one USSD notify handler
328      *
329      * Represents the arrival of a USSD "notify" message, which may
330      * or may not have been triggered by a previous USSD send
331      *
332      * AsyncResult.result is a String[]
333      * ((String[])(AsyncResult.result))[0] contains status code
334      *      "0"   USSD-Notify -- text in ((const char **)data)[1]
335      *      "1"   USSD-Request -- text in ((const char **)data)[1]
336      *      "2"   Session terminated by network
337      *      "3"   other local client (eg, SIM Toolkit) has responded
338      *      "4"   Operation not supported
339      *      "5"   Network timeout
340      *
341      * ((String[])(AsyncResult.result))[1] contains the USSD message
342      * The numeric representations of these are in USSD_MODE_*
343      */
344 
setOnUSSD(Handler h, int what, Object obj)345     void setOnUSSD(Handler h, int what, Object obj);
unSetOnUSSD(Handler h)346     void unSetOnUSSD(Handler h);
347 
348     /**
349      * unlike the register* methods, there's only one signal strength handler
350      * AsyncResult.result is an int[2]
351      * response.obj.result[0] is received signal strength (0-31, 99)
352      * response.obj.result[1] is  bit error rate (0-7, 99)
353      * as defined in TS 27.007 8.5
354      */
355 
setOnSignalStrengthUpdate(Handler h, int what, Object obj)356     void setOnSignalStrengthUpdate(Handler h, int what, Object obj);
unSetOnSignalStrengthUpdate(Handler h)357     void unSetOnSignalStrengthUpdate(Handler h);
358 
359     /**
360      * Sets the handler for SIM/RUIM SMS storage full unsolicited message.
361      * Unlike the register* methods, there's only one notification handler
362      *
363      * @param h Handler for notification message.
364      * @param what User-defined message code.
365      * @param obj User object.
366      */
setOnIccSmsFull(Handler h, int what, Object obj)367     void setOnIccSmsFull(Handler h, int what, Object obj);
unSetOnIccSmsFull(Handler h)368     void unSetOnIccSmsFull(Handler h);
369 
370     /**
371      * Sets the handler for SIM Refresh notifications.
372      *
373      * @param h Handler for notification message.
374      * @param what User-defined message code.
375      * @param obj User object.
376      */
registerForIccRefresh(Handler h, int what, Object obj)377     void registerForIccRefresh(Handler h, int what, Object obj);
unregisterForIccRefresh(Handler h)378     void unregisterForIccRefresh(Handler h);
379 
setOnIccRefresh(Handler h, int what, Object obj)380     void setOnIccRefresh(Handler h, int what, Object obj);
unsetOnIccRefresh(Handler h)381     void unsetOnIccRefresh(Handler h);
382 
383     /**
384      * Sets the handler for RING notifications.
385      * Unlike the register* methods, there's only one notification handler
386      *
387      * @param h Handler for notification message.
388      * @param what User-defined message code.
389      * @param obj User object.
390      */
setOnCallRing(Handler h, int what, Object obj)391     void setOnCallRing(Handler h, int what, Object obj);
unSetOnCallRing(Handler h)392     void unSetOnCallRing(Handler h);
393 
394     /**
395      * Sets the handler for RESTRICTED_STATE changed notification,
396      * eg, for Domain Specific Access Control
397      * unlike the register* methods, there's only one signal strength handler
398      *
399      * AsyncResult.result is an int[1]
400      * response.obj.result[0] is a bitmask of RIL_RESTRICTED_STATE_* values
401      */
402 
setOnRestrictedStateChanged(Handler h, int what, Object obj)403     void setOnRestrictedStateChanged(Handler h, int what, Object obj);
unSetOnRestrictedStateChanged(Handler h)404     void unSetOnRestrictedStateChanged(Handler h);
405 
406     /**
407      * Sets the handler for Supplementary Service Notifications.
408      * Unlike the register* methods, there's only one notification handler
409      *
410      * @param h Handler for notification message.
411      * @param what User-defined message code.
412      * @param obj User object.
413      */
setOnSuppServiceNotification(Handler h, int what, Object obj)414     void setOnSuppServiceNotification(Handler h, int what, Object obj);
unSetOnSuppServiceNotification(Handler h)415     void unSetOnSuppServiceNotification(Handler h);
416 
417     /**
418      * Sets the handler for Session End Notifications for CAT.
419      * Unlike the register* methods, there's only one notification handler
420      *
421      * @param h Handler for notification message.
422      * @param what User-defined message code.
423      * @param obj User object.
424      */
setOnCatSessionEnd(Handler h, int what, Object obj)425     void setOnCatSessionEnd(Handler h, int what, Object obj);
unSetOnCatSessionEnd(Handler h)426     void unSetOnCatSessionEnd(Handler h);
427 
428     /**
429      * Sets the handler for Proactive Commands for CAT.
430      * Unlike the register* methods, there's only one notification handler
431      *
432      * @param h Handler for notification message.
433      * @param what User-defined message code.
434      * @param obj User object.
435      */
setOnCatProactiveCmd(Handler h, int what, Object obj)436     void setOnCatProactiveCmd(Handler h, int what, Object obj);
unSetOnCatProactiveCmd(Handler h)437     void unSetOnCatProactiveCmd(Handler h);
438 
439     /**
440      * Sets the handler for Event Notifications for CAT.
441      * Unlike the register* methods, there's only one notification handler
442      *
443      * @param h Handler for notification message.
444      * @param what User-defined message code.
445      * @param obj User object.
446      */
setOnCatEvent(Handler h, int what, Object obj)447     void setOnCatEvent(Handler h, int what, Object obj);
unSetOnCatEvent(Handler h)448     void unSetOnCatEvent(Handler h);
449 
450     /**
451      * Sets the handler for Call Set Up Notifications for CAT.
452      * Unlike the register* methods, there's only one notification handler
453      *
454      * @param h Handler for notification message.
455      * @param what User-defined message code.
456      * @param obj User object.
457      */
setOnCatCallSetUp(Handler h, int what, Object obj)458     void setOnCatCallSetUp(Handler h, int what, Object obj);
unSetOnCatCallSetUp(Handler h)459     void unSetOnCatCallSetUp(Handler h);
460 
461     /**
462      * Enables/disbables supplementary service related notifications from
463      * the network.
464      *
465      * @param enable true to enable notifications, false to disable.
466      * @param result Message to be posted when command completes.
467      */
setSuppServiceNotifications(boolean enable, Message result)468     void setSuppServiceNotifications(boolean enable, Message result);
469     //void unSetSuppServiceNotifications(Handler h);
470 
471     /**
472      * Sets the handler for Event Notifications for CDMA Display Info.
473      * Unlike the register* methods, there's only one notification handler
474      *
475      * @param h Handler for notification message.
476      * @param what User-defined message code.
477      * @param obj User object.
478      */
registerForDisplayInfo(Handler h, int what, Object obj)479     void registerForDisplayInfo(Handler h, int what, Object obj);
unregisterForDisplayInfo(Handler h)480     void unregisterForDisplayInfo(Handler h);
481 
482     /**
483      * Sets the handler for Event Notifications for CallWaiting Info.
484      * Unlike the register* methods, there's only one notification handler
485      *
486      * @param h Handler for notification message.
487      * @param what User-defined message code.
488      * @param obj User object.
489      */
registerForCallWaitingInfo(Handler h, int what, Object obj)490     void registerForCallWaitingInfo(Handler h, int what, Object obj);
unregisterForCallWaitingInfo(Handler h)491     void unregisterForCallWaitingInfo(Handler h);
492 
493     /**
494      * Sets the handler for Event Notifications for Signal Info.
495      * Unlike the register* methods, there's only one notification handler
496      *
497      * @param h Handler for notification message.
498      * @param what User-defined message code.
499      * @param obj User object.
500      */
registerForSignalInfo(Handler h, int what, Object obj)501     void registerForSignalInfo(Handler h, int what, Object obj);
unregisterForSignalInfo(Handler h)502     void unregisterForSignalInfo(Handler h);
503 
504     /**
505      * Registers the handler for CDMA number information record
506      * Unlike the register* methods, there's only one notification handler
507      *
508      * @param h Handler for notification message.
509      * @param what User-defined message code.
510      * @param obj User object.
511      */
registerForNumberInfo(Handler h, int what, Object obj)512     void registerForNumberInfo(Handler h, int what, Object obj);
unregisterForNumberInfo(Handler h)513     void unregisterForNumberInfo(Handler h);
514 
515     /**
516      * Registers the handler for CDMA redirected number Information record
517      * Unlike the register* methods, there's only one notification handler
518      *
519      * @param h Handler for notification message.
520      * @param what User-defined message code.
521      * @param obj User object.
522      */
registerForRedirectedNumberInfo(Handler h, int what, Object obj)523     void registerForRedirectedNumberInfo(Handler h, int what, Object obj);
unregisterForRedirectedNumberInfo(Handler h)524     void unregisterForRedirectedNumberInfo(Handler h);
525 
526     /**
527      * Registers the handler for CDMA line control information record
528      * Unlike the register* methods, there's only one notification handler
529      *
530      * @param h Handler for notification message.
531      * @param what User-defined message code.
532      * @param obj User object.
533      */
registerForLineControlInfo(Handler h, int what, Object obj)534     void registerForLineControlInfo(Handler h, int what, Object obj);
unregisterForLineControlInfo(Handler h)535     void unregisterForLineControlInfo(Handler h);
536 
537     /**
538      * Registers the handler for CDMA T53 CLIR information record
539      * Unlike the register* methods, there's only one notification handler
540      *
541      * @param h Handler for notification message.
542      * @param what User-defined message code.
543      * @param obj User object.
544      */
registerFoT53ClirlInfo(Handler h, int what, Object obj)545     void registerFoT53ClirlInfo(Handler h, int what, Object obj);
unregisterForT53ClirInfo(Handler h)546     void unregisterForT53ClirInfo(Handler h);
547 
548     /**
549      * Registers the handler for CDMA T53 audio control information record
550      * Unlike the register* methods, there's only one notification handler
551      *
552      * @param h Handler for notification message.
553      * @param what User-defined message code.
554      * @param obj User object.
555      */
registerForT53AudioControlInfo(Handler h, int what, Object obj)556     void registerForT53AudioControlInfo(Handler h, int what, Object obj);
unregisterForT53AudioControlInfo(Handler h)557     void unregisterForT53AudioControlInfo(Handler h);
558 
559     /**
560      * Fires on if Modem enters Emergency Callback mode
561      */
setEmergencyCallbackMode(Handler h, int what, Object obj)562     void setEmergencyCallbackMode(Handler h, int what, Object obj);
563 
564      /**
565       * Fires on any CDMA OTA provision status change
566       */
registerForCdmaOtaProvision(Handler h,int what, Object obj)567      void registerForCdmaOtaProvision(Handler h,int what, Object obj);
unregisterForCdmaOtaProvision(Handler h)568      void unregisterForCdmaOtaProvision(Handler h);
569 
570      /**
571       * Registers the handler when out-band ringback tone is needed.<p>
572       *
573       *  Messages received from this:
574       *  Message.obj will be an AsyncResult
575       *  AsyncResult.userObj = obj
576       *  AsyncResult.result = boolean. <p>
577       */
registerForRingbackTone(Handler h, int what, Object obj)578      void registerForRingbackTone(Handler h, int what, Object obj);
unregisterForRingbackTone(Handler h)579      void unregisterForRingbackTone(Handler h);
580 
581      /**
582       * Registers the handler when mute/unmute need to be resent to get
583       * uplink audio during a call.<p>
584       *
585       * @param h Handler for notification message.
586       * @param what User-defined message code.
587       * @param obj User object.
588       *
589       */
registerForResendIncallMute(Handler h, int what, Object obj)590      void registerForResendIncallMute(Handler h, int what, Object obj);
unregisterForResendIncallMute(Handler h)591      void unregisterForResendIncallMute(Handler h);
592 
593      /**
594       * Registers the handler for when Cdma subscription changed events
595       *
596       * @param h Handler for notification message.
597       * @param what User-defined message code.
598       * @param obj User object.
599       *
600       */
registerForCdmaSubscriptionChanged(Handler h, int what, Object obj)601      void registerForCdmaSubscriptionChanged(Handler h, int what, Object obj);
unregisterForCdmaSubscriptionChanged(Handler h)602      void unregisterForCdmaSubscriptionChanged(Handler h);
603 
604      /**
605       * Registers the handler for when Cdma prl changed events
606       *
607       * @param h Handler for notification message.
608       * @param what User-defined message code.
609       * @param obj User object.
610       *
611       */
registerForCdmaPrlChanged(Handler h, int what, Object obj)612      void registerForCdmaPrlChanged(Handler h, int what, Object obj);
unregisterForCdmaPrlChanged(Handler h)613      void unregisterForCdmaPrlChanged(Handler h);
614 
615      /**
616       * Registers the handler for when Cdma prl changed events
617       *
618       * @param h Handler for notification message.
619       * @param what User-defined message code.
620       * @param obj User object.
621       *
622       */
registerForExitEmergencyCallbackMode(Handler h, int what, Object obj)623      void registerForExitEmergencyCallbackMode(Handler h, int what, Object obj);
unregisterForExitEmergencyCallbackMode(Handler h)624      void unregisterForExitEmergencyCallbackMode(Handler h);
625 
626      /**
627       * Registers the handler for RIL_UNSOL_RIL_CONNECT events.
628       *
629       * When ril connects or disconnects a message is sent to the registrant
630       * which contains an AsyncResult, ar, in msg.obj. The ar.result is an
631       * Integer which is the version of the ril or -1 if the ril disconnected.
632       *
633       * @param h Handler for notification message.
634       * @param what User-defined message code.
635       * @param obj User object.
636       */
registerForRilConnected(Handler h, int what, Object obj)637      void registerForRilConnected(Handler h, int what, Object obj);
unregisterForRilConnected(Handler h)638      void unregisterForRilConnected(Handler h);
639 
640     /**
641      * Supply the ICC PIN to the ICC card
642      *
643      *  returned message
644      *  retMsg.obj = AsyncResult ar
645      *  ar.exception carries exception on failure
646      *  This exception is CommandException with an error of PASSWORD_INCORRECT
647      *  if the password is incorrect
648      *
649      * ar.exception and ar.result are null on success
650      */
651 
supplyIccPin(String pin, Message result)652     void supplyIccPin(String pin, Message result);
653 
654     /**
655      * Supply the PIN for the app with this AID on the ICC card
656      *
657      *  AID (Application ID), See ETSI 102.221 8.1 and 101.220 4
658      *
659      *  returned message
660      *  retMsg.obj = AsyncResult ar
661      *  ar.exception carries exception on failure
662      *  This exception is CommandException with an error of PASSWORD_INCORRECT
663      *  if the password is incorrect
664      *
665      * ar.exception and ar.result are null on success
666      */
667 
supplyIccPinForApp(String pin, String aid, Message result)668     void supplyIccPinForApp(String pin, String aid, Message result);
669 
670     /**
671      * Supply the ICC PUK and newPin to the ICC card
672      *
673      *  returned message
674      *  retMsg.obj = AsyncResult ar
675      *  ar.exception carries exception on failure
676      *  This exception is CommandException with an error of PASSWORD_INCORRECT
677      *  if the password is incorrect
678      *
679      * ar.exception and ar.result are null on success
680      */
681 
supplyIccPuk(String puk, String newPin, Message result)682     void supplyIccPuk(String puk, String newPin, Message result);
683 
684     /**
685      * Supply the PUK, new pin for the app with this AID on the ICC card
686      *
687      *  AID (Application ID), See ETSI 102.221 8.1 and 101.220 4
688      *
689      *  returned message
690      *  retMsg.obj = AsyncResult ar
691      *  ar.exception carries exception on failure
692      *  This exception is CommandException with an error of PASSWORD_INCORRECT
693      *  if the password is incorrect
694      *
695      * ar.exception and ar.result are null on success
696      */
697 
supplyIccPukForApp(String puk, String newPin, String aid, Message result)698     void supplyIccPukForApp(String puk, String newPin, String aid, Message result);
699 
700     /**
701      * Supply the ICC PIN2 to the ICC card
702      * Only called following operation where ICC_PIN2 was
703      * returned as a a failure from a previous operation
704      *
705      *  returned message
706      *  retMsg.obj = AsyncResult ar
707      *  ar.exception carries exception on failure
708      *  This exception is CommandException with an error of PASSWORD_INCORRECT
709      *  if the password is incorrect
710      *
711      * ar.exception and ar.result are null on success
712      */
713 
supplyIccPin2(String pin2, Message result)714     void supplyIccPin2(String pin2, Message result);
715 
716     /**
717      * Supply the PIN2 for the app with this AID on the ICC card
718      * Only called following operation where ICC_PIN2 was
719      * returned as a a failure from a previous operation
720      *
721      *  AID (Application ID), See ETSI 102.221 8.1 and 101.220 4
722      *
723      *  returned message
724      *  retMsg.obj = AsyncResult ar
725      *  ar.exception carries exception on failure
726      *  This exception is CommandException with an error of PASSWORD_INCORRECT
727      *  if the password is incorrect
728      *
729      * ar.exception and ar.result are null on success
730      */
731 
supplyIccPin2ForApp(String pin2, String aid, Message result)732     void supplyIccPin2ForApp(String pin2, String aid, Message result);
733 
734     /**
735      * Supply the SIM PUK2 to the SIM card
736      * Only called following operation where SIM_PUK2 was
737      * returned as a a failure from a previous operation
738      *
739      *  returned message
740      *  retMsg.obj = AsyncResult ar
741      *  ar.exception carries exception on failure
742      *  This exception is CommandException with an error of PASSWORD_INCORRECT
743      *  if the password is incorrect
744      *
745      * ar.exception and ar.result are null on success
746      */
747 
supplyIccPuk2(String puk2, String newPin2, Message result)748     void supplyIccPuk2(String puk2, String newPin2, Message result);
749 
750     /**
751      * Supply the PUK2, newPin2 for the app with this AID on the ICC card
752      * Only called following operation where SIM_PUK2 was
753      * returned as a a failure from a previous operation
754      *
755      *  AID (Application ID), See ETSI 102.221 8.1 and 101.220 4
756      *
757      *  returned message
758      *  retMsg.obj = AsyncResult ar
759      *  ar.exception carries exception on failure
760      *  This exception is CommandException with an error of PASSWORD_INCORRECT
761      *  if the password is incorrect
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 
changeIccPin(String oldPin, String newPin, Message result)768     void changeIccPin(String oldPin, String newPin, Message result);
changeIccPinForApp(String oldPin, String newPin, String aidPtr, Message result)769     void changeIccPinForApp(String oldPin, String newPin, String aidPtr, Message result);
changeIccPin2(String oldPin2, String newPin2, Message result)770     void changeIccPin2(String oldPin2, String newPin2, Message result);
changeIccPin2ForApp(String oldPin2, String newPin2, String aidPtr, Message result)771     void changeIccPin2ForApp(String oldPin2, String newPin2, String aidPtr, Message result);
772 
changeBarringPassword(String facility, String oldPwd, String newPwd, Message result)773     void changeBarringPassword(String facility, String oldPwd, String newPwd, Message result);
774 
supplyNetworkDepersonalization(String netpin, Message result)775     void supplyNetworkDepersonalization(String netpin, Message result);
776 
777     /**
778      *  returned message
779      *  retMsg.obj = AsyncResult ar
780      *  ar.exception carries exception on failure
781      *  ar.userObject contains the orignal value of result.obj
782      *  ar.result contains a List of DriverCall
783      *      The ar.result List is sorted by DriverCall.index
784      */
getCurrentCalls(Message result)785     void getCurrentCalls (Message result);
786 
787     /**
788      *  returned message
789      *  retMsg.obj = AsyncResult ar
790      *  ar.exception carries exception on failure
791      *  ar.userObject contains the orignal value of result.obj
792      *  ar.result contains a List of DataCallState
793      *  @deprecated Do not use.
794      */
795     @Deprecated
getPDPContextList(Message result)796     void getPDPContextList(Message result);
797 
798     /**
799      *  returned message
800      *  retMsg.obj = AsyncResult ar
801      *  ar.exception carries exception on failure
802      *  ar.userObject contains the orignal value of result.obj
803      *  ar.result contains a List of DataCallState
804      */
getDataCallList(Message result)805     void getDataCallList(Message result);
806 
807     /**
808      *  returned message
809      *  retMsg.obj = AsyncResult ar
810      *  ar.exception carries exception on failure
811      *  ar.userObject contains the orignal value of result.obj
812      *  ar.result is null on success and failure
813      *
814      * CLIR_DEFAULT     == on "use subscription default value"
815      * CLIR_SUPPRESSION == on "CLIR suppression" (allow CLI presentation)
816      * CLIR_INVOCATION  == on "CLIR invocation" (restrict CLI presentation)
817      */
dial(String address, int clirMode, Message result)818     void dial (String address, int clirMode, Message result);
819 
820     /**
821      *  returned message
822      *  retMsg.obj = AsyncResult ar
823      *  ar.exception carries exception on failure
824      *  ar.userObject contains the orignal value of result.obj
825      *  ar.result is null on success and failure
826      *
827      * CLIR_DEFAULT     == on "use subscription default value"
828      * CLIR_SUPPRESSION == on "CLIR suppression" (allow CLI presentation)
829      * CLIR_INVOCATION  == on "CLIR invocation" (restrict CLI presentation)
830      */
dial(String address, int clirMode, UUSInfo uusInfo, Message result)831     void dial(String address, int clirMode, UUSInfo uusInfo, Message result);
832 
833     /**
834      *  returned message
835      *  retMsg.obj = AsyncResult ar
836      *  ar.exception carries exception on failure
837      *  ar.userObject contains the orignal value of result.obj
838      *  ar.result is String containing IMSI on success
839      */
getIMSI(Message result)840     void getIMSI(Message result);
841 
842     /**
843      *  returned message
844      *  retMsg.obj = AsyncResult ar
845      *  ar.exception carries exception on failure
846      *  ar.userObject contains the orignal value of result.obj
847      *  ar.result is String containing IMEI on success
848      */
getIMEI(Message result)849     void getIMEI(Message result);
850 
851     /**
852      *  returned message
853      *  retMsg.obj = AsyncResult ar
854      *  ar.exception carries exception on failure
855      *  ar.userObject contains the orignal value of result.obj
856      *  ar.result is String containing IMEISV on success
857      */
getIMEISV(Message result)858     void getIMEISV(Message result);
859 
860     /**
861      * Hang up one individual connection.
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 null on success and failure
867      *
868      *  3GPP 22.030 6.5.5
869      *  "Releases a specific active call X"
870      */
hangupConnection(int gsmIndex, Message result)871     void hangupConnection (int gsmIndex, Message result);
872 
873     /**
874      * 3GPP 22.030 6.5.5
875      *  "Releases all held calls or sets User Determined User Busy (UDUB)
876      *   for a waiting call."
877      *  ar.exception carries exception on failure
878      *  ar.userObject contains the orignal value of result.obj
879      *  ar.result is null on success and failure
880      */
hangupWaitingOrBackground(Message result)881     void hangupWaitingOrBackground (Message result);
882 
883     /**
884      * 3GPP 22.030 6.5.5
885      * "Releases all active calls (if any exist) and accepts
886      *  the other (held or waiting) call."
887      *
888      *  ar.exception carries exception on failure
889      *  ar.userObject contains the orignal value of result.obj
890      *  ar.result is null on success and failure
891      */
hangupForegroundResumeBackground(Message result)892     void hangupForegroundResumeBackground (Message result);
893 
894     /**
895      * 3GPP 22.030 6.5.5
896      * "Places all active calls (if any exist) on hold and accepts
897      *  the other (held or waiting) call."
898      *
899      *  ar.exception carries exception on failure
900      *  ar.userObject contains the orignal value of result.obj
901      *  ar.result is null on success and failure
902      */
switchWaitingOrHoldingAndActive(Message result)903     void switchWaitingOrHoldingAndActive (Message result);
904 
905     /**
906      * 3GPP 22.030 6.5.5
907      * "Adds a held call to the conversation"
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      */
conference(Message result)913     void conference (Message result);
914 
915     /**
916      * Set preferred Voice Privacy (VP).
917      *
918      * @param enable true is enhanced and false is normal VP
919      * @param result is a callback message
920      */
setPreferredVoicePrivacy(boolean enable, Message result)921     void setPreferredVoicePrivacy(boolean enable, Message result);
922 
923     /**
924      * Get currently set preferred Voice Privacy (VP) mode.
925      *
926      * @param result is a callback message
927      */
getPreferredVoicePrivacy(Message result)928     void getPreferredVoicePrivacy(Message result);
929 
930     /**
931      * 3GPP 22.030 6.5.5
932      * "Places all active calls on hold except call X with which
933      *  communication shall be supported."
934      */
separateConnection(int gsmIndex, Message result)935     void separateConnection (int gsmIndex, Message result);
936 
937     /**
938      *
939      *  ar.exception carries exception on failure
940      *  ar.userObject contains the orignal value of result.obj
941      *  ar.result is null on success and failure
942      */
acceptCall(Message result)943     void acceptCall (Message result);
944 
945     /**
946      *  also known as UDUB
947      *  ar.exception carries exception on failure
948      *  ar.userObject contains the orignal value of result.obj
949      *  ar.result is null on success and failure
950      */
rejectCall(Message result)951     void rejectCall (Message result);
952 
953     /**
954      * 3GPP 22.030 6.5.5
955      * "Connects the two calls and disconnects the subscriber from both calls"
956      *
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      */
explicitCallTransfer(Message result)961     void explicitCallTransfer (Message result);
962 
963     /**
964      * cause code returned as int[0] in Message.obj.response
965      * Returns integer cause code defined in TS 24.008
966      * Annex H or closest approximation.
967      * Most significant codes:
968      * - Any defined in 22.001 F.4 (for generating busy/congestion)
969      * - Cause 68: ACM >= ACMMax
970      */
getLastCallFailCause(Message result)971     void getLastCallFailCause (Message result);
972 
973 
974     /**
975      * Reason for last PDP context deactivate or failure to activate
976      * cause code returned as int[0] in Message.obj.response
977      * returns an integer cause code defined in TS 24.008
978      * section 6.1.3.1.3 or close approximation
979      * @deprecated Do not use.
980      */
981     @Deprecated
getLastPdpFailCause(Message result)982     void getLastPdpFailCause (Message result);
983 
984     /**
985      * The preferred new alternative to getLastPdpFailCause
986      * that is also CDMA-compatible.
987      */
getLastDataCallFailCause(Message result)988     void getLastDataCallFailCause (Message result);
989 
setMute(boolean enableMute, Message response)990     void setMute (boolean enableMute, Message response);
991 
getMute(Message response)992     void getMute (Message response);
993 
994     /**
995      * response.obj is an AsyncResult
996      * response.obj.result is an int[2]
997      * response.obj.result[0] is received signal strength (0-31, 99)
998      * response.obj.result[1] is  bit error rate (0-7, 99)
999      * as defined in TS 27.007 8.5
1000      */
getSignalStrength(Message response)1001     void getSignalStrength (Message response);
1002 
1003 
1004     /**
1005      * response.obj.result is an int[3]
1006      * response.obj.result[0] is registration state 0-5 from TS 27.007 7.2
1007      * response.obj.result[1] is LAC if registered or -1 if not
1008      * response.obj.result[2] is CID if registered or -1 if not
1009      * valid LAC and CIDs are 0x0000 - 0xffff
1010      *
1011      * Please note that registration state 4 ("unknown") is treated
1012      * as "out of service" above
1013      */
getVoiceRegistrationState(Message response)1014     void getVoiceRegistrationState (Message response);
1015 
1016     /**
1017      * response.obj.result is an int[3]
1018      * response.obj.result[0] is registration state 0-5 from TS 27.007 7.2
1019      * response.obj.result[1] is LAC if registered or -1 if not
1020      * response.obj.result[2] is CID if registered or -1 if not
1021      * valid LAC and CIDs are 0x0000 - 0xffff
1022      *
1023      * Please note that registration state 4 ("unknown") is treated
1024      * as "out of service" above
1025      */
getDataRegistrationState(Message response)1026     void getDataRegistrationState (Message response);
1027 
1028     /**
1029      * response.obj.result is a String[3]
1030      * response.obj.result[0] is long alpha or null if unregistered
1031      * response.obj.result[1] is short alpha or null if unregistered
1032      * response.obj.result[2] is numeric or null if unregistered
1033      */
getOperator(Message response)1034     void getOperator(Message response);
1035 
1036     /**
1037      *  ar.exception carries exception on failure
1038      *  ar.userObject contains the orignal value of result.obj
1039      *  ar.result is null on success and failure
1040      */
sendDtmf(char c, Message result)1041     void sendDtmf(char c, Message result);
1042 
1043 
1044     /**
1045      *  ar.exception carries exception on failure
1046      *  ar.userObject contains the orignal value of result.obj
1047      *  ar.result is null on success and failure
1048      */
startDtmf(char c, Message result)1049     void startDtmf(char c, Message result);
1050 
1051     /**
1052      *  ar.exception carries exception on failure
1053      *  ar.userObject contains the orignal value of result.obj
1054      *  ar.result is null on success and failure
1055      */
stopDtmf(Message result)1056     void stopDtmf(Message result);
1057 
1058     /**
1059      *  ar.exception carries exception on failure
1060      *  ar.userObject contains the orignal value of result.obj
1061      *  ar.result is null on success and failure
1062      */
sendBurstDtmf(String dtmfString, int on, int off, Message result)1063     void sendBurstDtmf(String dtmfString, int on, int off, Message result);
1064 
1065     /**
1066      * smscPDU is smsc address in PDU form GSM BCD format prefixed
1067      *      by a length byte (as expected by TS 27.005) or NULL for default SMSC
1068      * pdu is SMS in PDU format as an ASCII hex string
1069      *      less the SMSC address
1070      */
sendSMS(String smscPDU, String pdu, Message response)1071     void sendSMS (String smscPDU, String pdu, Message response);
1072 
1073     /**
1074      * @param pdu is CDMA-SMS in internal pseudo-PDU format
1075      * @param response sent when operation completes
1076      */
sendCdmaSms(byte[] pdu, Message response)1077     void sendCdmaSms(byte[] pdu, Message response);
1078 
1079     /**
1080      * Deletes the specified SMS record from SIM memory (EF_SMS).
1081      *
1082      * @param index index of the SMS record to delete
1083      * @param response sent when operation completes
1084      */
deleteSmsOnSim(int index, Message response)1085     void deleteSmsOnSim(int index, Message response);
1086 
1087     /**
1088      * Deletes the specified SMS record from RUIM memory (EF_SMS in DF_CDMA).
1089      *
1090      * @param index index of the SMS record to delete
1091      * @param response sent when operation completes
1092      */
deleteSmsOnRuim(int index, Message response)1093     void deleteSmsOnRuim(int index, Message response);
1094 
1095     /**
1096      * Writes an SMS message to SIM memory (EF_SMS).
1097      *
1098      * @param status status of message on SIM.  One of:
1099      *                  SmsManger.STATUS_ON_ICC_READ
1100      *                  SmsManger.STATUS_ON_ICC_UNREAD
1101      *                  SmsManger.STATUS_ON_ICC_SENT
1102      *                  SmsManger.STATUS_ON_ICC_UNSENT
1103      * @param pdu message PDU, as hex string
1104      * @param response sent when operation completes.
1105      *                  response.obj will be an AsyncResult, and will indicate
1106      *                  any error that may have occurred (eg, out of memory).
1107      */
writeSmsToSim(int status, String smsc, String pdu, Message response)1108     void writeSmsToSim(int status, String smsc, String pdu, Message response);
1109 
writeSmsToRuim(int status, String pdu, Message response)1110     void writeSmsToRuim(int status, String pdu, Message response);
1111 
setRadioPower(boolean on, Message response)1112     void setRadioPower(boolean on, Message response);
1113 
acknowledgeLastIncomingGsmSms(boolean success, int cause, Message response)1114     void acknowledgeLastIncomingGsmSms(boolean success, int cause, Message response);
1115 
acknowledgeLastIncomingCdmaSms(boolean success, int cause, Message response)1116     void acknowledgeLastIncomingCdmaSms(boolean success, int cause, Message response);
1117 
1118     /**
1119      * parameters equivalent to 27.007 AT+CRSM command
1120      * response.obj will be an AsyncResult
1121      * response.obj.userObj will be a IccIoResult on success
1122      */
iccIO(int command, int fileid, String path, int p1, int p2, int p3, String data, String pin2, Message response)1123     void iccIO (int command, int fileid, String path, int p1, int p2, int p3,
1124             String data, String pin2, Message response);
1125 
1126     /**
1127      * (AsyncResult)response.obj).result is an int[] with element [0] set to
1128      * 1 for "CLIP is provisioned", and 0 for "CLIP is not provisioned".
1129      *
1130      * @param response is callback message
1131      */
1132 
queryCLIP(Message response)1133     void queryCLIP(Message response);
1134 
1135     /**
1136      * response.obj will be a an int[2]
1137      *
1138      * response.obj[0] will be TS 27.007 +CLIR parameter 'n'
1139      *  0 presentation indicator is used according to the subscription of the CLIR service
1140      *  1 CLIR invocation
1141      *  2 CLIR suppression
1142      *
1143      * response.obj[1] will be TS 27.007 +CLIR parameter 'm'
1144      *  0 CLIR not provisioned
1145      *  1 CLIR provisioned in permanent mode
1146      *  2 unknown (e.g. no network, etc.)
1147      *  3 CLIR temporary mode presentation restricted
1148      *  4 CLIR temporary mode presentation allowed
1149      */
1150 
getCLIR(Message response)1151     void getCLIR(Message response);
1152 
1153     /**
1154      * clirMode is one of the CLIR_* constants above
1155      *
1156      * response.obj is null
1157      */
1158 
setCLIR(int clirMode, Message response)1159     void setCLIR(int clirMode, Message response);
1160 
1161     /**
1162      * (AsyncResult)response.obj).result is an int[] with element [0] set to
1163      * 0 for disabled, 1 for enabled.
1164      *
1165      * @param serviceClass is a sum of SERVICE_CLASS_*
1166      * @param response is callback message
1167      */
1168 
queryCallWaiting(int serviceClass, Message response)1169     void queryCallWaiting(int serviceClass, Message response);
1170 
1171     /**
1172      * @param enable is true to enable, false to disable
1173      * @param serviceClass is a sum of SERVICE_CLASS_*
1174      * @param response is callback message
1175      */
1176 
setCallWaiting(boolean enable, int serviceClass, Message response)1177     void setCallWaiting(boolean enable, int serviceClass, Message response);
1178 
1179     /**
1180      * @param action is one of CF_ACTION_*
1181      * @param cfReason is one of CF_REASON_*
1182      * @param serviceClass is a sum of SERVICE_CLASSS_*
1183      */
setCallForward(int action, int cfReason, int serviceClass, String number, int timeSeconds, Message response)1184     void setCallForward(int action, int cfReason, int serviceClass,
1185                 String number, int timeSeconds, Message response);
1186 
1187     /**
1188      * cfReason is one of CF_REASON_*
1189      *
1190      * ((AsyncResult)response.obj).result will be an array of
1191      * CallForwardInfo's
1192      *
1193      * An array of length 0 means "disabled for all codes"
1194      */
queryCallForwardStatus(int cfReason, int serviceClass, String number, Message response)1195     void queryCallForwardStatus(int cfReason, int serviceClass,
1196             String number, Message response);
1197 
setNetworkSelectionModeAutomatic(Message response)1198     void setNetworkSelectionModeAutomatic(Message response);
1199 
setNetworkSelectionModeManual(String operatorNumeric, Message response)1200     void setNetworkSelectionModeManual(String operatorNumeric, Message response);
1201 
1202     /**
1203      * Queries whether the current network selection mode is automatic
1204      * or manual
1205      *
1206      * ((AsyncResult)response.obj).result  is an int[] with element [0] being
1207      * a 0 for automatic selection and a 1 for manual selection
1208      */
1209 
getNetworkSelectionMode(Message response)1210     void getNetworkSelectionMode(Message response);
1211 
1212     /**
1213      * Queries the currently available networks
1214      *
1215      * ((AsyncResult)response.obj).result  is a List of NetworkInfo objects
1216      */
getAvailableNetworks(Message response)1217     void getAvailableNetworks(Message response);
1218 
getBasebandVersion(Message response)1219     void getBasebandVersion (Message response);
1220 
1221 
1222     /**
1223      * (AsyncResult)response.obj).result will be an Integer representing
1224      * the sum of enabled service classes (sum of SERVICE_CLASS_*)
1225      *
1226      * @param facility one of CB_FACILTY_*
1227      * @param password password or "" if not required
1228      * @param serviceClass is a sum of SERVICE_CLASS_*
1229      * @param response is callback message
1230      */
1231 
queryFacilityLock(String facility, String password, int serviceClass, Message response)1232     void queryFacilityLock (String facility, String password, int serviceClass,
1233         Message response);
1234 
1235     /**
1236      * (AsyncResult)response.obj).result will be an Integer representing
1237      * the sum of enabled service classes (sum of SERVICE_CLASS_*) for the
1238      * application with appId.
1239      *
1240      * @param facility one of CB_FACILTY_*
1241      * @param password password or "" if not required
1242      * @param serviceClass is a sum of SERVICE_CLASS_*
1243      * @param appId is application Id or null if none
1244      * @param response is callback message
1245      */
1246 
queryFacilityLockForApp(String facility, String password, int serviceClass, String appId, Message response)1247     void queryFacilityLockForApp(String facility, String password, int serviceClass, String appId,
1248         Message response);
1249 
1250     /**
1251      * @param facility one of CB_FACILTY_*
1252      * @param lockState true means lock, false means unlock
1253      * @param password password or "" if not required
1254      * @param serviceClass is a sum of SERVICE_CLASS_*
1255      * @param response is callback message
1256      */
setFacilityLock(String facility, boolean lockState, String password, int serviceClass, Message response)1257     void setFacilityLock (String facility, boolean lockState, String password,
1258         int serviceClass, Message response);
1259 
1260     /**
1261      * Set the facility lock for the app with this AID on the ICC card.
1262      *
1263      * @param facility one of CB_FACILTY_*
1264      * @param lockState true means lock, false means unlock
1265      * @param password password or "" if not required
1266      * @param serviceClass is a sum of SERVICE_CLASS_*
1267      * @param appId is application Id or null if none
1268      * @param response is callback message
1269      */
setFacilityLockForApp(String facility, boolean lockState, String password, int serviceClass, String appId, Message response)1270     void setFacilityLockForApp(String facility, boolean lockState, String password,
1271         int serviceClass, String appId, Message response);
1272 
sendUSSD(String ussdString, Message response)1273     void sendUSSD (String ussdString, Message response);
1274 
1275     /**
1276      * Cancels a pending USSD session if one exists.
1277      * @param response callback message
1278      */
cancelPendingUssd(Message response)1279     void cancelPendingUssd (Message response);
1280 
resetRadio(Message result)1281     void resetRadio(Message result);
1282 
1283     /**
1284      * Assign a specified band for RF configuration.
1285      *
1286      * @param bandMode one of BM_*_BAND
1287      * @param response is callback message
1288      */
setBandMode(int bandMode, Message response)1289     void setBandMode (int bandMode, Message response);
1290 
1291     /**
1292      * Query the list of band mode supported by RF.
1293      *
1294      * @param response is callback message
1295      *        ((AsyncResult)response.obj).result  is an int[] with every
1296      *        element representing one avialable BM_*_BAND
1297      */
queryAvailableBandMode(Message response)1298     void queryAvailableBandMode (Message response);
1299 
1300     /**
1301      *  Requests to set the preferred network type for searching and registering
1302      * (CS/PS domain, RAT, and operation mode)
1303      * @param networkType one of  NT_*_TYPE
1304      * @param response is callback message
1305      */
setPreferredNetworkType(int networkType , Message response)1306     void setPreferredNetworkType(int networkType , Message response);
1307 
1308      /**
1309      *  Query the preferred network type setting
1310      *
1311      * @param response is callback message to report one of  NT_*_TYPE
1312      */
getPreferredNetworkType(Message response)1313     void getPreferredNetworkType(Message response);
1314 
1315     /**
1316      * Query neighboring cell ids
1317      *
1318      * @param response s callback message to cell ids
1319      */
getNeighboringCids(Message response)1320     void getNeighboringCids(Message response);
1321 
1322     /**
1323      * Request to enable/disable network state change notifications when
1324      * location information (lac and/or cid) has changed.
1325      *
1326      * @param enable true to enable, false to disable
1327      * @param response callback message
1328      */
setLocationUpdates(boolean enable, Message response)1329     void setLocationUpdates(boolean enable, Message response);
1330 
1331     /**
1332      * Gets the default SMSC address.
1333      *
1334      * @param result Callback message contains the SMSC address.
1335      */
getSmscAddress(Message result)1336     void getSmscAddress(Message result);
1337 
1338     /**
1339      * Sets the default SMSC address.
1340      *
1341      * @param address new SMSC address
1342      * @param result Callback message is empty on completion
1343      */
setSmscAddress(String address, Message result)1344     void setSmscAddress(String address, Message result);
1345 
1346     /**
1347      * Indicates whether there is storage available for new SMS messages.
1348      * @param available true if storage is available
1349      * @param result callback message
1350      */
reportSmsMemoryStatus(boolean available, Message result)1351     void reportSmsMemoryStatus(boolean available, Message result);
1352 
1353     /**
1354      * Indicates to the vendor ril that StkService is running
1355      * and is ready to receive RIL_UNSOL_STK_XXXX commands.
1356      *
1357      * @param result callback message
1358      */
reportStkServiceIsRunning(Message result)1359     void reportStkServiceIsRunning(Message result);
1360 
invokeOemRilRequestRaw(byte[] data, Message response)1361     void invokeOemRilRequestRaw(byte[] data, Message response);
1362 
invokeOemRilRequestStrings(String[] strings, Message response)1363     void invokeOemRilRequestStrings(String[] strings, Message response);
1364 
1365 
1366     /**
1367      * Send TERMINAL RESPONSE to the SIM, after processing a proactive command
1368      * sent by the SIM.
1369      *
1370      * @param contents  String containing SAT/USAT response in hexadecimal
1371      *                  format starting with first byte of response data. See
1372      *                  TS 102 223 for details.
1373      * @param response  Callback message
1374      */
sendTerminalResponse(String contents, Message response)1375     public void sendTerminalResponse(String contents, Message response);
1376 
1377     /**
1378      * Send ENVELOPE to the SIM, after processing a proactive command sent by
1379      * the SIM.
1380      *
1381      * @param contents  String containing SAT/USAT response in hexadecimal
1382      *                  format starting with command tag. See TS 102 223 for
1383      *                  details.
1384      * @param response  Callback message
1385      */
sendEnvelope(String contents, Message response)1386     public void sendEnvelope(String contents, Message response);
1387 
1388     /**
1389      * Accept or reject the call setup request from SIM.
1390      *
1391      * @param accept   true if the call is to be accepted, false otherwise.
1392      * @param response Callback message
1393      */
handleCallSetupRequestFromSim(boolean accept, Message response)1394     public void handleCallSetupRequestFromSim(boolean accept, Message response);
1395 
1396     /**
1397      * Activate or deactivate cell broadcast SMS for GSM.
1398      *
1399      * @param activate
1400      *            true = activate, false = deactivate
1401      * @param result Callback message is empty on completion
1402      */
setGsmBroadcastActivation(boolean activate, Message result)1403     public void setGsmBroadcastActivation(boolean activate, Message result);
1404 
1405     /**
1406      * Configure cell broadcast SMS for GSM.
1407      *
1408      * @param response Callback message is empty on completion
1409      */
setGsmBroadcastConfig(SmsBroadcastConfigInfo[] config, Message response)1410     public void setGsmBroadcastConfig(SmsBroadcastConfigInfo[] config, Message response);
1411 
1412     /**
1413      * Query the current configuration of cell broadcast SMS of GSM.
1414      *
1415      * @param response
1416      *        Callback message contains the configuration from the modem
1417      *        on completion
1418      */
getGsmBroadcastConfig(Message response)1419     public void getGsmBroadcastConfig(Message response);
1420 
1421     //***** new Methods for CDMA support
1422 
1423     /**
1424      * Request the device ESN / MEID / IMEI / IMEISV.
1425      * "response" is const char **
1426      *   [0] is IMEI if GSM subscription is available
1427      *   [1] is IMEISV if GSM subscription is available
1428      *   [2] is ESN if CDMA subscription is available
1429      *   [3] is MEID if CDMA subscription is available
1430      */
getDeviceIdentity(Message response)1431     public void getDeviceIdentity(Message response);
1432 
1433     /**
1434      * Request the device MDN / H_SID / H_NID / MIN.
1435      * "response" is const char **
1436      *   [0] is MDN if CDMA subscription is available
1437      *   [1] is a comma separated list of H_SID (Home SID) in decimal format
1438      *       if CDMA subscription is available
1439      *   [2] is a comma separated list of H_NID (Home NID) in decimal format
1440      *       if CDMA subscription is available
1441      *   [3] is MIN (10 digits, MIN2+MIN1) if CDMA subscription is available
1442      */
getCDMASubscription(Message response)1443     public void getCDMASubscription(Message response);
1444 
1445     /**
1446      * Send Flash Code.
1447      * "response" is is NULL
1448      *   [0] is a FLASH string
1449      */
sendCDMAFeatureCode(String FeatureCode, Message response)1450     public void sendCDMAFeatureCode(String FeatureCode, Message response);
1451 
1452     /** Set the Phone type created */
setPhoneType(int phoneType)1453     void setPhoneType(int phoneType);
1454 
1455     /**
1456      *  Query the CDMA roaming preference setting
1457      *
1458      * @param response is callback message to report one of  CDMA_RM_*
1459      */
queryCdmaRoamingPreference(Message response)1460     void queryCdmaRoamingPreference(Message response);
1461 
1462     /**
1463      *  Requests to set the CDMA roaming preference
1464      * @param cdmaRoamingType one of  CDMA_RM_*
1465      * @param response is callback message
1466      */
setCdmaRoamingPreference(int cdmaRoamingType, Message response)1467     void setCdmaRoamingPreference(int cdmaRoamingType, Message response);
1468 
1469     /**
1470      *  Requests to set the CDMA subscription mode
1471      * @param cdmaSubscriptionType one of  CDMA_SUBSCRIPTION_*
1472      * @param response is callback message
1473      */
setCdmaSubscriptionSource(int cdmaSubscriptionType, Message response)1474     void setCdmaSubscriptionSource(int cdmaSubscriptionType, Message response);
1475 
1476     /**
1477      *  Requests to get the CDMA subscription srouce
1478      * @param response is callback message
1479      */
getCdmaSubscriptionSource(Message response)1480     void getCdmaSubscriptionSource(Message response);
1481 
1482     /**
1483      *  Set the TTY mode
1484      *
1485      * @param ttyMode one of the following:
1486      * - {@link com.android.internal.telephony.Phone#TTY_MODE_OFF}
1487      * - {@link com.android.internal.telephony.Phone#TTY_MODE_FULL}
1488      * - {@link com.android.internal.telephony.Phone#TTY_MODE_HCO}
1489      * - {@link com.android.internal.telephony.Phone#TTY_MODE_VCO}
1490      * @param response is callback message
1491      */
setTTYMode(int ttyMode, Message response)1492     void setTTYMode(int ttyMode, Message response);
1493 
1494     /**
1495      *  Query the TTY mode
1496      * (AsyncResult)response.obj).result is an int[] with element [0] set to
1497      * tty mode:
1498      * - {@link com.android.internal.telephony.Phone#TTY_MODE_OFF}
1499      * - {@link com.android.internal.telephony.Phone#TTY_MODE_FULL}
1500      * - {@link com.android.internal.telephony.Phone#TTY_MODE_HCO}
1501      * - {@link com.android.internal.telephony.Phone#TTY_MODE_VCO}
1502      * @param response is callback message
1503      */
queryTTYMode(Message response)1504     void queryTTYMode(Message response);
1505 
1506     /**
1507      * Setup a packet data connection On successful completion, the result
1508      * message will return a {@link DataCallState} object containing the connection
1509      * information.
1510      *
1511      * @param radioTechnology
1512      *            indicates whether to setup connection on radio technology CDMA
1513      *            (0) or GSM/UMTS (1)
1514      * @param profile
1515      *            Profile Number or NULL to indicate default profile
1516      * @param apn
1517      *            the APN to connect to if radio technology is GSM/UMTS.
1518      *            Otherwise null for CDMA.
1519      * @param user
1520      *            the username for APN, or NULL
1521      * @param password
1522      *            the password for APN, or NULL
1523      * @param authType
1524      *            the PAP / CHAP auth type. Values is one of SETUP_DATA_AUTH_*
1525      * @param protocol
1526      *            one of the PDP_type values in TS 27.007 section 10.1.1.
1527      *            For example, "IP", "IPV6", "IPV4V6", or "PPP".
1528      * @param result
1529      *            Callback message
1530      */
setupDataCall(String radioTechnology, String profile, String apn, String user, String password, String authType, String protocol, Message result)1531     public void setupDataCall(String radioTechnology, String profile,
1532             String apn, String user, String password, String authType,
1533             String protocol, Message result);
1534 
1535     /**
1536      * Deactivate packet data connection
1537      *
1538      * @param cid
1539      *            The connection ID
1540      * @param reason
1541      *            Data disconnect reason.
1542      * @param result
1543      *            Callback message is empty on completion
1544      */
deactivateDataCall(int cid, int reason, Message result)1545     public void deactivateDataCall(int cid, int reason, Message result);
1546 
1547     /**
1548      * Activate or deactivate cell broadcast SMS for CDMA.
1549      *
1550      * @param activate
1551      *            true = activate, false = deactivate
1552      * @param result
1553      *            Callback message is empty on completion
1554      */
setCdmaBroadcastActivation(boolean activate, Message result)1555     public void setCdmaBroadcastActivation(boolean activate, Message result);
1556 
1557     /**
1558      * Configure cdma cell broadcast SMS.
1559      *
1560      * @param result
1561      *            Callback message is empty on completion
1562      */
1563     // TODO: Change the configValuesArray to a RIL_BroadcastSMSConfig
setCdmaBroadcastConfig(int[] configValuesArray, Message result)1564     public void setCdmaBroadcastConfig(int[] configValuesArray, Message result);
1565 
1566     /**
1567      * Query the current configuration of cdma cell broadcast SMS.
1568      *
1569      * @param result
1570      *            Callback message contains the configuration from the modem on completion
1571      */
getCdmaBroadcastConfig(Message result)1572     public void getCdmaBroadcastConfig(Message result);
1573 
1574     /**
1575      *  Requests the radio's system selection module to exit emergency callback mode.
1576      *  This function should only be called from CDMAPHone.java.
1577      *
1578      * @param response callback message
1579      */
exitEmergencyCallbackMode(Message response)1580     public void exitEmergencyCallbackMode(Message response);
1581 
1582     /**
1583      * Request the status of the ICC and UICC cards.
1584      *
1585      * @param result
1586      *          Callback message containing {@link IccCardStatus} structure for the card.
1587      */
getIccCardStatus(Message result)1588     public void getIccCardStatus(Message result);
1589 
1590     /**
1591      * Return if the current radio is LTE on CDMA. This
1592      * is a tri-state return value as for a period of time
1593      * the mode may be unknown.
1594      *
1595      * @return {@link Phone#LTE_ON_CDMA_UNKNOWN}, {@link Phone#LTE_ON_CDMA_FALSE}
1596      * or {@link Phone#LTE_ON_CDMA_TRUE}
1597      */
getLteOnCdmaMode()1598     public int getLteOnCdmaMode();
1599 
1600     /**
1601      * Request the ISIM application on the UICC to perform the AKA
1602      * challenge/response algorithm for IMS authentication. The nonce string
1603      * and challenge response are Base64 encoded Strings.
1604      *
1605      * @param nonce the nonce string to pass with the ISIM authentication request
1606      * @param response a callback message with the String response in the obj field
1607      */
requestIsimAuthentication(String nonce, Message response)1608     public void requestIsimAuthentication(String nonce, Message response);
1609 }
1610