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