ITelephony.aidl revision 42eadcdf3432e9fd6662ee07316db7726c1eabbf
1/*
2 * Copyright (C) 2007 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 com.android.internal.telephony;
18
19import android.content.Intent;
20import android.os.Bundle;
21import android.telephony.CellInfo;
22import android.telephony.IccOpenLogicalChannelResponse;
23import android.telephony.NeighboringCellInfo;
24import android.telephony.RadioAccessFamily;
25import java.util.List;
26
27
28/**
29 * Interface used to interact with the phone.  Mostly this is used by the
30 * TelephonyManager class.  A few places are still using this directly.
31 * Please clean them up if possible and use TelephonyManager instead.
32 *
33 * {@hide}
34 */
35interface ITelephony {
36
37    /**
38     * Dial a number. This doesn't place the call. It displays
39     * the Dialer screen.
40     * @param number the number to be dialed. If null, this
41     * would display the Dialer screen with no number pre-filled.
42     */
43    void dial(String number);
44
45    /**
46     * Place a call to the specified number.
47     * @param number the number to be called.
48     */
49    void call(String callingPackage, String number);
50
51    /**
52     * End call if there is a call in progress, otherwise does nothing.
53     *
54     * @return whether it hung up
55     */
56    boolean endCall();
57
58    /**
59     * End call on particular subId or go to the Home screen
60     * @param subId user preferred subId.
61     * @return whether it hung up
62     */
63    boolean endCallForSubscriber(int subId);
64
65    /**
66     * Answer the currently-ringing call.
67     *
68     * If there's already a current active call, that call will be
69     * automatically put on hold.  If both lines are currently in use, the
70     * current active call will be ended.
71     *
72     * TODO: provide a flag to let the caller specify what policy to use
73     * if both lines are in use.  (The current behavior is hardwired to
74     * "answer incoming, end ongoing", which is how the CALL button
75     * is specced to behave.)
76     *
77     * TODO: this should be a oneway call (especially since it's called
78     * directly from the key queue thread).
79     */
80    void answerRingingCall();
81
82    /**
83     * Answer the currently-ringing call on particular subId .
84     *
85     * If there's already a current active call, that call will be
86     * automatically put on hold.  If both lines are currently in use, the
87     * current active call will be ended.
88     *
89     * TODO: provide a flag to let the caller specify what policy to use
90     * if both lines are in use.  (The current behavior is hardwired to
91     * "answer incoming, end ongoing", which is how the CALL button
92     * is specced to behave.)
93     *
94     * TODO: this should be a oneway call (especially since it's called
95     * directly from the key queue thread).
96     */
97    void answerRingingCallForSubscriber(int subId);
98
99    /**
100     * Silence the ringer if an incoming call is currently ringing.
101     * (If vibrating, stop the vibrator also.)
102     *
103     * It's safe to call this if the ringer has already been silenced, or
104     * even if there's no incoming call.  (If so, this method will do nothing.)
105     *
106     * TODO: this should be a oneway call too (see above).
107     *       (Actually *all* the methods here that return void can
108     *       probably be oneway.)
109     */
110    void silenceRinger();
111
112    /**
113     * Check if we are in either an active or holding call
114     * @return true if the phone state is OFFHOOK.
115     */
116    boolean isOffhook();
117
118    /**
119     * Check if a particular subId has an active or holding call
120     *
121     * @param subId user preferred subId.
122     * @return true if the phone state is OFFHOOK.
123     */
124    boolean isOffhookForSubscriber(int subId);
125
126    /**
127     * Check if an incoming phone call is ringing or call waiting
128     * on a particular subId.
129     *
130     * @param subId user preferred subId.
131     * @return true if the phone state is RINGING.
132     */
133    boolean isRingingForSubscriber(int subId);
134
135    /**
136     * Check if an incoming phone call is ringing or call waiting.
137     * @return true if the phone state is RINGING.
138     */
139    boolean isRinging();
140
141    /**
142     * Check if the phone is idle.
143     * @return true if the phone state is IDLE.
144     */
145    boolean isIdle();
146
147    /**
148     * Check if the phone is idle on a particular subId.
149     *
150     * @param subId user preferred subId.
151     * @return true if the phone state is IDLE.
152     */
153    boolean isIdleForSubscriber(int subId);
154
155    /**
156     * Check to see if the radio is on or not.
157     * @return returns true if the radio is on.
158     */
159    boolean isRadioOn();
160
161    /**
162     * Check to see if the radio is on or not on particular subId.
163     * @param subId user preferred subId.
164     * @return returns true if the radio is on.
165     */
166    boolean isRadioOnForSubscriber(int subId);
167
168    /**
169     * Check if the SIM pin lock is enabled.
170     * @return true if the SIM pin lock is enabled.
171     */
172    boolean isSimPinEnabled();
173
174    /**
175     * Supply a pin to unlock the SIM.  Blocks until a result is determined.
176     * @param pin The pin to check.
177     * @return whether the operation was a success.
178     */
179    boolean supplyPin(String pin);
180
181    /**
182     * Supply a pin to unlock the SIM for particular subId.
183     * Blocks until a result is determined.
184     * @param pin The pin to check.
185     * @param subId user preferred subId.
186     * @return whether the operation was a success.
187     */
188    boolean supplyPinForSubscriber(int subId, String pin);
189
190    /**
191     * Supply puk to unlock the SIM and set SIM pin to new pin.
192     *  Blocks until a result is determined.
193     * @param puk The puk to check.
194     *        pin The new pin to be set in SIM
195     * @return whether the operation was a success.
196     */
197    boolean supplyPuk(String puk, String pin);
198
199    /**
200     * Supply puk to unlock the SIM and set SIM pin to new pin.
201     *  Blocks until a result is determined.
202     * @param puk The puk to check.
203     *        pin The new pin to be set in SIM
204     * @param subId user preferred subId.
205     * @return whether the operation was a success.
206     */
207    boolean supplyPukForSubscriber(int subId, String puk, String pin);
208
209    /**
210     * Supply a pin to unlock the SIM.  Blocks until a result is determined.
211     * Returns a specific success/error code.
212     * @param pin The pin to check.
213     * @return retValue[0] = Phone.PIN_RESULT_SUCCESS on success. Otherwise error code
214     *         retValue[1] = number of attempts remaining if known otherwise -1
215     */
216    int[] supplyPinReportResult(String pin);
217
218    /**
219     * Supply a pin to unlock the SIM.  Blocks until a result is determined.
220     * Returns a specific success/error code.
221     * @param pin The pin to check.
222     * @return retValue[0] = Phone.PIN_RESULT_SUCCESS on success. Otherwise error code
223     *         retValue[1] = number of attempts remaining if known otherwise -1
224     */
225    int[] supplyPinReportResultForSubscriber(int subId, String pin);
226
227    /**
228     * Supply puk to unlock the SIM and set SIM pin to new pin.
229     * Blocks until a result is determined.
230     * Returns a specific success/error code
231     * @param puk The puk to check
232     *        pin The pin to check.
233     * @return retValue[0] = Phone.PIN_RESULT_SUCCESS on success. Otherwise error code
234     *         retValue[1] = number of attempts remaining if known otherwise -1
235     */
236    int[] supplyPukReportResult(String puk, String pin);
237
238    /**
239     * Supply puk to unlock the SIM and set SIM pin to new pin.
240     * Blocks until a result is determined.
241     * Returns a specific success/error code
242     * @param puk The puk to check
243     *        pin The pin to check.
244     * @return retValue[0] = Phone.PIN_RESULT_SUCCESS on success. Otherwise error code
245     *         retValue[1] = number of attempts remaining if known otherwise -1
246     */
247    int[] supplyPukReportResultForSubscriber(int subId, String puk, String pin);
248
249    /**
250     * Handles PIN MMI commands (PIN/PIN2/PUK/PUK2), which are initiated
251     * without SEND (so <code>dial</code> is not appropriate).
252     *
253     * @param dialString the MMI command to be executed.
254     * @return true if MMI command is executed.
255     */
256    boolean handlePinMmi(String dialString);
257
258    /**
259     * Handles PIN MMI commands (PIN/PIN2/PUK/PUK2), which are initiated
260     * without SEND (so <code>dial</code> is not appropriate) for
261     * a particular subId.
262     * @param dialString the MMI command to be executed.
263     * @param subId user preferred subId.
264     * @return true if MMI command is executed.
265     */
266    boolean handlePinMmiForSubscriber(int subId, String dialString);
267
268    /**
269     * Toggles the radio on or off.
270     */
271    void toggleRadioOnOff();
272
273    /**
274     * Toggles the radio on or off on particular subId.
275     * @param subId user preferred subId.
276     */
277    void toggleRadioOnOffForSubscriber(int subId);
278
279    /**
280     * Set the radio to on or off
281     */
282    boolean setRadio(boolean turnOn);
283
284    /**
285     * Set the radio to on or off on particular subId.
286     * @param subId user preferred subId.
287     */
288    boolean setRadioForSubscriber(int subId, boolean turnOn);
289
290    /**
291     * Set the radio to on or off unconditionally
292     */
293    boolean setRadioPower(boolean turnOn);
294
295    /**
296     * Request to update location information in service state
297     */
298    void updateServiceLocation();
299
300    /**
301     * Request to update location information for a subscrition in service state
302     * @param subId user preferred subId.
303     */
304    void updateServiceLocationForSubscriber(int subId);
305
306    /**
307     * Enable location update notifications.
308     */
309    void enableLocationUpdates();
310
311    /**
312     * Enable location update notifications.
313     * @param subId user preferred subId.
314     */
315    void enableLocationUpdatesForSubscriber(int subId);
316
317    /**
318     * Disable location update notifications.
319     */
320    void disableLocationUpdates();
321
322    /**
323     * Disable location update notifications.
324     * @param subId user preferred subId.
325     */
326    void disableLocationUpdatesForSubscriber(int subId);
327
328    /**
329     * Allow mobile data connections.
330     */
331    boolean enableDataConnectivity();
332
333    /**
334     * Disallow mobile data connections.
335     */
336    boolean disableDataConnectivity();
337
338    /**
339     * Report whether data connectivity is possible.
340     */
341    boolean isDataConnectivityPossible();
342
343    Bundle getCellLocation();
344
345    /**
346     * Returns the neighboring cell information of the device.
347     */
348    List<NeighboringCellInfo> getNeighboringCellInfo(String callingPkg);
349
350     int getCallState();
351
352    /**
353     * Returns the call state for a subId.
354     */
355     int getCallStateForSubscriber(int subId);
356
357     int getDataActivity();
358     int getDataState();
359
360    /**
361     * Returns the current active phone type as integer.
362     * Returns TelephonyManager.PHONE_TYPE_CDMA if RILConstants.CDMA_PHONE
363     * and TelephonyManager.PHONE_TYPE_GSM if RILConstants.GSM_PHONE
364     */
365    int getActivePhoneType();
366
367    /**
368     * Returns the current active phone type as integer for particular subId.
369     * Returns TelephonyManager.PHONE_TYPE_CDMA if RILConstants.CDMA_PHONE
370     * and TelephonyManager.PHONE_TYPE_GSM if RILConstants.GSM_PHONE
371     * @param subId user preferred subId.
372     */
373    int getActivePhoneTypeForSubscriber(int subId);
374
375    /**
376     * Returns the CDMA ERI icon index to display
377     */
378    int getCdmaEriIconIndex();
379
380    /**
381     * Returns the CDMA ERI icon index to display on particular subId.
382     * @param subId user preferred subId.
383     */
384    int getCdmaEriIconIndexForSubscriber(int subId);
385
386    /**
387     * Returns the CDMA ERI icon mode,
388     * 0 - ON
389     * 1 - FLASHING
390     */
391    int getCdmaEriIconMode();
392
393    /**
394     * Returns the CDMA ERI icon mode on particular subId,
395     * 0 - ON
396     * 1 - FLASHING
397     * @param subId user preferred subId.
398     */
399    int getCdmaEriIconModeForSubscriber(int subId);
400
401    /**
402     * Returns the CDMA ERI text,
403     */
404    String getCdmaEriText();
405
406    /**
407     * Returns the CDMA ERI text for particular subId,
408     * @param subId user preferred subId.
409     */
410    String getCdmaEriTextForSubscriber(int subId);
411
412    /**
413     * Returns true if OTA service provisioning needs to run.
414     * Only relevant on some technologies, others will always
415     * return false.
416     */
417    boolean needsOtaServiceProvisioning();
418
419    /**
420     * Sets the voicemail number for a particular subscriber.
421     */
422    boolean setVoiceMailNumber(int subId, String alphaTag, String number);
423
424    /**
425      * Returns the unread count of voicemails
426      */
427    int getVoiceMessageCount();
428
429    /**
430     * Returns the unread count of voicemails for a subId.
431     * @param subId user preferred subId.
432     * Returns the unread count of voicemails
433     */
434    int getVoiceMessageCountForSubscriber(int subId);
435
436    /**
437      * Returns the network type for data transmission
438      */
439    int getNetworkType();
440
441    /**
442     * Returns the network type of a subId.
443     * @param subId user preferred subId.
444     * Returns the network type
445     */
446    int getNetworkTypeForSubscriber(int subId);
447
448    /**
449      * Returns the network type for data transmission
450      */
451    int getDataNetworkType();
452
453    /**
454      * Returns the data network type of a subId
455      * @param subId user preferred subId.
456      * Returns the network type
457      */
458    int getDataNetworkTypeForSubscriber(int subId);
459
460    /**
461      * Returns the network type for voice
462      */
463    int getVoiceNetworkType();
464
465    /**
466      * Returns the voice network type of a subId
467      * @param subId user preferred subId.
468      * Returns the network type
469      */
470    int getVoiceNetworkTypeForSubscriber(int subId);
471
472    /**
473     * Return true if an ICC card is present
474     */
475    boolean hasIccCard();
476
477    /**
478     * Return true if an ICC card is present for a subId.
479     * @param slotId user preferred slotId.
480     * Return true if an ICC card is present
481     */
482    boolean hasIccCardUsingSlotId(int slotId);
483
484    /**
485     * Return if the current radio is LTE on CDMA. This
486     * is a tri-state return value as for a period of time
487     * the mode may be unknown.
488     *
489     * @return {@link Phone#LTE_ON_CDMA_UNKNOWN}, {@link Phone#LTE_ON_CDMA_FALSE}
490     * or {@link PHone#LTE_ON_CDMA_TRUE}
491     */
492    int getLteOnCdmaMode();
493
494    /**
495     * Return if the current radio is LTE on CDMA. This
496     * is a tri-state return value as for a period of time
497     * the mode may be unknown.
498     *
499     * @return {@link Phone#LTE_ON_CDMA_UNKNOWN}, {@link Phone#LTE_ON_CDMA_FALSE}
500     * or {@link PHone#LTE_ON_CDMA_TRUE}
501     */
502    int getLteOnCdmaModeForSubscriber(int subId);
503
504    /**
505     * Returns the all observed cell information of the device.
506     */
507    List<CellInfo> getAllCellInfo();
508
509    /**
510     * Sets minimum time in milli-seconds between onCellInfoChanged
511     */
512    void setCellInfoListRate(int rateInMillis);
513
514    /**
515     * get default sim
516     * @return sim id
517     */
518    int getDefaultSim();
519
520    /**
521     * Opens a logical channel to the ICC card.
522     *
523     * Input parameters equivalent to TS 27.007 AT+CCHO command.
524     *
525     * @param AID Application id. See ETSI 102.221 and 101.220.
526     * @return an IccOpenLogicalChannelResponse object.
527     */
528    IccOpenLogicalChannelResponse iccOpenLogicalChannel(String AID);
529
530    /**
531     * Closes a previously opened logical channel to the ICC card.
532     *
533     * Input parameters equivalent to TS 27.007 AT+CCHC command.
534     *
535     * @param channel is the channel id to be closed as retruned by a
536     *            successful iccOpenLogicalChannel.
537     * @return true if the channel was closed successfully.
538     */
539    boolean iccCloseLogicalChannel(int channel);
540
541    /**
542     * Transmit an APDU to the ICC card over a logical channel.
543     *
544     * Input parameters equivalent to TS 27.007 AT+CGLA command.
545     *
546     * @param channel is the channel id to be closed as retruned by a
547     *            successful iccOpenLogicalChannel.
548     * @param cla Class of the APDU command.
549     * @param instruction Instruction of the APDU command.
550     * @param p1 P1 value of the APDU command.
551     * @param p2 P2 value of the APDU command.
552     * @param p3 P3 value of the APDU command. If p3 is negative a 4 byte APDU
553     *            is sent to the SIM.
554     * @param data Data to be sent with the APDU.
555     * @return The APDU response from the ICC card with the status appended at
556     *            the end.
557     */
558    String iccTransmitApduLogicalChannel(int channel, int cla, int instruction,
559            int p1, int p2, int p3, String data);
560
561    /**
562     * Transmit an APDU to the ICC card over the basic channel.
563     *
564     * Input parameters equivalent to TS 27.007 AT+CSIM command.
565     *
566     * @param cla Class of the APDU command.
567     * @param instruction Instruction of the APDU command.
568     * @param p1 P1 value of the APDU command.
569     * @param p2 P2 value of the APDU command.
570     * @param p3 P3 value of the APDU command. If p3 is negative a 4 byte APDU
571     *            is sent to the SIM.
572     * @param data Data to be sent with the APDU.
573     * @return The APDU response from the ICC card with the status appended at
574     *            the end.
575     */
576    String iccTransmitApduBasicChannel(int cla, int instruction,
577            int p1, int p2, int p3, String data);
578
579    /**
580     * Returns the response APDU for a command APDU sent through SIM_IO.
581     *
582     * @param fileID
583     * @param command
584     * @param p1 P1 value of the APDU command.
585     * @param p2 P2 value of the APDU command.
586     * @param p3 P3 value of the APDU command.
587     * @param filePath
588     * @return The APDU response.
589     */
590    byte[] iccExchangeSimIO(int fileID, int command, int p1, int p2, int p3,
591            String filePath);
592
593    /**
594     * Send ENVELOPE to the SIM and returns the response.
595     *
596     * @param contents  String containing SAT/USAT response in hexadecimal
597     *                  format starting with command tag. See TS 102 223 for
598     *                  details.
599     * @return The APDU response from the ICC card, with the last 4 bytes
600     *         being the status word. If the command fails, returns an empty
601     *         string.
602     */
603    String sendEnvelopeWithStatus(String content);
604
605    /**
606     * Read one of the NV items defined in {@link RadioNVItems} / {@code ril_nv_items.h}.
607     * Used for device configuration by some CDMA operators.
608     *
609     * @param itemID the ID of the item to read.
610     * @return the NV item as a String, or null on any failure.
611     */
612    String nvReadItem(int itemID);
613
614    /**
615     * Write one of the NV items defined in {@link RadioNVItems} / {@code ril_nv_items.h}.
616     * Used for device configuration by some CDMA operators.
617     *
618     * @param itemID the ID of the item to read.
619     * @param itemValue the value to write, as a String.
620     * @return true on success; false on any failure.
621     */
622    boolean nvWriteItem(int itemID, String itemValue);
623
624    /**
625     * Update the CDMA Preferred Roaming List (PRL) in the radio NV storage.
626     * Used for device configuration by some CDMA operators.
627     *
628     * @param preferredRoamingList byte array containing the new PRL.
629     * @return true on success; false on any failure.
630     */
631    boolean nvWriteCdmaPrl(in byte[] preferredRoamingList);
632
633    /**
634     * Perform the specified type of NV config reset. The radio will be taken offline
635     * and the device must be rebooted after the operation. Used for device
636     * configuration by some CDMA operators.
637     *
638     * @param resetType the type of reset to perform (1 == factory reset; 2 == NV-only reset).
639     * @return true on success; false on any failure.
640     */
641    boolean nvResetConfig(int resetType);
642
643    /*
644     * Get the calculated preferred network type.
645     * Used for device configuration by some CDMA operators.
646     *
647     * @return the calculated preferred network type, defined in RILConstants.java.
648     */
649    int getCalculatedPreferredNetworkType();
650
651    /*
652     * Get the preferred network type.
653     * Used for device configuration by some CDMA operators.
654     *
655     * @return the preferred network type, defined in RILConstants.java.
656     */
657    int getPreferredNetworkType();
658
659    /**
660     * Check TETHER_DUN_REQUIRED and TETHER_DUN_APN settings, net.tethering.noprovisioning
661     * SystemProperty, and config_tether_apndata to decide whether DUN APN is required for
662     * tethering.
663     *
664     * @return 0: Not required. 1: required. 2: Not set.
665     */
666    int getTetherApnRequired();
667
668    /**
669     * Set the preferred network type.
670     * Used for device configuration by some CDMA operators.
671     *
672     * @param networkType the preferred network type, defined in RILConstants.java.
673     * @return true on success; false on any failure.
674     */
675    boolean setPreferredNetworkType(int networkType);
676
677    /**
678     * User enable/disable Mobile Data.
679     *
680     * @param enable true to turn on, else false
681     */
682    void setDataEnabled(int subId, boolean enable);
683
684    /**
685     * Get the user enabled state of Mobile Data.
686     *
687     * @return true on enabled
688     */
689    boolean getDataEnabled(int subId);
690
691    /**
692     * Get P-CSCF address from PCO after data connection is established or modified.
693     * @param apnType the apnType, "ims" for IMS APN, "emergency" for EMERGENCY APN
694     */
695    String[] getPcscfAddress(String apnType);
696
697    /**
698     * Set IMS registration state
699     */
700    void setImsRegistrationState(boolean registered);
701
702    /**
703     * Return MDN string for CDMA phone.
704     * @param subId user preferred subId.
705     */
706    String getCdmaMdn(int subId);
707
708    /**
709     * Return MIN string for CDMA phone.
710     * @param subId user preferred subId.
711     */
712    String getCdmaMin(int subId);
713
714    /**
715     * Has the calling application been granted special privileges by the carrier.
716     *
717     * If any of the packages in the calling UID has carrier privileges, the
718     * call will return true. This access is granted by the owner of the UICC
719     * card and does not depend on the registered carrier.
720     *
721     * TODO: Add a link to documentation.
722     *
723     * @return carrier privilege status defined in TelephonyManager.
724     */
725    int getCarrierPrivilegeStatus();
726
727    /**
728     * Similar to above, but check for pkg whose name is pkgname.
729     */
730    int checkCarrierPrivilegesForPackage(String pkgname);
731
732    /**
733     * Returns the package name of the carrier apps that should handle the input intent.
734     *
735     * @param packageManager PackageManager for getting receivers.
736     * @param intent Intent that will be sent.
737     * @return list of carrier app package names that can handle the intent.
738     *         Returns null if there is an error and an empty list if there
739     *         are no matching packages.
740     */
741    List<String> getCarrierPackageNamesForIntent(in Intent intent);
742
743    /**
744     * Set the line 1 phone number string and its alphatag for the current ICCID
745     * for display purpose only, for example, displayed in Phone Status. It won't
746     * change the actual MSISDN/MDN. To unset alphatag or number, pass in a null
747     * value.
748     *
749     * @param subId the subscriber that the alphatag and dialing number belongs to.
750     * @param alphaTag alpha-tagging of the dailing nubmer
751     * @param number The dialing number
752     * @return true if the operation was executed correctly.
753     */
754    boolean setLine1NumberForDisplayForSubscriber(int subId, String alphaTag, String number);
755
756    /**
757     * Returns the displayed dialing number string if it was set previously via
758     * {@link #setLine1NumberForDisplay}. Otherwise returns null.
759     *
760     * @param subId whose dialing number for line 1 is returned.
761     * @return the displayed dialing number if set, or null if not set.
762     */
763    String getLine1NumberForDisplay(int subId);
764
765    /**
766     * Returns the displayed alphatag of the dialing number if it was set
767     * previously via {@link #setLine1NumberForDisplay}. Otherwise returns null.
768     *
769     * @param subId whose alphatag associated with line 1 is returned.
770     * @return the displayed alphatag of the dialing number if set, or null if
771     *         not set.
772     */
773    String getLine1AlphaTagForDisplay(int subId);
774
775    String[] getMergedSubscriberIds();
776
777    /**
778     * Override the operator branding for the current ICCID.
779     *
780     * Once set, whenever the SIM is present in the device, the service
781     * provider name (SPN) and the operator name will both be replaced by the
782     * brand value input. To unset the value, the same function should be
783     * called with a null brand value.
784     *
785     * <p>Requires Permission:
786     *   {@link android.Manifest.permission#MODIFY_PHONE_STATE MODIFY_PHONE_STATE}
787     *  or has to be carrier app - see #hasCarrierPrivileges.
788     *
789     * @param brand The brand name to display/set.
790     * @return true if the operation was executed correctly.
791     */
792    boolean setOperatorBrandOverride(String brand);
793
794    /**
795     * Override the roaming indicator for the current ICCID.
796     *
797     * Using this call, the carrier app (see #hasCarrierPrivileges) can override
798     * the platform's notion of a network operator being considered roaming or not.
799     * The change only affects the ICCID that was active when this call was made.
800     *
801     * If null is passed as any of the input, the corresponding value is deleted.
802     *
803     * <p>Requires that the caller have carrier privilege. See #hasCarrierPrivileges.
804     *
805     * @param gsmRoamingList - List of MCCMNCs to be considered roaming for 3GPP RATs.
806     * @param gsmNonRoamingList - List of MCCMNCs to be considered not roaming for 3GPP RATs.
807     * @param cdmaRoamingList - List of SIDs to be considered roaming for 3GPP2 RATs.
808     * @param cdmaNonRoamingList - List of SIDs to be considered not roaming for 3GPP2 RATs.
809     * @return true if the operation was executed correctly.
810     */
811    boolean setRoamingOverride(in List<String> gsmRoamingList,
812            in List<String> gsmNonRoamingList, in List<String> cdmaRoamingList,
813            in List<String> cdmaNonRoamingList);
814
815    /**
816     * Returns the result and response from RIL for oem request
817     *
818     * @param oemReq the data is sent to ril.
819     * @param oemResp the respose data from RIL.
820     * @return negative value request was not handled or get error
821     *         0 request was handled succesfully, but no response data
822     *         positive value success, data length of response
823     */
824    int invokeOemRilRequestRaw(in byte[] oemReq, out byte[] oemResp);
825
826    /**
827     * Check if any mobile Radios need to be shutdown.
828     *
829     * @return true is any mobile radio needs to be shutdown
830     */
831    boolean needMobileRadioShutdown();
832
833    /**
834     * Shutdown Mobile Radios
835     */
836    void shutdownMobileRadios();
837
838    /**
839     * Set phone radio type and access technology.
840     *
841     * @param rafs an RadioAccessFamily array to indicate all phone's
842     *        new radio access family. The length of RadioAccessFamily
843     *        must equ]]al to phone count.
844     */
845    void setRadioCapability(in RadioAccessFamily[] rafs);
846
847    /**
848     * Get phone radio type and access technology.
849     *
850     * @param phoneId which phone you want to get
851     * @return phone radio type and access technology
852     */
853    int getRadioAccessFamily(in int phoneId);
854
855    /**
856     * Enables or disables video calling.
857     *
858     * @param enable Whether to enable video calling.
859     */
860    void enableVideoCalling(boolean enable);
861
862    /**
863     * Whether video calling has been enabled by the user.
864     *
865     * @return {@code True} if the user has enabled video calling, {@code false} otherwise.
866     */
867    boolean isVideoCallingEnabled();
868
869    /**
870     * Get IMS Registration Status
871     */
872    boolean isImsRegistered();
873
874    /**
875     * Returns the Status of Wi-Fi Calling
876     *@hide
877     */
878    boolean isWifiCallingEnabled();
879
880     /**
881     * Returns the Status of Volte
882     *@hide
883     */
884    boolean isVolteEnabled();
885
886    /**
887      * Returns the unique device ID of phone, for example, the IMEI for
888      * GSM and the MEID for CDMA phones. Return null if device ID is not available.
889      *
890      * <p>Requires Permission:
891      *   {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE}
892      */
893    String getDeviceId();
894}
895