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