ITelephony.aidl revision b8894ab1aec9c9ffa749f9369e412a51b942de27
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.ComponentName; 20import android.os.Bundle; 21import android.telephony.CellInfo; 22import android.telephony.NeighboringCellInfo; 23 24import com.android.internal.telephony.ITelephonyListener; 25 26import java.util.List; 27 28import java.util.List; 29 30/** 31 * Interface used to interact with the phone. Mostly this is used by the 32 * TelephonyManager class. A few places are still using this directly. 33 * Please clean them up if possible and use TelephonyManager insteadl. 34 * 35 * {@hide} 36 */ 37interface ITelephony { 38 39 /** 40 * Dial a number. This doesn't place the call. It displays 41 * the Dialer screen. 42 * @param number the number to be dialed. If null, this 43 * would display the Dialer screen with no number pre-filled. 44 */ 45 void dial(String number); 46 47 /** 48 * Place a call to the specified number. 49 * @param number the number to be called. 50 */ 51 void call(String callingPackage, String number); 52 53 /** 54 * If there is currently a call in progress, show the call screen. 55 * The DTMF dialpad may or may not be visible initially, depending on 56 * whether it was up when the user last exited the InCallScreen. 57 * 58 * @return true if the call screen was shown. 59 */ 60 boolean showCallScreen(); 61 62 /** 63 * Variation of showCallScreen() that also specifies whether the 64 * DTMF dialpad should be initially visible when the InCallScreen 65 * comes up. 66 * 67 * @param showDialpad if true, make the dialpad visible initially, 68 * otherwise hide the dialpad initially. 69 * @return true if the call screen was shown. 70 * 71 * @see showCallScreen 72 */ 73 boolean showCallScreenWithDialpad(boolean showDialpad); 74 75 /** 76 * End call if there is a call in progress, otherwise does nothing. 77 * 78 * @return whether it hung up 79 */ 80 boolean endCall(); 81 82 /** 83 * Answer the currently-ringing call. 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 answerRingingCall(); 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 an incoming phone call is ringing or call waiting. 120 * @return true if the phone state is RINGING. 121 */ 122 boolean isRinging(); 123 124 /** 125 * Check if the phone is idle. 126 * @return true if the phone state is IDLE. 127 */ 128 boolean isIdle(); 129 130 /** 131 * Check to see if the radio is on or not. 132 * @return returns true if the radio is on. 133 */ 134 boolean isRadioOn(); 135 136 /** 137 * Check if the SIM pin lock is enabled. 138 * @return true if the SIM pin lock is enabled. 139 */ 140 boolean isSimPinEnabled(); 141 142 /** 143 * Cancels the missed calls notification. 144 */ 145 void cancelMissedCallsNotification(); 146 147 /** 148 * Supply a pin to unlock the SIM. Blocks until a result is determined. 149 * @param pin The pin to check. 150 * @return whether the operation was a success. 151 */ 152 boolean supplyPin(String pin); 153 154 /** 155 * Supply puk to unlock the SIM and set SIM pin to new pin. 156 * Blocks until a result is determined. 157 * @param puk The puk to check. 158 * pin The new pin to be set in SIM 159 * @return whether the operation was a success. 160 */ 161 boolean supplyPuk(String puk, String pin); 162 163 /** 164 * Supply a pin to unlock the SIM. Blocks until a result is determined. 165 * Returns a specific success/error code. 166 * @param pin The pin to check. 167 * @return retValue[0] = Phone.PIN_RESULT_SUCCESS on success. Otherwise error code 168 * retValue[1] = number of attempts remaining if known otherwise -1 169 */ 170 int[] supplyPinReportResult(String pin); 171 172 /** 173 * Supply puk to unlock the SIM and set SIM pin to new pin. 174 * Blocks until a result is determined. 175 * Returns a specific success/error code 176 * @param puk The puk to check 177 * pin The pin to check. 178 * @return retValue[0] = Phone.PIN_RESULT_SUCCESS on success. Otherwise error code 179 * retValue[1] = number of attempts remaining if known otherwise -1 180 */ 181 int[] supplyPukReportResult(String puk, String pin); 182 183 /** 184 * Handles PIN MMI commands (PIN/PIN2/PUK/PUK2), which are initiated 185 * without SEND (so <code>dial</code> is not appropriate). 186 * 187 * @param dialString the MMI command to be executed. 188 * @return true if MMI command is executed. 189 */ 190 boolean handlePinMmi(String dialString); 191 192 /** 193 * Toggles the radio on or off. 194 */ 195 void toggleRadioOnOff(); 196 197 /** 198 * Set the radio to on or off 199 */ 200 boolean setRadio(boolean turnOn); 201 202 /** 203 * Set the radio to on or off unconditionally 204 */ 205 boolean setRadioPower(boolean turnOn); 206 207 /** 208 * Request to update location information in service state 209 */ 210 void updateServiceLocation(); 211 212 /** 213 * Enable location update notifications. 214 */ 215 void enableLocationUpdates(); 216 217 /** 218 * Disable location update notifications. 219 */ 220 void disableLocationUpdates(); 221 222 /** 223 * Enable a specific APN type. 224 */ 225 int enableApnType(String type); 226 227 /** 228 * Disable a specific APN type. 229 */ 230 int disableApnType(String type); 231 232 /** 233 * Allow mobile data connections. 234 */ 235 boolean enableDataConnectivity(); 236 237 /** 238 * Disallow mobile data connections. 239 */ 240 boolean disableDataConnectivity(); 241 242 /** 243 * Report whether data connectivity is possible. 244 */ 245 boolean isDataConnectivityPossible(); 246 247 Bundle getCellLocation(); 248 249 /** 250 * Returns the neighboring cell information of the device. 251 */ 252 List<NeighboringCellInfo> getNeighboringCellInfo(String callingPkg); 253 254 int getCallState(); 255 int getDataActivity(); 256 int getDataState(); 257 258 /** 259 * Returns the current active phone type as integer. 260 * Returns TelephonyManager.PHONE_TYPE_CDMA if RILConstants.CDMA_PHONE 261 * and TelephonyManager.PHONE_TYPE_GSM if RILConstants.GSM_PHONE 262 */ 263 int getActivePhoneType(); 264 265 /** 266 * Returns the CDMA ERI icon index to display 267 */ 268 int getCdmaEriIconIndex(); 269 270 /** 271 * Returns the CDMA ERI icon mode, 272 * 0 - ON 273 * 1 - FLASHING 274 */ 275 int getCdmaEriIconMode(); 276 277 /** 278 * Returns the CDMA ERI text, 279 */ 280 String getCdmaEriText(); 281 282 /** 283 * Returns true if OTA service provisioning needs to run. 284 * Only relevant on some technologies, others will always 285 * return false. 286 */ 287 boolean needsOtaServiceProvisioning(); 288 289 /** 290 * Returns the unread count of voicemails 291 */ 292 int getVoiceMessageCount(); 293 294 /** 295 * Returns the network type for data transmission 296 */ 297 int getNetworkType(); 298 299 /** 300 * Returns the network type for data transmission 301 */ 302 int getDataNetworkType(); 303 304 /** 305 * Returns the network type for voice 306 */ 307 int getVoiceNetworkType(); 308 309 /** 310 * Return true if an ICC card is present 311 */ 312 boolean hasIccCard(); 313 314 /** 315 * Return if the current radio is LTE on CDMA. This 316 * is a tri-state return value as for a period of time 317 * the mode may be unknown. 318 * 319 * @return {@link Phone#LTE_ON_CDMA_UNKNOWN}, {@link Phone#LTE_ON_CDMA_FALSE} 320 * or {@link PHone#LTE_ON_CDMA_TRUE} 321 */ 322 int getLteOnCdmaMode(); 323 324 /** 325 * Returns the all observed cell information of the device. 326 */ 327 List<CellInfo> getAllCellInfo(); 328 329 /** 330 * Sets minimum time in milli-seconds between onCellInfoChanged 331 */ 332 void setCellInfoListRate(int rateInMillis); 333 334 /** 335 * Opens a logical channel to the ICC card. 336 * 337 * Input parameters equivalent to TS 27.007 AT+CCHO command. 338 * 339 * @param AID Application id. See ETSI 102.221 and 101.220. 340 * @return The logical channel id which is set to -1 on error. 341 */ 342 int iccOpenLogicalChannel(String AID); 343 344 /** 345 * Closes a previously opened logical channel to the ICC card. 346 * 347 * Input parameters equivalent to TS 27.007 AT+CCHC command. 348 * 349 * @param channel is the channel id to be closed as retruned by a 350 * successful iccOpenLogicalChannel. 351 * @return true if the channel was closed successfully. 352 */ 353 boolean iccCloseLogicalChannel(int channel); 354 355 /** 356 * Transmit an APDU to the ICC card over a logical channel. 357 * 358 * Input parameters equivalent to TS 27.007 AT+CGLA command. 359 * 360 * @param channel is the channel id to be closed as retruned by a 361 * successful iccOpenLogicalChannel. 362 * @param cla Class of the APDU command. 363 * @param instruction Instruction of the APDU command. 364 * @param p1 P1 value of the APDU command. 365 * @param p2 P2 value of the APDU command. 366 * @param p3 P3 value of the APDU command. If p3 is negative a 4 byte APDU 367 * is sent to the SIM. 368 * @param data Data to be sent with the APDU. 369 * @return The APDU response from the ICC card with the status appended at 370 * the end. If an error occurs, an empty string is returned. 371 */ 372 String iccTransmitApduLogicalChannel(int channel, int cla, int instruction, 373 int p1, int p2, int p3, String data); 374 375 /** 376 * Send ENVELOPE to the SIM and returns the response. 377 * 378 * @param contents String containing SAT/USAT response in hexadecimal 379 * format starting with command tag. See TS 102 223 for 380 * details. 381 * @return The APDU response from the ICC card, with the last 4 bytes 382 * being the status word. If the command fails, returns an empty 383 * string. 384 */ 385 String sendEnvelopeWithStatus(String content); 386 387 /** 388 * Read one of the NV items defined in {@link RadioNVItems} / {@code ril_nv_items.h}. 389 * Used for device configuration by some CDMA operators. 390 * 391 * @param itemID the ID of the item to read. 392 * @return the NV item as a String, or null on any failure. 393 */ 394 String nvReadItem(int itemID); 395 396 /** 397 * Write one of the NV items defined in {@link RadioNVItems} / {@code ril_nv_items.h}. 398 * Used for device configuration by some CDMA operators. 399 * 400 * @param itemID the ID of the item to read. 401 * @param itemValue the value to write, as a String. 402 * @return true on success; false on any failure. 403 */ 404 boolean nvWriteItem(int itemID, String itemValue); 405 406 /** 407 * Update the CDMA Preferred Roaming List (PRL) in the radio NV storage. 408 * Used for device configuration by some CDMA operators. 409 * 410 * @param preferredRoamingList byte array containing the new PRL. 411 * @return true on success; false on any failure. 412 */ 413 boolean nvWriteCdmaPrl(in byte[] preferredRoamingList); 414 415 /** 416 * Perform the specified type of NV config reset. The radio will be taken offline 417 * and the device must be rebooted after the operation. Used for device 418 * configuration by some CDMA operators. 419 * 420 * @param resetType the type of reset to perform (1 == factory reset; 2 == NV-only reset). 421 * @return true on success; false on any failure. 422 */ 423 boolean nvResetConfig(int resetType); 424 425 /* 426 * Get the preferred network type. 427 * Used for device configuration by some CDMA operators. 428 * 429 * @return the preferred network type, defined in RILConstants.java. 430 */ 431 int getPreferredNetworkType(); 432 433 /** 434 * Set the preferred network type. 435 * Used for device configuration by some CDMA operators. 436 * 437 * @param networkType the preferred network type, defined in RILConstants.java. 438 * @return true on success; false on any failure. 439 */ 440 boolean setPreferredNetworkType(int networkType); 441 442 /** 443 * Put a call on hold. 444 */ 445 void toggleHold(); 446 447 /** 448 * Merge foreground and background calls. 449 */ 450 void merge(); 451 452 /** 453 * Swap foreground and background calls. 454 */ 455 void swap(); 456 457 /** 458 * Mute the phone. 459 */ 460 void mute(boolean mute); 461 462 /** 463 * Start playing DTMF tone for the specified digit. 464 * 465 * @param digit the digit that corresponds with the desired tone. 466 * @param timedShortcode whether the specified digit should be played as a timed short code. 467 */ 468 void playDtmfTone(char digit, boolean timedShortCode); 469 470 /** 471 * Stop playing DTMF tones. 472 */ 473 void stopDtmfTone(); 474 475 /** 476 * Register a callback. 477 */ 478 void addListener(ITelephonyListener listener); 479 480 /** 481 * Unregister a callback. 482 */ 483 void removeListener(ITelephonyListener listener); 484} 485