Home | History | Annotate | Download | only in telephony
      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 
     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 
     54         public boolean isAvailable() {
     55             return this != RADIO_UNAVAILABLE;
     56         }
     57 
     58         public boolean isSIMReady() {
     59             return this == SIM_READY;
     60         }
     61 
     62         public boolean isRUIMReady() {
     63             return this == RUIM_READY;
     64         }
     65 
     66         public boolean isNVReady() {
     67             return this == NV_READY;
     68         }
     69 
     70         public boolean isGsm() {
     71             return this == SIM_NOT_READY
     72                     || this == SIM_LOCKED_OR_ABSENT
     73                     || this == SIM_READY;
     74         }
     75 
     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 
    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      */
    165     void registerForRadioStateChanged(Handler h, int what, Object obj);
    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      */
    174     void registerForOn(Handler h, int what, Object obj);
    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      */
    183     void registerForAvailable(Handler h, int what, Object obj);
    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      */
    192     void registerForNotAvailable(Handler h, int what, Object obj);
    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      */
    201     void registerForOffOrNotAvailable(Handler h, int what, Object obj);
    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      */
    210     void registerForSIMReady(Handler h, int what, Object obj);
    211     void unregisterForSIMReady(Handler h);
    212 
    213     /** Any transition into SIM_LOCKED_OR_ABSENT */
    214     void registerForSIMLockedOrAbsent(Handler h, int what, Object obj);
    215     void unregisterForSIMLockedOrAbsent(Handler h);
    216 
    217     void registerForCallStateChanged(Handler h, int what, Object obj);
    218     void unregisterForCallStateChanged(Handler h);
    219     void registerForNetworkStateChanged(Handler h, int what, Object obj);
    220     void unregisterForNetworkStateChanged(Handler h);
    221     void registerForDataStateChanged(Handler h, int what, Object obj);
    222     void unregisterForDataStateChanged(Handler h);
    223 
    224     void registerForRadioTechnologyChanged(Handler h, int what, Object obj);
    225     void unregisterForRadioTechnologyChanged(Handler h);
    226     void registerForNVReady(Handler h, int what, Object obj);
    227     void unregisterForNVReady(Handler h);
    228     void registerForRUIMLockedOrAbsent(Handler h, int what, Object obj);
    229     void unregisterForRUIMLockedOrAbsent(Handler h);
    230 
    231     /** InCall voice privacy notifications */
    232     void registerForInCallVoicePrivacyOn(Handler h, int what, Object obj);
    233     void unregisterForInCallVoicePrivacyOn(Handler h);
    234     void registerForInCallVoicePrivacyOff(Handler h, int what, Object obj);
    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      */
    243     void registerForRUIMReady(Handler h, int what, Object obj);
    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      */
    253     void setOnNewSMS(Handler h, int what, Object obj);
    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      */
    261     void setOnSmsOnSim(Handler h, int what, Object obj);
    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      */
    269     void setOnSmsStatus(Handler h, int what, Object obj);
    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      */
    284     void setOnNITZTime(Handler h, int what, Object obj);
    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 
    306     void setOnUSSD(Handler h, int what, Object obj);
    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 
    317     void setOnSignalStrengthUpdate(Handler h, int what, Object obj);
    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      */
    328     void setOnIccSmsFull(Handler h, int what, Object obj);
    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      */
    339     void setOnIccRefresh(Handler h, int what, Object obj);
    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      */
    350     void setOnCallRing(Handler h, int what, Object obj);
    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 
    362     void setOnRestrictedStateChanged(Handler h, int what, Object obj);
    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      */
    373     void setOnSuppServiceNotification(Handler h, int what, Object obj);
    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      */
    384     void setOnStkSessionEnd(Handler h, int what, Object obj);
    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      */
    395     void setOnStkProactiveCmd(Handler h, int what, Object obj);
    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      */
    406     void setOnStkEvent(Handler h, int what, Object obj);
    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      */
    417     void setOnStkCallSetUp(Handler h, int what, Object obj);
    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      */
    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      */
    438     void registerForDisplayInfo(Handler h, int what, Object obj);
    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      */
    449     void registerForCallWaitingInfo(Handler h, int what, Object obj);
    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      */
    460     void registerForSignalInfo(Handler h, int what, Object obj);
    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      */
    471     void registerForNumberInfo(Handler h, int what, Object obj);
    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      */
    482     void registerForRedirectedNumberInfo(Handler h, int what, Object obj);
    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      */
    493     void registerForLineControlInfo(Handler h, int what, Object obj);
    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      */
    504     void registerFoT53ClirlInfo(Handler h, int what, Object obj);
    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      */
    515     void registerForT53AudioControlInfo(Handler h, int what, Object obj);
    516     void unregisterForT53AudioControlInfo(Handler h);
    517 
    518     /**
    519      * Fires on if Modem enters Emergency Callback mode
    520      */
    521     void setEmergencyCallbackMode(Handler h, int what, Object obj);
    522 
    523      /**
    524       * Fires on any CDMA OTA provision status change
    525       */
    526      void registerForCdmaOtaProvision(Handler h,int what, Object obj);
    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       */
    537      void registerForRingbackTone(Handler h, int what, Object obj);
    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       */
    549      void registerForResendIncallMute(Handler h, int what, Object obj);
    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 
    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 
    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 
    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 
    610     void supplyIccPuk2(String puk2, String newPin2, Message result);
    611 
    612     void changeIccPin(String oldPin, String newPin, Message result);
    613     void changeIccPin2(String oldPin2, String newPin2, Message result);
    614 
    615     void changeBarringPassword(String facility, String oldPwd, String newPwd, Message result);
    616 
    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      */
    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
    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      */
    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      */
    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 String containing IMSI on success
    668      */
    669     void getIMSI(Message result);
    670 
    671     /**
    672      *  returned message
    673      *  retMsg.obj = AsyncResult ar
    674      *  ar.exception carries exception on failure
    675      *  ar.userObject contains the orignal value of result.obj
    676      *  ar.result is String containing IMEI on success
    677      */
    678     void getIMEI(Message result);
    679 
    680     /**
    681      *  returned message
    682      *  retMsg.obj = AsyncResult ar
    683      *  ar.exception carries exception on failure
    684      *  ar.userObject contains the orignal value of result.obj
    685      *  ar.result is String containing IMEISV on success
    686      */
    687     void getIMEISV(Message result);
    688 
    689     /**
    690      * Hang up one individual connection.
    691      *  returned message
    692      *  retMsg.obj = AsyncResult ar
    693      *  ar.exception carries exception on failure
    694      *  ar.userObject contains the orignal value of result.obj
    695      *  ar.result is null on success and failure
    696      *
    697      *  3GPP 22.030 6.5.5
    698      *  "Releases a specific active call X"
    699      */
    700     void hangupConnection (int gsmIndex, Message result);
    701 
    702     /**
    703      * 3GPP 22.030 6.5.5
    704      *  "Releases all held calls or sets User Determined User Busy (UDUB)
    705      *   for a waiting call."
    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     void hangupWaitingOrBackground (Message result);
    711 
    712     /**
    713      * 3GPP 22.030 6.5.5
    714      * "Releases all active calls (if any exist) and accepts
    715      *  the other (held or waiting) call."
    716      *
    717      *  ar.exception carries exception on failure
    718      *  ar.userObject contains the orignal value of result.obj
    719      *  ar.result is null on success and failure
    720      */
    721     void hangupForegroundResumeBackground (Message result);
    722 
    723     /**
    724      * 3GPP 22.030 6.5.5
    725      * "Places all active calls (if any exist) on hold and accepts
    726      *  the other (held or waiting) call."
    727      *
    728      *  ar.exception carries exception on failure
    729      *  ar.userObject contains the orignal value of result.obj
    730      *  ar.result is null on success and failure
    731      */
    732     void switchWaitingOrHoldingAndActive (Message result);
    733 
    734     /**
    735      * 3GPP 22.030 6.5.5
    736      * "Adds a held call to the conversation"
    737      *
    738      *  ar.exception carries exception on failure
    739      *  ar.userObject contains the orignal value of result.obj
    740      *  ar.result is null on success and failure
    741      */
    742     void conference (Message result);
    743 
    744     /**
    745      * Set preferred Voice Privacy (VP).
    746      *
    747      * @param enable true is enhanced and false is normal VP
    748      * @param result is a callback message
    749      */
    750     void setPreferredVoicePrivacy(boolean enable, Message result);
    751 
    752     /**
    753      * Get currently set preferred Voice Privacy (VP) mode.
    754      *
    755      * @param result is a callback message
    756      */
    757     void getPreferredVoicePrivacy(Message result);
    758 
    759     /**
    760      * 3GPP 22.030 6.5.5
    761      * "Places all active calls on hold except call X with which
    762      *  communication shall be supported."
    763      */
    764     void separateConnection (int gsmIndex, Message result);
    765 
    766     /**
    767      *
    768      *  ar.exception carries exception on failure
    769      *  ar.userObject contains the orignal value of result.obj
    770      *  ar.result is null on success and failure
    771      */
    772     void acceptCall (Message result);
    773 
    774     /**
    775      *  also known as UDUB
    776      *  ar.exception carries exception on failure
    777      *  ar.userObject contains the orignal value of result.obj
    778      *  ar.result is null on success and failure
    779      */
    780     void rejectCall (Message result);
    781 
    782     /**
    783      * 3GPP 22.030 6.5.5
    784      * "Connects the two calls and disconnects the subscriber from both calls"
    785      *
    786      *  ar.exception carries exception on failure
    787      *  ar.userObject contains the orignal value of result.obj
    788      *  ar.result is null on success and failure
    789      */
    790     void explicitCallTransfer (Message result);
    791 
    792     /**
    793      * cause code returned as int[0] in Message.obj.response
    794      * Returns integer cause code defined in TS 24.008
    795      * Annex H or closest approximation.
    796      * Most significant codes:
    797      * - Any defined in 22.001 F.4 (for generating busy/congestion)
    798      * - Cause 68: ACM >= ACMMax
    799      */
    800     void getLastCallFailCause (Message result);
    801 
    802 
    803     /**
    804      * Reason for last PDP context deactivate or failure to activate
    805      * cause code returned as int[0] in Message.obj.response
    806      * returns an integer cause code defined in TS 24.008
    807      * section 6.1.3.1.3 or close approximation
    808      * @deprecated Do not use.
    809      */
    810     @Deprecated
    811     void getLastPdpFailCause (Message result);
    812 
    813     /**
    814      * The preferred new alternative to getLastPdpFailCause
    815      * that is also CDMA-compatible.
    816      */
    817     void getLastDataCallFailCause (Message result);
    818 
    819     void setMute (boolean enableMute, Message response);
    820 
    821     void getMute (Message response);
    822 
    823     /**
    824      * response.obj is an AsyncResult
    825      * response.obj.result is an int[2]
    826      * response.obj.result[0] is received signal strength (0-31, 99)
    827      * response.obj.result[1] is  bit error rate (0-7, 99)
    828      * as defined in TS 27.007 8.5
    829      */
    830     void getSignalStrength (Message response);
    831 
    832 
    833     /**
    834      * response.obj.result is an int[3]
    835      * response.obj.result[0] is registration state 0-5 from TS 27.007 7.2
    836      * response.obj.result[1] is LAC if registered or -1 if not
    837      * response.obj.result[2] is CID if registered or -1 if not
    838      * valid LAC and CIDs are 0x0000 - 0xffff
    839      *
    840      * Please note that registration state 4 ("unknown") is treated
    841      * as "out of service" above
    842      */
    843     void getRegistrationState (Message response);
    844 
    845     /**
    846      * response.obj.result is an int[3]
    847      * response.obj.result[0] is registration state 0-5 from TS 27.007 7.2
    848      * response.obj.result[1] is LAC if registered or -1 if not
    849      * response.obj.result[2] is CID if registered or -1 if not
    850      * valid LAC and CIDs are 0x0000 - 0xffff
    851      *
    852      * Please note that registration state 4 ("unknown") is treated
    853      * as "out of service" above
    854      */
    855     void getGPRSRegistrationState (Message response);
    856 
    857     /**
    858      * response.obj.result is a String[3]
    859      * response.obj.result[0] is long alpha or null if unregistered
    860      * response.obj.result[1] is short alpha or null if unregistered
    861      * response.obj.result[2] is numeric or null if unregistered
    862      */
    863     void getOperator(Message response);
    864 
    865     /**
    866      *  ar.exception carries exception on failure
    867      *  ar.userObject contains the orignal value of result.obj
    868      *  ar.result is null on success and failure
    869      */
    870     void sendDtmf(char c, Message result);
    871 
    872 
    873     /**
    874      *  ar.exception carries exception on failure
    875      *  ar.userObject contains the orignal value of result.obj
    876      *  ar.result is null on success and failure
    877      */
    878     void startDtmf(char c, Message result);
    879 
    880     /**
    881      *  ar.exception carries exception on failure
    882      *  ar.userObject contains the orignal value of result.obj
    883      *  ar.result is null on success and failure
    884      */
    885     void stopDtmf(Message result);
    886 
    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      */
    892     void sendBurstDtmf(String dtmfString, int on, int off, Message result);
    893 
    894     /**
    895      * smscPDU is smsc address in PDU form GSM BCD format prefixed
    896      *      by a length byte (as expected by TS 27.005) or NULL for default SMSC
    897      * pdu is SMS in PDU format as an ASCII hex string
    898      *      less the SMSC address
    899      */
    900     void sendSMS (String smscPDU, String pdu, Message response);
    901 
    902     /**
    903      * @param pdu is CDMA-SMS in internal pseudo-PDU format
    904      * @param response sent when operation completes
    905      */
    906     void sendCdmaSms(byte[] pdu, Message response);
    907 
    908     /**
    909      * Deletes the specified SMS record from SIM memory (EF_SMS).
    910      *
    911      * @param index index of the SMS record to delete
    912      * @param response sent when operation completes
    913      */
    914     void deleteSmsOnSim(int index, Message response);
    915 
    916     /**
    917      * Deletes the specified SMS record from RUIM memory (EF_SMS in DF_CDMA).
    918      *
    919      * @param index index of the SMS record to delete
    920      * @param response sent when operation completes
    921      */
    922     void deleteSmsOnRuim(int index, Message response);
    923 
    924     /**
    925      * Writes an SMS message to SIM memory (EF_SMS).
    926      *
    927      * @param status status of message on SIM.  One of:
    928      *                  SmsManger.STATUS_ON_ICC_READ
    929      *                  SmsManger.STATUS_ON_ICC_UNREAD
    930      *                  SmsManger.STATUS_ON_ICC_SENT
    931      *                  SmsManger.STATUS_ON_ICC_UNSENT
    932      * @param pdu message PDU, as hex string
    933      * @param response sent when operation completes.
    934      *                  response.obj will be an AsyncResult, and will indicate
    935      *                  any error that may have occurred (eg, out of memory).
    936      */
    937     void writeSmsToSim(int status, String smsc, String pdu, Message response);
    938 
    939     void writeSmsToRuim(int status, String pdu, Message response);
    940 
    941     /**
    942      * @deprecated
    943      * @param apn
    944      * @param user
    945      * @param password
    946      * @param response
    947      */
    948     void setupDefaultPDP(String apn, String user, String password, Message response);
    949 
    950     /**
    951      * @deprecated
    952      * @param cid
    953      * @param response
    954      */
    955     void deactivateDefaultPDP(int cid, Message response);
    956 
    957     void setRadioPower(boolean on, Message response);
    958 
    959     void acknowledgeLastIncomingGsmSms(boolean success, int cause, Message response);
    960 
    961     void acknowledgeLastIncomingCdmaSms(boolean success, int cause, Message response);
    962 
    963     /**
    964      * parameters equivilient to 27.007 AT+CRSM command
    965      * response.obj will be an AsyncResult
    966      * response.obj.userObj will be a IccIoResult on success
    967      */
    968     void iccIO (int command, int fileid, String path, int p1, int p2, int p3,
    969             String data, String pin2, Message response);
    970 
    971     /**
    972      * (AsyncResult)response.obj).result is an int[] with element [0] set to
    973      * 1 for "CLIP is provisioned", and 0 for "CLIP is not provisioned".
    974      *
    975      * @param response is callback message
    976      */
    977 
    978     void queryCLIP(Message response);
    979 
    980     /**
    981      * response.obj will be a an int[2]
    982      *
    983      * response.obj[0] will be TS 27.007 +CLIR parameter 'n'
    984      *  0 presentation indicator is used according to the subscription of the CLIR service
    985      *  1 CLIR invocation
    986      *  2 CLIR suppression
    987      *
    988      * response.obj[1] will be TS 27.007 +CLIR parameter 'm'
    989      *  0 CLIR not provisioned
    990      *  1 CLIR provisioned in permanent mode
    991      *  2 unknown (e.g. no network, etc.)
    992      *  3 CLIR temporary mode presentation restricted
    993      *  4 CLIR temporary mode presentation allowed
    994      */
    995 
    996     void getCLIR(Message response);
    997 
    998     /**
    999      * clirMode is one of the CLIR_* constants above
   1000      *
   1001      * response.obj is null
   1002      */
   1003 
   1004     void setCLIR(int clirMode, Message response);
   1005 
   1006     /**
   1007      * (AsyncResult)response.obj).result is an int[] with element [0] set to
   1008      * 0 for disabled, 1 for enabled.
   1009      *
   1010      * @param serviceClass is a sum of SERVICE_CLASS_*
   1011      * @param response is callback message
   1012      */
   1013 
   1014     void queryCallWaiting(int serviceClass, Message response);
   1015 
   1016     /**
   1017      * @param enable is true to enable, false to disable
   1018      * @param serviceClass is a sum of SERVICE_CLASS_*
   1019      * @param response is callback message
   1020      */
   1021 
   1022     void setCallWaiting(boolean enable, int serviceClass, Message response);
   1023 
   1024     /**
   1025      * @param action is one of CF_ACTION_*
   1026      * @param cfReason is one of CF_REASON_*
   1027      * @param serviceClass is a sum of SERVICE_CLASSS_*
   1028      */
   1029     void setCallForward(int action, int cfReason, int serviceClass,
   1030                 String number, int timeSeconds, Message response);
   1031 
   1032     /**
   1033      * cfReason is one of CF_REASON_*
   1034      *
   1035      * ((AsyncResult)response.obj).result will be an array of
   1036      * CallForwardInfo's
   1037      *
   1038      * An array of length 0 means "disabled for all codes"
   1039      */
   1040     void queryCallForwardStatus(int cfReason, int serviceClass,
   1041             String number, Message response);
   1042 
   1043     void setNetworkSelectionModeAutomatic(Message response);
   1044 
   1045     void setNetworkSelectionModeManual(String operatorNumeric, Message response);
   1046 
   1047     /**
   1048      * Queries whether the current network selection mode is automatic
   1049      * or manual
   1050      *
   1051      * ((AsyncResult)response.obj).result  is an int[] with element [0] being
   1052      * a 0 for automatic selection and a 1 for manual selection
   1053      */
   1054 
   1055     void getNetworkSelectionMode(Message response);
   1056 
   1057     /**
   1058      * Queries the currently available networks
   1059      *
   1060      * ((AsyncResult)response.obj).result  is a List of NetworkInfo objects
   1061      */
   1062     void getAvailableNetworks(Message response);
   1063 
   1064     void getBasebandVersion (Message response);
   1065 
   1066 
   1067     /**
   1068      * (AsyncResult)response.obj).result will be an Integer representing
   1069      * the sum of enabled serivice classes (sum of SERVICE_CLASS_*)
   1070      *
   1071      * @param facility one of CB_FACILTY_*
   1072      * @param password password or "" if not required
   1073      * @param serviceClass is a sum of SERVICE_CLASS_*
   1074      * @param response is callback message
   1075      */
   1076 
   1077     void queryFacilityLock (String facility, String password, int serviceClass,
   1078         Message response);
   1079 
   1080     /**
   1081      * @param facility one of CB_FACILTY_*
   1082      * @param lockState true means lock, false means unlock
   1083      * @param password password or "" if not required
   1084      * @param serviceClass is a sum of SERVICE_CLASS_*
   1085      * @param response is callback message
   1086      */
   1087     void setFacilityLock (String facility, boolean lockState, String password,
   1088         int serviceClass, Message response);
   1089 
   1090 
   1091     void sendUSSD (String ussdString, Message response);
   1092 
   1093     /**
   1094      * Cancels a pending USSD session if one exists.
   1095      * @param response callback message
   1096      */
   1097     void cancelPendingUssd (Message response);
   1098 
   1099     void resetRadio(Message result);
   1100 
   1101     /**
   1102      * Assign a specified band for RF configuration.
   1103      *
   1104      * @param bandMode one of BM_*_BAND
   1105      * @param response is callback message
   1106      */
   1107     void setBandMode (int bandMode, Message response);
   1108 
   1109     /**
   1110      * Query the list of band mode supported by RF.
   1111      *
   1112      * @param response is callback message
   1113      *        ((AsyncResult)response.obj).result  is an int[] with every
   1114      *        element representing one avialable BM_*_BAND
   1115      */
   1116     void queryAvailableBandMode (Message response);
   1117 
   1118     /**
   1119      *  Requests to set the preferred network type for searching and registering
   1120      * (CS/PS domain, RAT, and operation mode)
   1121      * @param networkType one of  NT_*_TYPE
   1122      * @param response is callback message
   1123      */
   1124     void setPreferredNetworkType(int networkType , Message response);
   1125 
   1126      /**
   1127      *  Query the preferred network type setting
   1128      *
   1129      * @param response is callback message to report one of  NT_*_TYPE
   1130      */
   1131     void getPreferredNetworkType(Message response);
   1132 
   1133     /**
   1134      * Query neighboring cell ids
   1135      *
   1136      * @param response s callback message to cell ids
   1137      */
   1138     void getNeighboringCids(Message response);
   1139 
   1140     /**
   1141      * Request to enable/disable network state change notifications when
   1142      * location informateion (lac and/or cid) has changed.
   1143      *
   1144      * @param enable true to enable, false to disable
   1145      * @param response callback message
   1146      */
   1147     void setLocationUpdates(boolean enable, Message response);
   1148 
   1149     /**
   1150      * Gets the default SMSC address.
   1151      *
   1152      * @param result Callback message contains the SMSC address.
   1153      */
   1154     void getSmscAddress(Message result);
   1155 
   1156     /**
   1157      * Sets the default SMSC address.
   1158      *
   1159      * @param address new SMSC address
   1160      * @param result Callback message is empty on completion
   1161      */
   1162     void setSmscAddress(String address, Message result);
   1163 
   1164     /**
   1165      * Indicates whether there is storage available for new SMS messages.
   1166      * @param available true if storage is available
   1167      * @param result callback message
   1168      */
   1169     void reportSmsMemoryStatus(boolean available, Message result);
   1170 
   1171     /**
   1172      * Indicates to the vendor ril that StkService is running
   1173      * rand is eady to receive RIL_UNSOL_STK_XXXX commands.
   1174      *
   1175      * @param result callback message
   1176      */
   1177     void reportStkServiceIsRunning(Message result);
   1178 
   1179     void invokeOemRilRequestRaw(byte[] data, Message response);
   1180 
   1181     void invokeOemRilRequestStrings(String[] strings, Message response);
   1182 
   1183 
   1184     /**
   1185      * Send TERMINAL RESPONSE to the SIM, after processing a proactive command
   1186      * sent by the SIM.
   1187      *
   1188      * @param contents  String containing SAT/USAT response in hexadecimal
   1189      *                  format starting with first byte of response data. See
   1190      *                  TS 102 223 for details.
   1191      * @param response  Callback message
   1192      */
   1193     public void sendTerminalResponse(String contents, Message response);
   1194 
   1195     /**
   1196      * Send ENVELOPE to the SIM, after processing a proactive command sent by
   1197      * the SIM.
   1198      *
   1199      * @param contents  String containing SAT/USAT response in hexadecimal
   1200      *                  format starting with command tag. See TS 102 223 for
   1201      *                  details.
   1202      * @param response  Callback message
   1203      */
   1204     public void sendEnvelope(String contents, Message response);
   1205 
   1206     /**
   1207      * Accept or reject the call setup request from SIM.
   1208      *
   1209      * @param accept   true if the call is to be accepted, false otherwise.
   1210      * @param response Callback message
   1211      */
   1212     public void handleCallSetupRequestFromSim(boolean accept, Message response);
   1213 
   1214     /**
   1215      * Activate or deactivate cell broadcast SMS for GSM.
   1216      *
   1217      * @param activate
   1218      *            true = activate, false = deactivate
   1219      * @param result Callback message is empty on completion
   1220      */
   1221     public void setGsmBroadcastActivation(boolean activate, Message result);
   1222 
   1223     /**
   1224      * Configure cell broadcast SMS for GSM.
   1225      *
   1226      * @param response Callback message is empty on completion
   1227      */
   1228     public void setGsmBroadcastConfig(SmsBroadcastConfigInfo[] config, Message response);
   1229 
   1230     /**
   1231      * Query the current configuration of cell broadcast SMS of GSM.
   1232      *
   1233      * @param response
   1234      *        Callback message contains the configuration from the modem
   1235      *        on completion
   1236      */
   1237     public void getGsmBroadcastConfig(Message response);
   1238 
   1239     //***** new Methods for CDMA support
   1240 
   1241     /**
   1242      * Request the device ESN / MEID / IMEI / IMEISV.
   1243      * "response" is const char **
   1244      *   [0] is IMEI if GSM subscription is available
   1245      *   [1] is IMEISV if GSM subscription is available
   1246      *   [2] is ESN if CDMA subscription is available
   1247      *   [3] is MEID if CDMA subscription is available
   1248      */
   1249     public void getDeviceIdentity(Message response);
   1250 
   1251     /**
   1252      * Request the device MDN / H_SID / H_NID / MIN.
   1253      * "response" is const char **
   1254      *   [0] is MDN if CDMA subscription is available
   1255      *   [1] is a comma separated list of H_SID (Home SID) in decimal format
   1256      *       if CDMA subscription is available
   1257      *   [2] is a comma separated list of H_NID (Home NID) in decimal format
   1258      *       if CDMA subscription is available
   1259      *   [3] is MIN (10 digits, MIN2+MIN1) if CDMA subscription is available
   1260      */
   1261     public void getCDMASubscription(Message response);
   1262 
   1263     /**
   1264      * Send Flash Code.
   1265      * "response" is is NULL
   1266      *   [0] is a FLASH string
   1267      */
   1268     public void sendCDMAFeatureCode(String FeatureCode, Message response);
   1269 
   1270     /** Set the Phone type created */
   1271     void setPhoneType(int phoneType);
   1272 
   1273     /**
   1274      *  Query the CDMA roaming preference setting
   1275      *
   1276      * @param response is callback message to report one of  CDMA_RM_*
   1277      */
   1278     void queryCdmaRoamingPreference(Message response);
   1279 
   1280     /**
   1281      *  Requests to set the CDMA roaming preference
   1282      * @param cdmaRoamingType one of  CDMA_RM_*
   1283      * @param response is callback message
   1284      */
   1285     void setCdmaRoamingPreference(int cdmaRoamingType, Message response);
   1286 
   1287     /**
   1288      *  Requests to set the CDMA subscription mode
   1289      * @param cdmaSubscriptionType one of  CDMA_SUBSCRIPTION_*
   1290      * @param response is callback message
   1291      */
   1292     void setCdmaSubscription(int cdmaSubscriptionType, Message response);
   1293 
   1294     /**
   1295      *  Set the TTY mode for the CDMA phone
   1296      *
   1297      * @param enable is true to enable, false to disable
   1298      * @param response is callback message
   1299      */
   1300     void setTTYMode(int ttyMode, Message response);
   1301 
   1302     /**
   1303      *  Query the TTY mode for the CDMA phone
   1304      * (AsyncResult)response.obj).result is an int[] with element [0] set to
   1305      * 0 for disabled, 1 for enabled.
   1306      *
   1307      * @param response is callback message
   1308      */
   1309     void queryTTYMode(Message response);
   1310 
   1311     /**
   1312      * Setup a packet data connection On successful completion, the result
   1313      * message will return the following: [0] indicating PDP CID, which is
   1314      * generated by RIL. This Connection ID is used in both GSM/UMTS and CDMA
   1315      * modes [1] indicating the network interface name for GSM/UMTS or CDMA [2]
   1316      * indicating the IP address for this interface for GSM/UMTS and NULL in the
   1317      * case of CDMA
   1318      *
   1319      * @param radioTechnology
   1320      *            indicates whether to setup connection on radio technology CDMA
   1321      *            (0) or GSM/UMTS (1)
   1322      * @param profile
   1323      *            Profile Number or NULL to indicate default profile
   1324      * @param apn
   1325      *            the APN to connect to if radio technology is GSM/UMTS.
   1326      *            Otherwise null for CDMA.
   1327      * @param user
   1328      *            the username for APN, or NULL
   1329      * @param password
   1330      *            the password for APN, or NULL
   1331      * @param authType
   1332      *            the PAP / CHAP auth type. Values is one of SETUP_DATA_AUTH_*
   1333      * @param result
   1334      *            Callback message
   1335      */
   1336     public void setupDataCall(String radioTechnology, String profile, String apn,
   1337             String user, String password, String authType, Message result);
   1338 
   1339     /**
   1340      * Deactivate packet data connection
   1341      *
   1342      * @param cid
   1343      *            The connection ID
   1344      * @param result
   1345      *            Callback message is empty on completion
   1346      */
   1347     public void deactivateDataCall(int cid, Message result);
   1348 
   1349     /**
   1350      * Activate or deactivate cell broadcast SMS for CDMA.
   1351      *
   1352      * @param activate
   1353      *            true = activate, false = deactivate
   1354      * @param result
   1355      *            Callback message is empty on completion
   1356      */
   1357     public void setCdmaBroadcastActivation(boolean activate, Message result);
   1358 
   1359     /**
   1360      * Configure cdma cell broadcast SMS.
   1361      *
   1362      * @param result
   1363      *            Callback message is empty on completion
   1364      */
   1365     // TODO: Change the configValuesArray to a RIL_BroadcastSMSConfig
   1366     public void setCdmaBroadcastConfig(int[] configValuesArray, Message result);
   1367 
   1368     /**
   1369      * Query the current configuration of cdma cell broadcast SMS.
   1370      *
   1371      * @param result
   1372      *            Callback message contains the configuration from the modem on completion
   1373      */
   1374     public void getCdmaBroadcastConfig(Message result);
   1375 
   1376     /**
   1377      *  Requests the radio's system selection module to exit emergency callback mode.
   1378      *  This function should only be called from CDMAPHone.java.
   1379      *
   1380      * @param response callback message
   1381      */
   1382     public void exitEmergencyCallbackMode(Message response);
   1383 
   1384     /**
   1385      * Request the status of the ICC and UICC cards.
   1386      *
   1387      * @param response
   1388      *          Callback message containing {@link IccCardStatus} structure for the card.
   1389      */
   1390     public void getIccCardStatus(Message result);
   1391 }
   1392