Home | History | Annotate | Download | only in 1.0
      1 /*
      2  * Copyright (C) 2016 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 android.hardware.radio@1.0;
     18 
     19 import IRadioResponse;
     20 import IRadioIndication;
     21 
     22 /**
     23  * This interface is used by telephony & telecom to talk to cellular radio.
     24  * All the functions have minimum one parameter:
     25  * serial: which corresponds to serial no. of request. Serial numbers must only be memorized for the
     26  * duration of a method call. If clients provide colliding serials (including passing the same
     27  * serial to different methods), multiple responses (one for each method call) must still be served.
     28  */
     29 interface IRadio {
     30     /**
     31      * Set response functions for radio requests & radio indications.
     32      *
     33      * @param radioResponse Object containing response functions
     34      * @param radioIndication Object containing radio indications
     35      */
     36     setResponseFunctions(IRadioResponse radioResponse,
     37             IRadioIndication radioIndication);
     38 
     39     /**
     40      * Requests status of the ICC card
     41      *
     42      * @param serial Serial number of request.
     43      *
     44      * Response function is IRadioResponse.getIccCardStatusResponse()
     45      *
     46      */
     47     oneway getIccCardStatus(int32_t serial);
     48 
     49     /**
     50      * Supplies ICC PIN. Only called if CardStatus has AppState.PIN state
     51      *
     52      * @param serial Serial number of request.
     53      * @param pin PIN value
     54      * @param aid AID value, See ETSI 102.221 8.1 and 101.220 4, empty string if no value.
     55      *
     56      * Response function is IRadioResponse.supplyIccPinForAppResponse()
     57      *
     58      */
     59     oneway supplyIccPinForApp(int32_t serial, string pin, string aid);
     60 
     61     /**
     62      * Supplies ICC PUK and new PIN.
     63      *
     64      * @param serial Serial number of request.
     65      * @param puk PUK value
     66      * @param pin New PIN value
     67      * @param aid AID value, See ETSI 102.221 8.1 and 101.220 4, empty string if no value.
     68      *
     69      * Response function is IRadioResponse.supplyIccPukForAppResponse()
     70      *
     71      */
     72     oneway supplyIccPukForApp(int32_t serial, string puk, string pin, string aid);
     73 
     74     /**
     75      * Supplies ICC PIN2. Only called following operation where SIM_PIN2 was
     76      * returned as a a failure from a previous operation.
     77      *
     78      * @param serial Serial number of request.
     79      * @param pin2 PIN2 value
     80      * @param aid AID value, See ETSI 102.221 8.1 and 101.220 4, empty string if no value.
     81      *
     82      * Response function is IRadioResponse.supplyIccPin2ForAppResponse()
     83      *
     84      */
     85     oneway supplyIccPin2ForApp(int32_t serial, string pin2, string aid);
     86 
     87     /**
     88      * Supplies ICC PUK2 and new PIN2.
     89      *
     90      * @param serial Serial number of request.
     91      * @param puk2 PUK2 value
     92      * @param pin2 New PIN2 value
     93      * @param aid AID value, See ETSI 102.221 8.1 and 101.220 4, empty string if no value.
     94      *
     95      * Response function is IRadioResponse.supplyIccPuk2ForAppResponse()
     96      *
     97      */
     98     oneway supplyIccPuk2ForApp(int32_t serial, string puk2, string pin2,
     99             string aid);
    100 
    101     /**
    102      * Supplies old ICC PIN and new PIN.
    103      *
    104      * @param serial Serial number of request.
    105      * @param oldPin Old pin value
    106      * @param newPin New pin value
    107      * @param aid AID value, See ETSI 102.221 8.1 and 101.220 4, empty string if no value.
    108      *
    109      * Response function is IRadioResponse.changeIccPinForAppResponse()
    110      *
    111      */
    112     oneway changeIccPinForApp(int32_t serial, string oldPin, string newPin,
    113             string aid);
    114 
    115     /**
    116      * Supplies old ICC PIN2 and new PIN2.
    117      *
    118      * @param serial Serial number of request.
    119      * @param oldPin2 Old pin2 value
    120      * @param newPin2 New pin2 value
    121      * @param aid AID value, See ETSI 102.221 8.1 and 101.220 4, empty string if no value.
    122      *
    123      * Response function is IRadioResponse.changeIccPin2ForAppResponse()
    124      *
    125      */
    126     oneway changeIccPin2ForApp(int32_t serial, string oldPin2, string newPin2,
    127             string aid);
    128 
    129     /**
    130      * Requests that network personalization be deactivated
    131      *
    132      * @param serial Serial number of request.
    133      * @param netPin Network depersonlization code
    134      *
    135      * Response function is IRadioResponse.supplyNetworkDepersonalizationResponse()
    136      *
    137      */
    138     oneway supplyNetworkDepersonalization(int32_t serial, string netPin);
    139 
    140     /**
    141      * Requests current call list
    142      *
    143      * @param serial Serial number of request.
    144      *
    145      * Response function is IRadioResponse.getCurrentCallsResponse()
    146      *
    147      */
    148     oneway getCurrentCalls(int32_t serial);
    149 
    150     /**
    151      * Initiate voice call.
    152      * This method is never used for supplementary service codes
    153      *
    154      * @param serial Serial number of request.
    155      * @param dialInfo Dial struct
    156      *
    157      * Response function is IRadioResponse.dialResponse()
    158      *
    159      */
    160     oneway dial(int32_t serial, Dial dialInfo);
    161 
    162     /**
    163      * Get the SIM IMSI
    164      * Only valid when radio state is "RADIO_STATE_ON"
    165      *
    166      * @param serial Serial number of request.
    167      * @param aid AID value, See ETSI 102.221 8.1 and 101.220 4, empty string if no value.
    168      *
    169      * Response function is IRadioResponse.getImsiForAppResponse()
    170      *
    171      */
    172     oneway getImsiForApp(int32_t serial, string aid);
    173 
    174     /**
    175      * Hang up a specific line (like AT+CHLD=1x)
    176      * After this HANGUP request returns, Radio must show the connection is NOT
    177      * active anymore in next requestGetCurrentCalls query.
    178      *
    179      * @param serial Serial number of request.
    180      * @param gsmIndex Connection index (value of 'x' in CHLD above)
    181      *
    182      * Response function is IRadioResponse.hangupResponse()
    183      *
    184      */
    185     oneway hangup(int32_t serial, int32_t gsmIndex);
    186 
    187     /**
    188      * Hang up waiting or held (like AT+CHLD=0)
    189      * After this HANGUP request returns, Radio must show the connection is NOT
    190      * active anymore in next getCurrentCalls() query.
    191      *
    192      * @param serial Serial number of request.
    193      *
    194      * Response function is IRadioResponse.hangupWaitingOrBackgroundResponse()
    195      *
    196      */
    197     oneway hangupWaitingOrBackground(int32_t serial);
    198 
    199     /**
    200      * Hang up waiting or held (like AT+CHLD=1)
    201      * After this HANGUP request returns, Radio must show the connection is NOT
    202      * active anymore in next getCurrentCalls query.
    203      *
    204      * @param serial Serial number of request.
    205      *
    206      * Response function is IRadioResponse.hangupForegroundResumeBackgroundResponse()
    207      *
    208      */
    209     oneway hangupForegroundResumeBackground(int32_t serial);
    210 
    211     /**
    212      * Switch waiting or holding call and active call (like AT+CHLD=2)
    213      * State transitions must be as follows:
    214      *
    215      * Call transitions must happen as shown below.
    216      *
    217      *   BEFORE                               AFTER
    218      * Call 1   Call 2                 Call 1       Call 2
    219      * ACTIVE   HOLDING                HOLDING     ACTIVE
    220      * ACTIVE   WAITING                HOLDING     ACTIVE
    221      * HOLDING  WAITING                HOLDING     ACTIVE
    222      * ACTIVE   IDLE                   HOLDING     IDLE
    223      * IDLE     IDLE                   IDLE        IDLE
    224      *
    225      * @param serial Serial number of request.
    226      *
    227      * Response function is IRadioResponse.switchWaitingOrHoldingAndActiveResponse()
    228      *
    229      */
    230     oneway switchWaitingOrHoldingAndActive(int32_t serial);
    231 
    232     /**
    233      * Conference holding and active (like AT+CHLD=3)
    234      *
    235      * @param serial Serial number of request.
    236      *
    237      * Response function is IRadioResponse.conferenceResponse()
    238      *
    239      */
    240     oneway conference(int32_t serial);
    241 
    242     /**
    243      * Send UDUB (user determined user busy) to ringing or
    244      * waiting call answer)
    245      *
    246      * @param serial Serial number of request.
    247      *
    248      * Response function is IRadioResponse.rejectCallResponse()
    249      *
    250      */
    251     oneway rejectCall(int32_t serial);
    252 
    253     /**
    254      * Requests the failure cause code for the most recently terminated call.
    255      *
    256      * @param serial Serial number of request.
    257      *
    258      * Response function is IRadioResponse.getLastCallFailCauseResponse()
    259      *
    260      */
    261     oneway getLastCallFailCause(int32_t serial);
    262 
    263     /**
    264      * Requests current signal strength and associated information.
    265      * Must succeed if radio is on.
    266      *
    267      * @param serial Serial number of request.
    268      *
    269      * Response function is IRadioResponse.getSignalStrengthResponse()
    270      */
    271     oneway getSignalStrength(int32_t serial);
    272 
    273     /**
    274      * Request current voice registration state
    275      *
    276      * @param serial Serial number of request.
    277      *
    278      * Response function is IRadioResponse.getVoiceRegistrationStateResponse()
    279      */
    280     oneway getVoiceRegistrationState(int32_t serial);
    281 
    282     /**
    283      * Request current data registration state
    284      *
    285      * @param serial Serial number of request.
    286      *
    287      * Response function is IRadioResponse.getDataRegistrationStateResponse()
    288      */
    289     oneway getDataRegistrationState(int32_t serial);
    290 
    291     /**
    292      * Request current operator ONS or EONS
    293      *
    294      * @param serial Serial number of request.
    295      *
    296      * Response function is IRadioResponse.getOperatorResponse()
    297      */
    298     oneway getOperator(int32_t serial);
    299 
    300     /**
    301      * Toggle radio on and off (for "airplane" mode)
    302      * If the radio is turned off/on the radio modem subsystem
    303      * is expected return to an initialized state. For instance,
    304      * any voice and data calls must be terminated and all associated
    305      * lists emptied.
    306      *
    307      * @param serial Serial number of request.
    308      * @param on To turn on radio -> on = true, to turn off radio -> on = false.
    309      *
    310      * Response function is IRadioResponse.setRadioPowerResponse()
    311      */
    312     oneway setRadioPower(int32_t serial, bool on);
    313 
    314     /**
    315      * Send a DTMF tone
    316      *
    317      * If the implementation is currently playing a tone requested via
    318      * startDtmf(), that tone must be cancelled and the new tone
    319      * must be played instead
    320      *
    321      * @param serial Serial number of request.
    322      * @param s string with single char having one of 12 values: 0-9, *, #
    323      *
    324      * Response function is IRadioResponse.sendDtmfResponse()
    325      */
    326     oneway sendDtmf(int32_t serial, string s);
    327 
    328     /**
    329      * Send an SMS message
    330      *
    331      * @param serial Serial number of request.
    332      * @param message GsmSmsMessage as defined in types.hal
    333      *
    334      * Response function is IRadioResponse.sendSmsResponse()
    335      *
    336      * Based on the return error, caller decides to resend if sending sms
    337      * fails. RadioError:SMS_SEND_FAIL_RETRY means retry (i.e. error cause is 332)
    338      * and RadioError:GENERIC_FAILURE means no retry (i.e. error cause is 500)
    339      */
    340     oneway sendSms(int32_t serial, GsmSmsMessage message);
    341 
    342     /**
    343      * Send an SMS message. Identical to sendSms,
    344      * except that more messages are expected to be sent soon. If possible,
    345      * keep SMS relay protocol link open (eg TS 27.005 AT+CMMS command)
    346      *
    347      * @param serial Serial number of request.
    348      * @param message GsmSmsMessage as defined in types.hal
    349      *
    350      * Response function is IRadioResponse.sendSMSExpectMoreResponse()
    351      *
    352      * Based on the return error, caller decides to resend if sending sms
    353      * fails. RadioError:SMS_SEND_FAIL_RETRY means retry (i.e. error cause is 332)
    354      * and RadioError:GENERIC_FAILURE means no retry (i.e. error cause is 500)
    355      */
    356     oneway sendSMSExpectMore(int32_t serial, GsmSmsMessage message);
    357 
    358     /**
    359      * Setup a packet data connection. If DataCallResponse.status
    360      * return DataCallFailCause:NONE it is added to the list of data calls and a
    361      * unsolDataCallListChanged() is sent. The call remains in the
    362      * list until deactivateDataCall() is issued or the
    363      * radio is powered off/on. This list is returned by getDataCallList()
    364      * and dataCallListChanged().
    365      *
    366      * The Radio is expected to:
    367      *  - Create one data call context.
    368      *  - Create and configure a dedicated interface for the context
    369      *  - The interface must be point to point.
    370      *  - The interface is configured with one or more addresses and
    371      *    is capable of sending and receiving packets. The prefix length
    372      *    of the addresses must be /32 for IPv4 and /128 for IPv6.
    373      *  - Must NOT change the linux routing table.
    374      *  - Support up to getDataRegistrationState response[5]
    375      *    number of simultaneous data call contexts.
    376      *
    377      * @param serial Serial number of request.
    378      * @param radioTechnology Radio technology to use.
    379      * @param dataProfileInfo data profile info.
    380      * @param modemCognitive Indicating this profile was sent to the modem through setDataProfile
    381      *                       earlier.
    382      * @param roamingAllowed Indicating data roaming is allowed or not by the user.
    383      * @param isRoaming Indicating the device is roaming or not. The 'protocol' parameter in the old
    384      *                  RIL API must be filled accordingly based on the roaming condition.
    385      *                  Note this is for backward compatibility with the old radio modem. The modem
    386      *                  must not use this param for any other reason.
    387      *
    388      * Response function is IRadioResponse.setupDataCallResponse()
    389      */
    390     oneway setupDataCall(int32_t serial, RadioTechnology radioTechnology,
    391             DataProfileInfo dataProfileInfo, bool modemCognitive, bool roamingAllowed,
    392             bool isRoaming);
    393 
    394     /**
    395      * Request ICC I/O operation.
    396      * This is similar to the TS 27.007 "restricted SIM" operation
    397      * where it assumes all of the EF selection must be done by the
    398      * callee
    399      *
    400      * Arguments and responses that are unused for certain
    401      * values of "command" must be ignored or set to empty string
    402      *
    403      * @param serial Serial number of request.
    404      * @param iccIo IccIo
    405      *
    406      * Please note that IccIo has a "PIN2" field which may be empty string,
    407      * or may specify a PIN2 for operations that require a PIN2 (eg
    408      * updating FDN records)
    409      *
    410      * Response function is IRadioResponse.iccIOForAppResponse()
    411      */
    412     oneway iccIOForApp(int32_t serial, IccIo iccIo);
    413 
    414     /**
    415      * Send a USSD message.
    416      *
    417      * If a USSD session already exists, the message must be sent in the
    418      * context of that session. Otherwise, a new session must be created.
    419      *
    420      * The network reply must be reported via unsolOnUssd
    421      *
    422      * Only one USSD session must exist at a time, and the session is assumed
    423      * to exist until:
    424      * a) The android system invokes cancelUssd()
    425      * b) The implementation sends a unsolOnUssd() with a type code
    426      * of "0" (USSD-Notify/no further action) or "2" (session terminated)
    427      *
    428      * @param serial Serial number of request.
    429      * @param ussd string containing the USSD request in UTF-8 format
    430      *
    431      * Response function is IRadioResponse.sendUssdResponse()
    432      *
    433      * See also requestCancelUssd, unsolOnUssd
    434      */
    435     oneway sendUssd(int32_t serial, string ussd);
    436 
    437     /**
    438      * Cancel the current USSD session if one exists.
    439      *
    440      * @param serial Serial number of request.
    441      *
    442      * Response function is IRadioResponse.cancelPendingUssdResponse()
    443      */
    444     oneway cancelPendingUssd(int32_t serial);
    445 
    446     /**
    447      * Gets current CLIR status
    448      *
    449      * @param serial Serial number of request.
    450      *
    451      * Response function is IRadioResponse.getClirResponse()
    452      */
    453     oneway getClir(int32_t serial);
    454 
    455     /**
    456      * Set current CLIR status
    457      *
    458      * @param serial Serial number of request.
    459      * @param status "n" parameter from TS 27.007 7.7
    460      *
    461      * Response function is IRadioResponse.setClirResponse()
    462      */
    463     oneway setClir(int32_t serial, int32_t status);
    464 
    465     /**
    466      * Request call forward status.
    467      *
    468      * @param serial Serial number of request.
    469      * @param callInfo CallForwardInfo
    470      *
    471      * Response function is IRadioResponse.getCallForwardStatusResponse()
    472      */
    473     oneway getCallForwardStatus(int32_t serial,
    474             CallForwardInfo callInfo);
    475 
    476     /**
    477      * Configure call forward rule
    478      *
    479      * @param serial Serial number of request.
    480      * @param callInfo CallForwardInfo
    481      *
    482      * Response function is IRadioResponse.setCallForwardResponse()
    483      */
    484     oneway setCallForward(int32_t serial, CallForwardInfo callInfo);
    485 
    486     /**
    487      * Query current call waiting state
    488      *
    489      * @param serial Serial number of request.
    490      * @param serviceClass Service class is the TS 27.007 service class to query
    491      *
    492      * Response function is IRadioResponse.getCallWaitingResponse()
    493      */
    494     oneway getCallWaiting(int32_t serial, int32_t serviceClass);
    495 
    496     /**
    497      * Configure current call waiting state
    498      *
    499      * @param serial Serial number of request.
    500      * @param enable is false for "disabled" and true for "enabled"
    501      * @param serviceClass is the TS 27.007 service class bit vector of services to modify
    502      *
    503      * Response function is IRadioResponse.setCallWaitingResponse()
    504      */
    505     oneway setCallWaiting(int32_t serial, bool enable,
    506             int32_t serviceClass);
    507 
    508     /**
    509      * Acknowledge successful or failed receipt of SMS previously indicated
    510      * via unsolResponseNewSms
    511      *
    512      * @param serial Serial number of request.
    513      * @param success is true on successful receipt
    514      *        (basically, AT+CNMA=1 from TS 27.005 is 0 on failed receipt
    515      *        (basically, AT+CNMA=2 from TS 27.005)
    516      * @param cause: if success is false, this contains the failure cause as defined
    517      *        in TS 23.040, 9.2.3.22.
    518      *
    519      * Response function is IRadioResponse.acknowledgeLastIncomingGsmSmsResponse()
    520      */
    521     oneway acknowledgeLastIncomingGsmSms(int32_t serial, bool success,
    522             SmsAcknowledgeFailCause cause);
    523 
    524     /**
    525      * Answer incoming call
    526      * Must not be called for WAITING calls.
    527      * switchWaitingOrHoldingAndActive() must be used in this case
    528      * instead
    529      *
    530      * @param serial Serial number of request.
    531      *
    532      * Response function is IRadioResponse.acceptCallResponse()
    533      */
    534     oneway acceptCall(int32_t serial);
    535 
    536     /**
    537      * Deactivate packet data connection and remove from the
    538      * data call list if RadioError:NONE is returned. Any other return
    539      * values must also try to remove the call from the list. An
    540      * unsolDataCallListChanged must be
    541      * issued because of an deactivateDataCall.
    542      *
    543      * @param serial Serial number of request.
    544      * @param cid Indicates CID
    545      * @param reasonRadioShutDown Indicates Disconnect Reason
    546      *        false => No specific reason specified
    547      *        true => Radio shutdown requested
    548      *
    549      * Response function is IRadioResponse.deactivateDataCallResponse()
    550      */
    551     oneway deactivateDataCall(int32_t serial, int32_t cid,
    552             bool reasonRadioShutDown);
    553 
    554     /**
    555      * Query the status of a facility lock state
    556      *
    557      * @param serial Serial number of request.
    558      * @param facility is the facility string code from TS 27.007 7.4
    559      *        (eg "AO" for BAOC, "SC" for SIM lock)
    560      * @param password is the password, or "" if not required
    561      * @param serviceClass is the TS 27.007 service class bit vector of services to query
    562      * @param appId is AID value, See ETSI 102.221 8.1 and 101.220 4, empty string if no value.
    563      *        This is only applicable in the case of Fixed Dialing Numbers (FDN) requests.
    564      *
    565      * Response function is IRadioResponse.getFacilityLockForAppResponse()
    566      */
    567     oneway getFacilityLockForApp(int32_t serial, string facility,
    568             string password, int32_t serviceClass, string appId);
    569 
    570     /**
    571      * Enable/disable one facility lock
    572      *
    573      * @param serial Serial number of request.
    574      * @param facility is the facility string code from TS 27.007 7.4 (eg "AO" for BAOC)
    575      * @param lockState false for "unlock" and true for "lock"
    576      * @param password is the password
    577      * @param serviceClass is string representation of decimal TS 27.007
    578      *        service class bit vector. Eg, the string
    579      *        "1" means "set this facility for voice services"
    580      * @param appId is AID value, See ETSI 102.221 8.1 and 101.220 4, empty string if no value.
    581      *        This is only applicable in the case of Fixed Dialing Numbers (FDN) requests.
    582      *
    583      * Response function is IRadioResponse.setFacilityLockForAppResponse()
    584      */
    585     oneway setFacilityLockForApp(int32_t serial, string facility, bool lockState,
    586             string password, int32_t serviceClass, string appId);
    587 
    588     /**
    589      * Change call barring facility password
    590      *
    591      * @param serial Serial number of request.
    592      * @param facility facility string code from TS 27.007 7.4 (eg "AO" for BAOC)
    593      * @param oldPassword old password
    594      * @param newPassword new password
    595      *
    596      * Response function is IRadioResponse.setBarringPasswordResponse()
    597      */
    598     oneway setBarringPassword(int32_t serial, string facility,
    599             string oldPassword, string newPassword);
    600 
    601     /**
    602      * Query current network selection mode
    603      *
    604      * @param serial Serial number of request.
    605      *
    606      * Response function is IRadioResponse.getNetworkSelectionModeResponse()
    607      */
    608     oneway getNetworkSelectionMode(int32_t serial);
    609 
    610     /**
    611      * Specify that the network must be selected automatically.
    612      * This request must not respond until the new operator is selected and registered.
    613      *
    614      * @param serial Serial number of request.
    615      *
    616      * Response function is IRadioResponse.setNetworkSelectionModeAutomaticResponse()
    617      */
    618     oneway setNetworkSelectionModeAutomatic(int32_t serial);
    619 
    620     /**
    621      * Manually select a specified network.
    622      * This request must not respond until the new operator is selected and registered.
    623      *
    624      * @param serial Serial number of request.
    625      * @param operatorNumeric string specifying MCCMNC of network to select (eg "310170")
    626      *
    627      * Response function is IRadioResponse.setNetworkSelectionModeManualResponse()
    628      */
    629     oneway setNetworkSelectionModeManual(int32_t serial, string operatorNumeric);
    630 
    631     /**
    632      * Scans for available networks
    633      *
    634      * @param serial Serial number of request.
    635      *
    636      * Response function is IRadioResponse.getAvailableNetworksResponse()
    637      */
    638     oneway getAvailableNetworks(int32_t serial);
    639 
    640     /**
    641      * Start playing a DTMF tone. Continue playing DTMF tone until
    642      * stopDtmf is received.
    643      * If a startDtmf() is received while a tone is currently playing,
    644      * it must cancel the previous tone and play the new one.
    645      *
    646      * @param serial Serial number of request.
    647      * @param s string having a single character with one of 12 values: 0-9,*,#
    648      *
    649      * Response function is IRadioResponse.startDtmfResponse()
    650      */
    651     oneway startDtmf(int32_t serial, string s);
    652 
    653     /**
    654      * Stop playing a currently playing DTMF tone.
    655      *
    656      * @param serial Serial number of request.
    657      *
    658      * Response function is IRadioResponse.stopDtmfResponse()
    659      */
    660     oneway stopDtmf(int32_t serial);
    661 
    662     /**
    663      * Return string value indicating baseband version, eg response from AT+CGMR
    664      *
    665      * @param serial Serial number of request.
    666      *
    667      * Response function is IRadioResponse.getBasebandVersionResponse()
    668      */
    669     oneway getBasebandVersion(int32_t serial);
    670 
    671     /**
    672      * Separate a party from a multiparty call placing the multiparty call
    673      * (less the specified party) on hold and leaving the specified party
    674      * as the only other member of the current (active) call
    675      *
    676      * Like AT+CHLD=2x
    677      *
    678      * See TS 22.084 1.3.8.2 (iii)
    679      * TS 22.030 6.5.5 "Entering "2X followed by send"
    680      * TS 27.007 "AT+CHLD=2x"
    681      *
    682      * @param serial Serial number of request.
    683      * @param gsmIndex contains Connection index (value of 'x' in CHLD above)
    684      *
    685      * Response function is IRadioResponse.separateConnectionResponse()
    686      */
    687     oneway separateConnection(int32_t serial, int32_t gsmIndex);
    688 
    689     /**
    690      * Turn on or off uplink (microphone) mute.
    691      * Must only be sent while voice call is active.
    692      * Must always be reset to "disable mute" when a new voice call is initiated
    693      *
    694      * @param serial Serial number of request.
    695      * @param enable true for "enable mute" and false for "disable mute"
    696      *
    697      * Response function is IRadioResponse.setMuteResponse()
    698      */
    699     oneway setMute(int32_t serial, bool enable);
    700 
    701     /**
    702      * Queries the current state of the uplink mute setting
    703      *
    704      * @param serial Serial number of request.
    705      *
    706      * Response function is IRadioResponse.getMuteResponse()
    707      */
    708     oneway getMute(int32_t serial);
    709 
    710     /**
    711      * Queries the status of the CLIP supplementary service
    712      * (for MMI code "*#30#")
    713      *
    714      * @param serial Serial number of request.
    715      *
    716      * Response function is IRadioResponse.getClipResponse()
    717      */
    718     oneway getClip(int32_t serial);
    719 
    720     /**
    721      * Returns the data call list. An entry is added when a
    722      * setupDataCall() is issued and removed on a
    723      * deactivateDataCall(). The list is emptied when
    724      * setRadioPower() off/on is issued.
    725      *
    726      * @param serial Serial number of request.
    727      *
    728      * Response function is IRadioResponse.getDataCallListResponse()
    729      */
    730     oneway getDataCallList(int32_t serial);
    731 
    732     /**
    733      * Enables/disables supplementary service related notifications from the network.
    734      * Notifications are reported via unsolSuppSvcNotification().
    735      *
    736      * @param serial Serial number of request.
    737      * @param enable true = notifications enabled, false = notifications disabled.
    738      *
    739      * Response function is IRadioResponse.setSuppServiceNotificationsResponse()
    740      */
    741     oneway setSuppServiceNotifications(int32_t serial, bool enable);
    742 
    743     /**
    744      * Stores a SMS message to SIM memory.
    745      *
    746      * @param serial Serial number of request.
    747      * @param smsWriteArgs SmsWriteArgs defined in types.hal
    748      *
    749      * Response function is IRadioResponse.writeSmsToSimResponse()
    750      */
    751     oneway writeSmsToSim(int32_t serial, SmsWriteArgs smsWriteArgs);
    752 
    753     /**
    754      * Deletes a SMS message from SIM memory.
    755      *
    756      * @param serial Serial number of request.
    757      * @param index Record index of the message to delete.
    758      *
    759      * Response function is IRadioResponse.deleteSmsOnSimResponse()
    760      */
    761     oneway deleteSmsOnSim(int32_t serial, int32_t index);
    762 
    763     /**
    764      * Assign a specified band for RF configuration.
    765      *
    766      * @param serial Serial number of request.
    767      * @param mode RadioBandMode defined in types.hal
    768      *
    769      * Response function is IRadioResponse.setBandModeResponse()
    770      */
    771     oneway setBandMode(int32_t serial, RadioBandMode mode);
    772 
    773     /**
    774      * Get the list of band modes supported by RF.
    775      *
    776      * @param serial Serial number of request.
    777      *
    778      * Response function is IRadioResponse.getAvailableBandModesResponse()
    779      */
    780     oneway getAvailableBandModes(int32_t serial);
    781 
    782     /**
    783      * Requests to send a SAT/USAT envelope command to SIM.
    784      * The SAT/USAT envelope command refers to 3GPP TS 11.14 and 3GPP TS 31.111
    785      *
    786      * @param serial Serial number of request.
    787      * @param command SAT/USAT command in hexadecimal format string starting with command tag
    788      *
    789      * Response function is IRadioResponse.sendEnvelopeResponse()
    790      */
    791     oneway sendEnvelope(int32_t serial, string command);
    792 
    793     /**
    794      * Requests to send a terminal response to SIM for a received proactive command
    795      *
    796      * @param serial Serial number of request.
    797      * @param commandResponse SAT/USAT response in hexadecimal format string starting with
    798      *        first byte of response data
    799      *
    800      * Response function is IRadioResponse.sendTerminalResponseResponseToSim()
    801      */
    802     oneway sendTerminalResponseToSim(int32_t serial, string commandResponse);
    803 
    804     /**
    805      * When STK application gets stkCallSetup(), the call actually has
    806      * been initialized by mobile device already. (We could see the call has been in the 'call
    807      * list') So, STK application needs to accept/reject the call according to user
    808      * operations.
    809      *
    810      * @param serial Serial number of request.
    811      * @param accept true = accept the call setup, false = reject the call setup
    812      *
    813      * Response callback is IRadioResponse.handleStkCallSetupRequestFromSimResponse()
    814      */
    815     oneway handleStkCallSetupRequestFromSim(int32_t serial,
    816             bool accept);
    817 
    818     /**
    819      * Connects the two calls and disconnects the subscriber from both calls.
    820      *
    821      * @param serial Serial number of request.
    822      *
    823      * Response callback is IRadioResponse.explicitCallTransferResponse()
    824      */
    825     oneway explicitCallTransfer(int32_t serial);
    826 
    827     /**
    828      * Requests to set the preferred network type for searching and registering
    829      * (CS/PS domain, RAT, and operation mode)
    830      *
    831      * @param serial Serial number of request.
    832      * @param nwType PreferredNetworkType defined in types.hal
    833      *
    834      * Response callback is IRadioResponse.setPreferredNetworkTypeResponse()
    835      */
    836     oneway setPreferredNetworkType(int32_t serial,
    837             PreferredNetworkType nwType);
    838 
    839     /**
    840      * Query the preferred network type (CS/PS domain, RAT, and operation mode)
    841      * for searching and registering
    842      *
    843      * @param serial Serial number of request.
    844      *
    845      * Response callback is IRadioResponse.getPreferredNetworkTypeResponse()
    846      */
    847     oneway getPreferredNetworkType(int32_t serial);
    848 
    849     /**
    850      * Request neighboring cell id in GSM network
    851      *
    852      * @param serial Serial number of request.
    853      *
    854      * Response callback is IRadioResponse.getNeighboringCidsResponse()
    855      */
    856     oneway getNeighboringCids(int32_t serial);
    857 
    858     /**
    859      * Enables/disables network state change notifications due to changes in
    860      * LAC and/or CID (for GSM) or BID/SID/NID/latitude/longitude (for CDMA).
    861      * Basically +CREG=2 vs. +CREG=1 (TS 27.007).
    862      * Note:  The Radio implementation must default to "updates enabled"
    863      * when the screen is on and "updates disabled" when the screen is off.
    864      *
    865      * @param serial Serial number of request.
    866      * @param enable true = updates enabled (+CREG=2), false = updates disabled (+CREG=1)
    867      *
    868      * Response callback is IRadioResponse.setLocationUpdatesResponse()
    869      */
    870     oneway setLocationUpdates(int32_t serial, bool enable);
    871 
    872     /**
    873      * Request to set the location where the CDMA subscription shall
    874      * be retrieved
    875      *
    876      * @param serial Serial number of request.
    877      * @param cdmaSub CdmaSubscriptionSource
    878      *
    879      * Response callback is IRadioResponse.setCdmaSubscriptionSourceResponse()
    880      */
    881     oneway setCdmaSubscriptionSource(int32_t serial,
    882             CdmaSubscriptionSource cdmaSub);
    883 
    884     /**
    885      * Request to set the roaming preferences in CDMA
    886      *
    887      * @param serial Serial number of request.
    888      * @param type CdmaRoamingType defined in types.hal
    889      *
    890      * Response callback is IRadioResponse.setCdmaRoamingPreferenceResponse()
    891      */
    892     oneway setCdmaRoamingPreference(int32_t serial,
    893             CdmaRoamingType type);
    894 
    895     /**
    896      * Request the actual setting of the roaming preferences in CDMA in the modem
    897      *
    898      * @param serial Serial number of request.
    899      *
    900      * Response callback is IRadioResponse.getCdmaRoamingPreferenceResponse()
    901      */
    902     oneway getCdmaRoamingPreference(int32_t serial);
    903 
    904     /**
    905      * Request to set the TTY mode
    906      *
    907      * @param serial Serial number of request.
    908      * @param mode TtyMode
    909      *
    910      * Response callback is IRadioResponse.setTTYModeResponse()
    911      */
    912     oneway setTTYMode(int32_t serial, TtyMode mode);
    913 
    914     /**
    915      * Request the setting of TTY mode
    916      *
    917      * @param serial Serial number of request.
    918      *
    919      * Response callback is IRadioResponse.getTTYModeResponse()
    920      */
    921     oneway getTTYMode(int32_t serial);
    922 
    923     /**
    924      * Request to set the preferred voice privacy mode used in voice scrambling.
    925      *
    926      * @param serial Serial number of request.
    927      * @param enable false for Standard Privacy Mode (Public Long Code Mask)
    928      *        true for Enhanced Privacy Mode (Private Long Code Mask)
    929      *
    930      * Response callback is IRadioResponse.setPreferredVoicePrivacyResponse()
    931      */
    932     oneway setPreferredVoicePrivacy(int32_t serial, bool enable);
    933 
    934     /**
    935      * Request the setting of preferred voice privacy mode.
    936      *
    937      * @param serial Serial number of request.
    938      *
    939      * Response callback is IRadioResponse.getPreferredVoicePrivacyResponse()
    940      */
    941     oneway getPreferredVoicePrivacy(int32_t serial);
    942 
    943     /**
    944      * Send FLASH command
    945      *
    946      * @param serial Serial number of request.
    947      * @param featureCode String associated with Flash command
    948      *
    949      * Response callback is IRadioResponse.sendCDMAFeatureCodeResponse()
    950      */
    951     oneway sendCDMAFeatureCode(int32_t serial, string featureCode);
    952 
    953     /**
    954      * Send DTMF string
    955      *
    956      * @param serial Serial number of request.
    957      * @param dtmf DTMF string
    958      * @param on DTMF ON length in milliseconds, or 0 to use default
    959      * @param off is the DTMF OFF length in milliseconds, or 0 to use default
    960      *
    961      * Response callback is IRadioResponse.sendBurstDtmfResponse()
    962      */
    963     oneway sendBurstDtmf(int32_t serial, string dtmf, int32_t on, int32_t off);
    964 
    965     /**
    966      * Send a CDMA SMS message
    967      *
    968      * @param serial Serial number of request.
    969      * @param sms Cdma Sms to be sent described by CdmaSmsMessage in types.hal
    970      *
    971      * Response callback is IRadioResponse.sendCdmaSmsResponse()
    972      */
    973     oneway sendCdmaSms(int32_t serial, CdmaSmsMessage sms);
    974 
    975     /**
    976      * Acknowledge the success or failure in the receipt of SMS
    977      * previously indicated via responseCdmaNewSms()
    978      *
    979      * @param serial Serial number of request.
    980      * @param smsAck Cdma Sms ack to be sent described by CdmaSmsAck in types.hal
    981      *
    982      * Response callback is IRadioResponse.acknowledgeLastIncomingCdmaSmsResponse()
    983      */
    984     oneway acknowledgeLastIncomingCdmaSms(int32_t serial, CdmaSmsAck smsAck);
    985 
    986     /**
    987      * Request the setting of GSM/WCDMA Cell Broadcast SMS config.
    988      *
    989      * @param serial Serial number of request.
    990      *
    991      * Response callback is IRadioResponse.getGsmBroadcastConfigResponse()
    992      */
    993     oneway getGsmBroadcastConfig(int32_t serial);
    994 
    995     /**
    996      * Set GSM/WCDMA Cell Broadcast SMS config
    997      *
    998      * @param serial Serial number of request.
    999      * @param configInfo Setting of GSM/WCDMA Cell broadcast config
   1000      *
   1001      * Response callback is IRadioResponse.setGsmBroadcastConfigResponse()
   1002      */
   1003     oneway setGsmBroadcastConfig(int32_t serial, vec<GsmBroadcastSmsConfigInfo> configInfo);
   1004 
   1005     /**
   1006      * Enable or disable the reception of GSM/WCDMA Cell Broadcast SMS
   1007      *
   1008      * @param serial Serial number of request.
   1009      * @param activate indicates to activate or turn off the reception of GSM/WCDMA
   1010      *        Cell Broadcast SMS. true = activate, false = turn off
   1011      *
   1012      * Response callback is IRadioResponse.setGsmBroadcastActivationResponse()
   1013      */
   1014     oneway setGsmBroadcastActivation(int32_t serial, bool activate);
   1015 
   1016     /**
   1017      * Request the setting of CDMA Broadcast SMS config
   1018      *
   1019      * @param serial Serial number of request.
   1020      *
   1021      * Response callback is IRadioResponse.getCdmaBroadcastConfigResponse()
   1022      */
   1023     oneway getCdmaBroadcastConfig(int32_t serial);
   1024 
   1025     /**
   1026      * Set CDMA Broadcast SMS config
   1027      *
   1028      * @param serial Serial number of request.
   1029      * @param configInfo CDMA Broadcast SMS config to be set.
   1030      *
   1031      * Response callback is IRadioResponse.setCdmaBroadcastConfigResponse()
   1032      */
   1033     oneway setCdmaBroadcastConfig(int32_t serial, vec<CdmaBroadcastSmsConfigInfo> configInfo);
   1034 
   1035     /**
   1036      * Enable or disable the reception of CDMA Cell Broadcast SMS
   1037      *
   1038      * @param serial Serial number of request.
   1039      * @param activate indicates to activate or turn off the reception of CDMA
   1040      *        Cell Broadcast SMS. true = activate, false = turn off
   1041      *
   1042      * Response callback is IRadioResponse.setCdmaBroadcastActivationResponse()
   1043      */
   1044     oneway setCdmaBroadcastActivation(int32_t serial, bool activate);
   1045 
   1046     /**
   1047      * Request the device MDN / H_SID / H_NID.
   1048      * The request is only allowed when CDMA subscription is available. When CDMA
   1049      * subscription is changed, application layer must re-issue the request to
   1050      * update the subscription information.
   1051      *
   1052      * @param serial Serial number of request.
   1053      *
   1054      * Response callback is IRadioResponse.getCDMASubscriptionResponse()
   1055      */
   1056     oneway getCDMASubscription(int32_t serial);
   1057 
   1058     /**
   1059      * Stores a CDMA SMS message to RUIM memory.
   1060      *
   1061      * @param serial Serial number of request.
   1062      * @param cdmaSms CDMA message as defined by CdmaSmsWriteArgs in types.hal
   1063      *
   1064      * Response callback is IRadioResponse.writeSmsToRuimResponse()
   1065      */
   1066     oneway writeSmsToRuim(int32_t serial, CdmaSmsWriteArgs cdmaSms);
   1067 
   1068     /**
   1069      * Deletes a CDMA SMS message from RUIM memory.
   1070      *
   1071      * @param serial Serial number of request.
   1072      * @param index record index of the message to delete
   1073      *
   1074      * Response callback is IRadioResponse.deleteSmsOnRuimResponse()
   1075      */
   1076     oneway deleteSmsOnRuim(int32_t serial, int32_t index);
   1077 
   1078     /**
   1079      * Request the device ESN / MEID / IMEI / IMEISV.
   1080      * The request is always allowed and contains GSM and CDMA device identity.
   1081      * When CDMA subscription is changed the ESN/MEID changes. The application
   1082      * layer must re-issue the request to update the device identity in this case.
   1083      *
   1084      * @param serial Serial number of request.
   1085      *
   1086      * Response callback is IRadioResponse.getDeviceIdentityResponse()
   1087      */
   1088     oneway getDeviceIdentity(int32_t serial);
   1089 
   1090     /**
   1091      * Request the radio's system selection module to exit emergency
   1092      * callback mode. Radio must not respond with SUCCESS until the modem has
   1093      * completely exited from Emergency Callback Mode.
   1094      *
   1095      * @param serial Serial number of request.
   1096      *
   1097      * Response callback is IRadioResponse.exitEmergencyCallbackModeResponse()
   1098      */
   1099     oneway exitEmergencyCallbackMode(int32_t serial);
   1100 
   1101     /**
   1102      * Get the default Short Message Service Center address on the device.
   1103      *
   1104      * @param serial Serial number of request.
   1105      *
   1106      * Response callback is IRadioResponse.getSmscAddressResponse()
   1107      */
   1108     oneway getSmscAddress(int32_t serial);
   1109 
   1110     /**
   1111      * Set the default Short Message Service Center address on the device.
   1112      *
   1113      * @param serial Serial number of request.
   1114      * @param smsc Short Message Service Center address to set
   1115      *
   1116      * Response callback is IRadioResponse.setSmscAddressResponse()
   1117      */
   1118     oneway setSmscAddress(int32_t serial, string smsc);
   1119 
   1120     /**
   1121      * Indicates whether there is storage available for new SMS messages.
   1122      *
   1123      * @param serial Serial number of request.
   1124      * @param available true if memory is available for storing new messages,
   1125      *        false if memory capacity is exceeded
   1126      *
   1127      * Response callback is IRadioResponse.reportSmsMemoryStatusResponse()
   1128      */
   1129     oneway reportSmsMemoryStatus(int32_t serial, bool available);
   1130 
   1131     /**
   1132      * Indicates that the StkService is running and is
   1133      * ready to receive unsolicited stkXXXXX commands.
   1134      *
   1135      * @param serial Serial number of request.
   1136      *
   1137      * Response callback is IRadioResponse.reportStkServiceIsRunningResponse()
   1138      */
   1139     oneway reportStkServiceIsRunning(int32_t serial);
   1140 
   1141     /**
   1142      * Request to query the location where the CDMA subscription shall be retrieved.
   1143      *
   1144      * @param serial Serial number of request.
   1145      *
   1146      * Response callback is IRadioResponse.getCdmaSubscriptionSourceResponse()
   1147      */
   1148     oneway getCdmaSubscriptionSource(int32_t serial);
   1149 
   1150     /**
   1151      * Request the ISIM application on the UICC to perform AKA
   1152      * challenge/response algorithm for IMS authentication
   1153      *
   1154      * @param serial Serial number of request.
   1155      * @param challenge challenge string in Base64 format
   1156      *
   1157      * Response callback is IRadioResponse.requestIsimAuthenticationResponse()
   1158      */
   1159     oneway requestIsimAuthentication(int32_t serial, string challenge);
   1160 
   1161     /**
   1162      * Acknowledge successful or failed receipt of SMS previously indicated
   1163      * via unsol responseNewSms(), including acknowledgement TPDU to send
   1164      * as the RP-User-Data element of the RP-ACK or RP-ERROR PDU.
   1165      *
   1166      * @param serial Serial number of request.
   1167      * @param success true on successful receipt (send RP-ACK)
   1168      *        false on failed receipt (send RP-ERROR)
   1169      * @param ackPdu acknowledgement TPDU in hexadecimal format
   1170      *
   1171      * Response callback is IRadioResponse.acknowledgeIncomingGsmSmsWithPduResponse()
   1172      */
   1173     oneway acknowledgeIncomingGsmSmsWithPdu(int32_t serial, bool success, string ackPdu);
   1174 
   1175     /**
   1176      * Requests to send a SAT/USAT envelope command to SIM.
   1177      * The SAT/USAT envelope command refers to 3GPP TS 11.14 and 3GPP TS 31.111.
   1178      *
   1179      * This request has one difference from sendEnvelope():
   1180      * the SW1 and SW2 status bytes from the UICC response are returned along with
   1181      * the response data, using the same structure as iccIOForApp().
   1182      *
   1183      * The implementation must perform normal processing of a '91XX'
   1184      * response in SW1/SW2 to retrieve the pending proactive command and send it
   1185      * as an unsolicited response, as sendEnvelope() does.
   1186      *
   1187      * @param serial Serial number of request.
   1188      * @param contents SAT/USAT command in hexadecimal format starting with command tag
   1189      *
   1190      * Response callback is IRadioResponse.sendEnvelopeWithStatusResponse()
   1191      */
   1192     oneway sendEnvelopeWithStatus(int32_t serial, string contents);
   1193 
   1194     /**
   1195      * Query the radio technology type (3GPP/3GPP2) used for voice. Query is valid only
   1196      * when radio state is not RADIO_STATE_UNAVAILABLE
   1197      *
   1198      * @param serial Serial number of request.
   1199      *
   1200      * Response callback is IRadioResponse.getVoiceRadioTechnologyResponse()
   1201      */
   1202     oneway getVoiceRadioTechnology(int32_t serial);
   1203 
   1204     /**
   1205      * Request all of the current cell information known to the radio. The radio
   1206      * must return list of all current cells, including the neighboring cells. If for a particular
   1207      * cell information isn't known then the appropriate unknown value will be returned.
   1208      * This does not cause or change the rate of unsolicited cellInfoList().
   1209      *
   1210      * @param serial Serial number of request.
   1211      *
   1212      * Response callback is IRadioResponse.getCellInfoListResponse()
   1213      */
   1214     oneway getCellInfoList(int32_t serial);
   1215 
   1216     /**
   1217      * Sets the minimum time between when unsolicited cellInfoList() must be invoked.
   1218      * A value of 0, means invoke cellInfoList() when any of the reported
   1219      * information changes. Setting the value to INT_MAX(0x7fffffff) means never issue
   1220      * a unsolicited cellInfoList().
   1221      *
   1222      * @param serial Serial number of request.
   1223      * @param rate minimum time in milliseconds to indicate time between unsolicited cellInfoList()
   1224      *
   1225      * Response callback is IRadioResponse.setCellInfoListRateResponse()
   1226      */
   1227     oneway setCellInfoListRate(int32_t serial, int32_t rate);
   1228 
   1229     /**
   1230      * Set an apn to initial attach network
   1231      *
   1232      * @param serial Serial number of request.
   1233      * @param dataProfileInfo data profile containing APN settings
   1234      * @param modemCognitive indicating the data profile was sent to the modem through
   1235      *                       setDataProfile earlier.
   1236      * @param isRoaming Indicating the device is roaming or not. The 'protocol' parameter in the old
   1237      *                  RIL_InitialAttachApn must be filled accordingly based on the roaming
   1238      *                  condition. Note this is for backward compatibility with the old radio modem.
   1239      *                  The modem must not use this param for any other reason.
   1240      *
   1241      * Response callback is IRadioResponse.setInitialAttachApnResponse()
   1242      */
   1243     oneway setInitialAttachApn(int32_t serial, DataProfileInfo dataProfileInfo,
   1244             bool modemCognitive, bool isRoaming);
   1245 
   1246     /**
   1247      * Request current IMS registration state
   1248      *
   1249      * @param serial Serial number of request.
   1250      *
   1251      * Response callback is IRadioResponse.getImsRegistrationStateResponse()
   1252      */
   1253     oneway getImsRegistrationState(int32_t serial);
   1254 
   1255     /**
   1256      * Send a SMS message over IMS.
   1257      * Based on the return error, caller decides to resend if sending sms
   1258      * fails. SMS_SEND_FAIL_RETRY means retry, and other errors means no retry.
   1259      * In case of retry, data is encoded based on Voice Technology available.
   1260      *
   1261      * @param serial Serial number of request.
   1262      * @param message ImsSmsMessage as defined in types.hal to be sent
   1263      *
   1264      * Response callback is IRadioResponse.sendImsSmsResponse()
   1265      */
   1266     oneway sendImsSms(int32_t serial, ImsSmsMessage message);
   1267 
   1268     /**
   1269      * Request APDU exchange on the basic channel. This command reflects TS 27.007
   1270      * "generic SIM access" operation (+CSIM). The modem must ensure proper function
   1271      * of GSM/CDMA, and filter commands appropriately. It must filter
   1272      * channel management and SELECT by DF name commands.
   1273      * "sessionid" field must be ignored.
   1274      *
   1275      * @param serial Serial number of request.
   1276      * @param message SimApdu as defined in types.hal to be sent
   1277      *
   1278      * Response callback is IRadioResponse.iccTransmitApduBasicChannelResponse()
   1279      */
   1280     oneway iccTransmitApduBasicChannel(int32_t serial, SimApdu message);
   1281 
   1282     /**
   1283      * Open a new logical channel and select the given application. This command
   1284      * reflects TS 27.007 "open logical channel" operation (+CCHO).
   1285      *
   1286      * @param serial Serial number of request.
   1287      * @param aid AID value, See ETSI 102.221 and 101.220.
   1288      * @param p2 P2 value, described in ISO 7816-4. Ignore if equal to P2Constant:NO_P2
   1289      *
   1290      * Response callback is IRadioResponse.iccOpenLogicalChannelResponse()
   1291      */
   1292     oneway iccOpenLogicalChannel(int32_t serial, string aid, int32_t p2);
   1293 
   1294     /**
   1295      * Close a previously opened logical channel. This command reflects TS 27.007
   1296      * "close logical channel" operation (+CCHC).
   1297      *
   1298      * @param serial Serial number of request.
   1299      * @param channelId session id of the logical channel (+CCHC).
   1300      *
   1301      * Response callback is IRadioResponse.iccCloseLogicalChannelResponse()
   1302      */
   1303     oneway iccCloseLogicalChannel(int32_t serial, int32_t channelId);
   1304 
   1305     /**
   1306      * Exchange APDUs with a UICC over a previously opened logical channel. This
   1307      * command reflects TS 27.007 "generic logical channel access" operation
   1308      * (+CGLA). The modem must filter channel management and SELECT by DF name
   1309      * commands.
   1310      *
   1311      * @param serial Serial number of request.
   1312      * @param message SimApdu as defined in types.hal to be sent
   1313      *
   1314      * Response callback is IRadioResponse.iccTransmitApduLogicalChannelResponse()
   1315      */
   1316     oneway iccTransmitApduLogicalChannel(int32_t serial, SimApdu message);
   1317 
   1318     /**
   1319      * Read one of the radio NV items.
   1320      * This is used for device configuration by some CDMA operators.
   1321      *
   1322      * @param serial Serial number of request.
   1323      * @param itemId NvItem is radio NV item as defined in types.hal
   1324      *
   1325      * Response callback is IRadioResponse.nvReadItemResponse()
   1326      */
   1327     oneway nvReadItem(int32_t serial, NvItem itemId);
   1328 
   1329     /**
   1330      * Write one of the radio NV items.
   1331      * This is used for device configuration by some CDMA operators.
   1332      *
   1333      * @param serial Serial number of request.
   1334      * @param item NvWriteItem as defined in types.hal
   1335      *
   1336      * Response callback is IRadioResponse.nvWriteItemResponse()
   1337      */
   1338     oneway nvWriteItem(int32_t serial, NvWriteItem item);
   1339 
   1340     /**
   1341      * Update the CDMA Preferred Roaming List (PRL) in the radio NV storage.
   1342      * This is used for device configuration by some CDMA operators.
   1343      *
   1344      * @param serial Serial number of request.
   1345      * @param prl PRL as a byte array
   1346      *
   1347      * Response callback is IRadioResponse.nvWriteCdmaPrlResponse()
   1348      */
   1349     oneway nvWriteCdmaPrl(int32_t serial, vec<uint8_t> prl);
   1350 
   1351     /**
   1352      * Reset the radio NV configuration to the factory state.
   1353      * This is used for device configuration by some CDMA operators.
   1354      *
   1355      * @param serial Serial number of request.
   1356      * @param resetType ResetNvType as defined in types.hal
   1357      *
   1358      * Response callback is IRadioResponse.nvResetConfigResponse()
   1359      */
   1360     oneway nvResetConfig(int32_t serial, ResetNvType resetType);
   1361 
   1362     /**
   1363      * Selection/de-selection of a subscription from a SIM card
   1364      *
   1365      * @param serial Serial number of request.
   1366      * @param uiccSub SelectUiccSub as defined in types.hal
   1367      *
   1368      * Response callback is IRadioResponse.setUiccSubscriptionResponse()
   1369      */
   1370     oneway setUiccSubscription(int32_t serial, SelectUiccSub uiccSub);
   1371 
   1372     /**
   1373      * Tells the modem whether data calls are allowed or not
   1374      *
   1375      * @param serial Serial number of request.
   1376      * @param allow true to allow data calls, false to disallow data calls
   1377      *
   1378      * Response callback is IRadioResponse.setDataAllowedResponse()
   1379      */
   1380     oneway setDataAllowed(int32_t serial, bool allow);
   1381 
   1382     /**
   1383      * Request all of the current hardware (modem and sim) associated with Radio.
   1384      *
   1385      * @param serial Serial number of request.
   1386      *
   1387      * Response callback is IRadioResponse.getHardwareConfigResponse()
   1388      */
   1389     oneway getHardwareConfig(int32_t serial);
   1390 
   1391     /**
   1392      * Returns the response of SIM Authentication through Radio challenge request.
   1393      *
   1394      * @param serial Serial number of request.
   1395      * @param authContext P2 value of authentication command, see P2 parameter in
   1396      *        3GPP TS 31.102 7.1.2
   1397      * @param authData the challenge string in Base64 format, see 3GPP TS 31.102 7.1.2
   1398      * @param aid AID value, See ETSI 102.221 8.1 and 101.220 4, empty string if no value
   1399      *
   1400      * Response callback is IRadioResponse.requestIccSimAuthenticationResponse()
   1401      */
   1402     oneway requestIccSimAuthentication(int32_t serial, int32_t authContext, string authData,
   1403             string aid);
   1404 
   1405     /**
   1406      * Set data profile in modem.
   1407      * Modem must erase existed profiles from framework, and apply new profiles
   1408      *
   1409      * @param serial Serial number of request.
   1410      * @param profiles Array of DataProfiles to set.
   1411      * @param isRoaming Indicating the device is roaming or not. The 'protocol' parameter in the old
   1412      *                  RIL API RIL_DataProfileInfo must be filled accordingly based on the
   1413      *                  roaming condition. Note this is for backward compatibility with the old
   1414      *                  radio modem. The modem must not use this param for any other reason.
   1415      *
   1416      * Response callback is IRadioResponse.setDataProfileResponse()
   1417      */
   1418     oneway setDataProfile(int32_t serial, vec<DataProfileInfo> profiles, bool isRoaming);
   1419 
   1420     /**
   1421      * Device is shutting down. All further commands are ignored
   1422      * and RADIO_NOT_AVAILABLE must be returned.
   1423      *
   1424      * @param serial Serial number of request.
   1425      *
   1426      * Response callback is IRadioResponse.requestShutdownResponse()
   1427      */
   1428     oneway requestShutdown(int32_t serial);
   1429 
   1430     /**
   1431      * Used to get phone radio capability.
   1432      *
   1433      * @param serial Serial number of request.
   1434      *
   1435      * Response callback is IRadioResponse.getRadioCapabilityResponse()
   1436      */
   1437     oneway getRadioCapability(int32_t serial);
   1438 
   1439     /**
   1440      * Used to set the phones radio capability. Be VERY careful
   1441      * using this request as it may cause some vendor modems to reset. Because
   1442      * of the possible modem reset any radio commands after this one may not be
   1443      * processed.
   1444      *
   1445      * @param serial Serial number of request.
   1446      * @param rc RadioCapability structure to be set
   1447      *
   1448      * Response callback is IRadioResponse.setRadioCapabilityResponse()
   1449      */
   1450     oneway setRadioCapability(int32_t serial, RadioCapability rc);
   1451 
   1452     /**
   1453      * Start Link Capacity Estimate (LCE) service if supported by the radio.
   1454      *
   1455      * @param serial Serial number of request.
   1456      * @param reportInterval desired reporting interval (ms).
   1457      * @param pullMode LCE service mode. true: PULL; false: PUSH.
   1458      *
   1459      * Response callback is IRadioResponse.startLceServiceResponse()
   1460      */
   1461     oneway startLceService(int32_t serial, int32_t reportInterval, bool pullMode);
   1462 
   1463     /**
   1464      * Stop Link Capacity Estimate (LCE) service, the STOP operation must be
   1465      * idempotent for the radio modem.
   1466      *
   1467      * @param serial Serial number of request.
   1468      *
   1469      * Response callback is IRadioResponse.stopLceServiceResponse()
   1470      */
   1471     oneway stopLceService(int32_t serial);
   1472 
   1473     /**
   1474      * Pull LCE service for capacity information.
   1475      *
   1476      * @param serial Serial number of request.
   1477      *
   1478      * Response callback is IRadioResponse.pullLceDataResponse()
   1479      */
   1480     oneway pullLceData(int32_t serial);
   1481 
   1482     /**
   1483      * Get modem activity information for power consumption estimation.
   1484      * Request clear-on-read statistics information that is used for
   1485      * estimating the per-millisecond power consumption of the cellular
   1486      * modem.
   1487      *
   1488      * @param serial Serial number of request.
   1489      *
   1490      * Response callback is IRadioResponse.getModemActivityInfoResponse()
   1491      */
   1492     oneway getModemActivityInfo(int32_t serial);
   1493 
   1494     /**
   1495      * Set carrier restrictions. Expected modem behavior:
   1496      *  If never receives this command
   1497      *  - Must allow all carriers
   1498      *  Receives this command with allAllowed true
   1499      *  - Must allow all carriers. If a previously allowed SIM is present, modem must not reload
   1500      *    the SIM. If a previously disallowed SIM is present, reload the SIM and notify Android.
   1501      *  Receives this command with a list of carriers & allAllowed = false
   1502      *  - Only allow specified carriers, persist across power cycles and FDR. If a present SIM
   1503      *    is in the allowed list, modem must not reload the SIM. If a present SIM is *not* in
   1504      *    the allowed list, modem must detach from the registered network and only keep emergency
   1505      *    service, and notify Android SIM refresh reset with new SIM state being
   1506      *    CardState:RESTRICTED. Emergency service must be enabled.
   1507      *
   1508      * @param serial Serial number of request.
   1509      * @param allAllowed true only when all carriers are allowed. Ignore "carriers" struct.
   1510      *        If false, consider "carriers" struct
   1511      * @param carriers CarrierRestrictions consisting allowed and excluded carriers as defined
   1512      *        in types.hal
   1513      *
   1514      * Response callback is IRadioResponse.setAllowedCarriersResponse()
   1515      */
   1516     oneway setAllowedCarriers(int32_t serial, bool allAllowed, CarrierRestrictions carriers);
   1517 
   1518     /**
   1519      * Get carrier restrictions.
   1520      *
   1521      * @param serial Serial number of request.
   1522      *
   1523      * Response callback is IRadioResponse.getAllowedCarriersResponse()
   1524      */
   1525     oneway getAllowedCarriers(int32_t serial);
   1526 
   1527     /**
   1528      * Send the updated device state.
   1529      * This is providing the device state information for the modem to perform power saving
   1530      * strategies.
   1531      *
   1532      * @param serial Serial number of request.
   1533      * @param deviceStateType The updated device state type.
   1534      * @param state The updated state. See the definition of state at DeviceStateType.
   1535      *
   1536      * Response callback is IRadioResponse.sendDeviceStateResponse()
   1537      */
   1538     oneway sendDeviceState(int32_t serial, DeviceStateType deviceStateType, bool state);
   1539 
   1540     /**
   1541      * Set the indication filter.
   1542      * This is used to prevent unnecessary application processor wake up for power saving purposes
   1543      * by suppressing the indications in certain scenarios.
   1544      *
   1545      * @param serial Serial number of request.
   1546      * @param indicationFilter 32-bit bitmap of IndicationFilter. Bits set to 1 indicate the
   1547      *        indications are enabled. See IndicationFilter for the definition of each bit.
   1548      *
   1549      * Response callback is IRadioResponse.setIndicationFilterResponse()
   1550      */
   1551     oneway setIndicationFilter(int32_t serial, bitfield<IndicationFilter> indicationFilter);
   1552 
   1553     /**
   1554      * Set SIM card power state.
   1555      * Request is equivalent to inserting or removing the card.
   1556      *
   1557      * The radio modem must generate IRadioIndication.simStatusChanged() as if the SIM had been
   1558      * inserted or removed.
   1559      *
   1560      * @param serial Serial number of request
   1561      * @param powerUp True if powering up the sim card
   1562      *
   1563      * Response callback is IRadioResponse.setSimCardPowerResponse()
   1564      */
   1565     oneway setSimCardPower(int32_t serial, bool powerUp);
   1566 
   1567     /**
   1568      * When response type received from a radio indication or radio response is
   1569      * RadioIndicationType:UNSOLICITED_ACK_EXP or RadioResponseType:SOLICITED_ACK_EXP respectively,
   1570      * acknowledge the receipt of those messages by sending responseAcknowledgement().
   1571      *
   1572      */
   1573     oneway responseAcknowledgement();
   1574 };
   1575