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 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      */
    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      */
    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      */
    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      */
    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      */
    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      */
    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      */
    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      */
    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      */
    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      */
    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      */
    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      */
    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      */
    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      */
    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      */
    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      */
    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
    824     void getLastPdpFailCause (Message result);
    825 
    826     /**
    827      * The preferred new alternative to getLastPdpFailCause
    828      * that is also CDMA-compatible.
    829      */
    830     void getLastDataCallFailCause (Message result);
    831 
    832     void setMute (boolean enableMute, Message response);
    833 
    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      */
    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      */
    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      */
    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      */
    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      */
    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      */
    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      */
    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      */
    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      */
    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      */
    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      */
    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      */
    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      */
    950     void writeSmsToSim(int status, String smsc, String pdu, Message response);
    951 
    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      */
    961     void setupDefaultPDP(String apn, String user, String password, Message response);
    962 
    963     /**
    964      * @deprecated
    965      * @param cid
    966      * @param response
    967      */
    968     void deactivateDefaultPDP(int cid, Message response);
    969 
    970     void setRadioPower(boolean on, Message response);
    971 
    972     void acknowledgeLastIncomingGsmSms(boolean success, int cause, Message response);
    973 
    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      */
    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 
    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 
   1009     void getCLIR(Message response);
   1010 
   1011     /**
   1012      * clirMode is one of the CLIR_* constants above
   1013      *
   1014      * response.obj is null
   1015      */
   1016 
   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 
   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 
   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      */
   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      */
   1053     void queryCallForwardStatus(int cfReason, int serviceClass,
   1054             String number, Message response);
   1055 
   1056     void setNetworkSelectionModeAutomatic(Message response);
   1057 
   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 
   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      */
   1075     void getAvailableNetworks(Message response);
   1076 
   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 
   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      */
   1100     void setFacilityLock (String facility, boolean lockState, String password,
   1101         int serviceClass, Message response);
   1102 
   1103 
   1104     void sendUSSD (String ussdString, Message response);
   1105 
   1106     /**
   1107      * Cancels a pending USSD session if one exists.
   1108      * @param response callback message
   1109      */
   1110     void cancelPendingUssd (Message response);
   1111 
   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      */
   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      */
   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      */
   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      */
   1144     void getPreferredNetworkType(Message response);
   1145 
   1146     /**
   1147      * Query neighboring cell ids
   1148      *
   1149      * @param response s callback message to cell ids
   1150      */
   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      */
   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      */
   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      */
   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      */
   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      */
   1190     void reportStkServiceIsRunning(Message result);
   1191 
   1192     void invokeOemRilRequestRaw(byte[] data, Message response);
   1193 
   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      */
   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      */
   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      */
   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      */
   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      */
   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      */
   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      */
   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      */
   1274     public void getCDMASubscription(Message response);
   1275 
   1276     /**
   1277      * Send Flash Code.
   1278      * "response" is is NULL
   1279      *   [0] is a FLASH string
   1280      */
   1281     public void sendCDMAFeatureCode(String FeatureCode, Message response);
   1282 
   1283     /** Set the Phone type created */
   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      */
   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      */
   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      */
   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      */
   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      */
   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      */
   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      */
   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      */
   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
   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      */
   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      */
   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      */
   1414     public void getIccCardStatus(Message result);
   1415 }
   1416