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