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
17package android.hardware.radio@1.0;
18
19import IRadioResponse;
20import 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 */
29interface 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