1 /* 2 * Copyright (C) 2006 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.internal.telephony; 18 19 import com.android.internal.telephony.cdma.CdmaSmsBroadcastConfigInfo; 20 import com.android.internal.telephony.dataconnection.DataProfile; 21 import com.android.internal.telephony.gsm.SmsBroadcastConfigInfo; 22 import com.android.internal.telephony.RadioCapability; 23 import com.android.internal.telephony.uicc.IccCardStatus; 24 25 import android.os.Message; 26 import android.os.Handler; 27 28 29 /** 30 * {@hide} 31 */ 32 public interface CommandsInterface { 33 enum RadioState { 34 RADIO_OFF, /* Radio explicitly powered off (eg CFUN=0) */ 35 RADIO_UNAVAILABLE, /* Radio unavailable (eg, resetting or not booted) */ 36 RADIO_ON; /* Radio is on */ 37 isOn()38 public boolean isOn() /* and available...*/ { 39 return this == RADIO_ON; 40 } 41 isAvailable()42 public boolean isAvailable() { 43 return this != RADIO_UNAVAILABLE; 44 } 45 } 46 47 //***** Constants 48 49 // Used as parameter to dial() and setCLIR() below 50 static final int CLIR_DEFAULT = 0; // "use subscription default value" 51 static final int CLIR_INVOCATION = 1; // (restrict CLI presentation) 52 static final int CLIR_SUPPRESSION = 2; // (allow CLI presentation) 53 54 55 // Used as parameters for call forward methods below 56 static final int CF_ACTION_DISABLE = 0; 57 static final int CF_ACTION_ENABLE = 1; 58 // static final int CF_ACTION_UNUSED = 2; 59 static final int CF_ACTION_REGISTRATION = 3; 60 static final int CF_ACTION_ERASURE = 4; 61 62 static final int CF_REASON_UNCONDITIONAL = 0; 63 static final int CF_REASON_BUSY = 1; 64 static final int CF_REASON_NO_REPLY = 2; 65 static final int CF_REASON_NOT_REACHABLE = 3; 66 static final int CF_REASON_ALL = 4; 67 static final int CF_REASON_ALL_CONDITIONAL = 5; 68 69 // Used for call barring methods below 70 static final String CB_FACILITY_BAOC = "AO"; 71 static final String CB_FACILITY_BAOIC = "OI"; 72 static final String CB_FACILITY_BAOICxH = "OX"; 73 static final String CB_FACILITY_BAIC = "AI"; 74 static final String CB_FACILITY_BAICr = "IR"; 75 static final String CB_FACILITY_BA_ALL = "AB"; 76 static final String CB_FACILITY_BA_MO = "AG"; 77 static final String CB_FACILITY_BA_MT = "AC"; 78 static final String CB_FACILITY_BA_SIM = "SC"; 79 static final String CB_FACILITY_BA_FD = "FD"; 80 81 82 // Used for various supp services apis 83 // See 27.007 +CCFC or +CLCK 84 static final int SERVICE_CLASS_NONE = 0; // no user input 85 static final int SERVICE_CLASS_VOICE = (1 << 0); 86 static final int SERVICE_CLASS_DATA = (1 << 1); //synonym for 16+32+64+128 87 static final int SERVICE_CLASS_FAX = (1 << 2); 88 static final int SERVICE_CLASS_SMS = (1 << 3); 89 static final int SERVICE_CLASS_DATA_SYNC = (1 << 4); 90 static final int SERVICE_CLASS_DATA_ASYNC = (1 << 5); 91 static final int SERVICE_CLASS_PACKET = (1 << 6); 92 static final int SERVICE_CLASS_PAD = (1 << 7); 93 static final int SERVICE_CLASS_MAX = (1 << 7); // Max SERVICE_CLASS value 94 95 // Numeric representation of string values returned 96 // by messages sent to setOnUSSD handler 97 static final int USSD_MODE_NOTIFY = 0; 98 static final int USSD_MODE_REQUEST = 1; 99 static final int USSD_MODE_NW_RELEASE = 2; 100 static final int USSD_MODE_LOCAL_CLIENT = 3; 101 static final int USSD_MODE_NOT_SUPPORTED = 4; 102 static final int USSD_MODE_NW_TIMEOUT = 5; 103 104 // GSM SMS fail cause for acknowledgeLastIncomingSMS. From TS 23.040, 9.2.3.22. 105 static final int GSM_SMS_FAIL_CAUSE_MEMORY_CAPACITY_EXCEEDED = 0xD3; 106 static final int GSM_SMS_FAIL_CAUSE_USIM_APP_TOOLKIT_BUSY = 0xD4; 107 static final int GSM_SMS_FAIL_CAUSE_USIM_DATA_DOWNLOAD_ERROR = 0xD5; 108 static final int GSM_SMS_FAIL_CAUSE_UNSPECIFIED_ERROR = 0xFF; 109 110 // CDMA SMS fail cause for acknowledgeLastIncomingCdmaSms. From TS N.S0005, 6.5.2.125. 111 static final int CDMA_SMS_FAIL_CAUSE_INVALID_TELESERVICE_ID = 4; 112 static final int CDMA_SMS_FAIL_CAUSE_RESOURCE_SHORTAGE = 35; 113 static final int CDMA_SMS_FAIL_CAUSE_OTHER_TERMINAL_PROBLEM = 39; 114 static final int CDMA_SMS_FAIL_CAUSE_ENCODING_PROBLEM = 96; 115 116 //***** Methods getRadioState()117 RadioState getRadioState(); 118 119 /** 120 * response.obj.result is an int[2] 121 * 122 * response.obj.result[0] is IMS registration state 123 * 0 - Not registered 124 * 1 - Registered 125 * response.obj.result[1] is of type RILConstants.GSM_PHONE or 126 * RILConstants.CDMA_PHONE 127 */ getImsRegistrationState(Message result)128 void getImsRegistrationState(Message result); 129 130 /** 131 * Fires on any RadioState transition 132 * Always fires immediately as well 133 * 134 * do not attempt to calculate transitions by storing getRadioState() values 135 * on previous invocations of this notification. Instead, use the other 136 * registration methods 137 */ registerForRadioStateChanged(Handler h, int what, Object obj)138 void registerForRadioStateChanged(Handler h, int what, Object obj); unregisterForRadioStateChanged(Handler h)139 void unregisterForRadioStateChanged(Handler h); 140 registerForVoiceRadioTechChanged(Handler h, int what, Object obj)141 void registerForVoiceRadioTechChanged(Handler h, int what, Object obj); unregisterForVoiceRadioTechChanged(Handler h)142 void unregisterForVoiceRadioTechChanged(Handler h); registerForImsNetworkStateChanged(Handler h, int what, Object obj)143 void registerForImsNetworkStateChanged(Handler h, int what, Object obj); unregisterForImsNetworkStateChanged(Handler h)144 void unregisterForImsNetworkStateChanged(Handler h); 145 146 /** 147 * Fires on any transition into RadioState.isOn() 148 * Fires immediately if currently in that state 149 * In general, actions should be idempotent. State may change 150 * before event is received. 151 */ registerForOn(Handler h, int what, Object obj)152 void registerForOn(Handler h, int what, Object obj); unregisterForOn(Handler h)153 void unregisterForOn(Handler h); 154 155 /** 156 * Fires on any transition out of RadioState.isAvailable() 157 * Fires immediately if currently in that state 158 * In general, actions should be idempotent. State may change 159 * before event is received. 160 */ registerForAvailable(Handler h, int what, Object obj)161 void registerForAvailable(Handler h, int what, Object obj); unregisterForAvailable(Handler h)162 void unregisterForAvailable(Handler h); 163 164 /** 165 * Fires on any transition into !RadioState.isAvailable() 166 * Fires immediately if currently in that state 167 * In general, actions should be idempotent. State may change 168 * before event is received. 169 */ registerForNotAvailable(Handler h, int what, Object obj)170 void registerForNotAvailable(Handler h, int what, Object obj); unregisterForNotAvailable(Handler h)171 void unregisterForNotAvailable(Handler h); 172 173 /** 174 * Fires on any transition into RADIO_OFF or !RadioState.isAvailable() 175 * Fires immediately if currently in that state 176 * In general, actions should be idempotent. State may change 177 * before event is received. 178 */ registerForOffOrNotAvailable(Handler h, int what, Object obj)179 void registerForOffOrNotAvailable(Handler h, int what, Object obj); unregisterForOffOrNotAvailable(Handler h)180 void unregisterForOffOrNotAvailable(Handler h); 181 182 /** 183 * Fires on any change in ICC status 184 */ registerForIccStatusChanged(Handler h, int what, Object obj)185 void registerForIccStatusChanged(Handler h, int what, Object obj); unregisterForIccStatusChanged(Handler h)186 void unregisterForIccStatusChanged(Handler h); 187 registerForCallStateChanged(Handler h, int what, Object obj)188 void registerForCallStateChanged(Handler h, int what, Object obj); unregisterForCallStateChanged(Handler h)189 void unregisterForCallStateChanged(Handler h); registerForVoiceNetworkStateChanged(Handler h, int what, Object obj)190 void registerForVoiceNetworkStateChanged(Handler h, int what, Object obj); unregisterForVoiceNetworkStateChanged(Handler h)191 void unregisterForVoiceNetworkStateChanged(Handler h); registerForDataNetworkStateChanged(Handler h, int what, Object obj)192 void registerForDataNetworkStateChanged(Handler h, int what, Object obj); unregisterForDataNetworkStateChanged(Handler h)193 void unregisterForDataNetworkStateChanged(Handler h); 194 195 /** InCall voice privacy notifications */ registerForInCallVoicePrivacyOn(Handler h, int what, Object obj)196 void registerForInCallVoicePrivacyOn(Handler h, int what, Object obj); unregisterForInCallVoicePrivacyOn(Handler h)197 void unregisterForInCallVoicePrivacyOn(Handler h); registerForInCallVoicePrivacyOff(Handler h, int what, Object obj)198 void registerForInCallVoicePrivacyOff(Handler h, int what, Object obj); unregisterForInCallVoicePrivacyOff(Handler h)199 void unregisterForInCallVoicePrivacyOff(Handler h); 200 201 /** Single Radio Voice Call State progress notifications */ registerForSrvccStateChanged(Handler h, int what, Object obj)202 void registerForSrvccStateChanged(Handler h, int what, Object obj); unregisterForSrvccStateChanged(Handler h)203 void unregisterForSrvccStateChanged(Handler h); 204 205 /** 206 * Handlers for subscription status change indications. 207 * 208 * @param h Handler for subscription status change messages. 209 * @param what User-defined message code. 210 * @param obj User object. 211 */ registerForSubscriptionStatusChanged(Handler h, int what, Object obj)212 void registerForSubscriptionStatusChanged(Handler h, int what, Object obj); unregisterForSubscriptionStatusChanged(Handler h)213 void unregisterForSubscriptionStatusChanged(Handler h); 214 215 /** 216 * fires on any change in hardware configuration. 217 */ registerForHardwareConfigChanged(Handler h, int what, Object obj)218 void registerForHardwareConfigChanged(Handler h, int what, Object obj); unregisterForHardwareConfigChanged(Handler h)219 void unregisterForHardwareConfigChanged(Handler h); 220 221 /** 222 * unlike the register* methods, there's only one new 3GPP format SMS handler. 223 * if you need to unregister, you should also tell the radio to stop 224 * sending SMS's to you (via AT+CNMI) 225 * 226 * AsyncResult.result is a String containing the SMS PDU 227 */ setOnNewGsmSms(Handler h, int what, Object obj)228 void setOnNewGsmSms(Handler h, int what, Object obj); unSetOnNewGsmSms(Handler h)229 void unSetOnNewGsmSms(Handler h); 230 231 /** 232 * unlike the register* methods, there's only one new 3GPP2 format SMS handler. 233 * if you need to unregister, you should also tell the radio to stop 234 * sending SMS's to you (via AT+CNMI) 235 * 236 * AsyncResult.result is a String containing the SMS PDU 237 */ setOnNewCdmaSms(Handler h, int what, Object obj)238 void setOnNewCdmaSms(Handler h, int what, Object obj); unSetOnNewCdmaSms(Handler h)239 void unSetOnNewCdmaSms(Handler h); 240 241 /** 242 * Set the handler for SMS Cell Broadcast messages. 243 * 244 * AsyncResult.result is a byte array containing the SMS-CB PDU 245 */ setOnNewGsmBroadcastSms(Handler h, int what, Object obj)246 void setOnNewGsmBroadcastSms(Handler h, int what, Object obj); unSetOnNewGsmBroadcastSms(Handler h)247 void unSetOnNewGsmBroadcastSms(Handler h); 248 249 /** 250 * Register for NEW_SMS_ON_SIM unsolicited message 251 * 252 * AsyncResult.result is an int array containing the index of new SMS 253 */ setOnSmsOnSim(Handler h, int what, Object obj)254 void setOnSmsOnSim(Handler h, int what, Object obj); unSetOnSmsOnSim(Handler h)255 void unSetOnSmsOnSim(Handler h); 256 257 /** 258 * Register for NEW_SMS_STATUS_REPORT unsolicited message 259 * 260 * AsyncResult.result is a String containing the status report PDU 261 */ setOnSmsStatus(Handler h, int what, Object obj)262 void setOnSmsStatus(Handler h, int what, Object obj); unSetOnSmsStatus(Handler h)263 void unSetOnSmsStatus(Handler h); 264 265 /** 266 * unlike the register* methods, there's only one NITZ time handler 267 * 268 * AsyncResult.result is an Object[] 269 * ((Object[])AsyncResult.result)[0] is a String containing the NITZ time string 270 * ((Object[])AsyncResult.result)[1] is a Long containing the milliseconds since boot as 271 * returned by elapsedRealtime() when this NITZ time 272 * was posted. 273 * 274 * Please note that the delivery of this message may be delayed several 275 * seconds on system startup 276 */ setOnNITZTime(Handler h, int what, Object obj)277 void setOnNITZTime(Handler h, int what, Object obj); unSetOnNITZTime(Handler h)278 void unSetOnNITZTime(Handler h); 279 280 /** 281 * unlike the register* methods, there's only one USSD notify handler 282 * 283 * Represents the arrival of a USSD "notify" message, which may 284 * or may not have been triggered by a previous USSD send 285 * 286 * AsyncResult.result is a String[] 287 * ((String[])(AsyncResult.result))[0] contains status code 288 * "0" USSD-Notify -- text in ((const char **)data)[1] 289 * "1" USSD-Request -- text in ((const char **)data)[1] 290 * "2" Session terminated by network 291 * "3" other local client (eg, SIM Toolkit) has responded 292 * "4" Operation not supported 293 * "5" Network timeout 294 * 295 * ((String[])(AsyncResult.result))[1] contains the USSD message 296 * The numeric representations of these are in USSD_MODE_* 297 */ 298 setOnUSSD(Handler h, int what, Object obj)299 void setOnUSSD(Handler h, int what, Object obj); unSetOnUSSD(Handler h)300 void unSetOnUSSD(Handler h); 301 302 /** 303 * unlike the register* methods, there's only one signal strength handler 304 * AsyncResult.result is an int[2] 305 * response.obj.result[0] is received signal strength (0-31, 99) 306 * response.obj.result[1] is bit error rate (0-7, 99) 307 * as defined in TS 27.007 8.5 308 */ 309 setOnSignalStrengthUpdate(Handler h, int what, Object obj)310 void setOnSignalStrengthUpdate(Handler h, int what, Object obj); unSetOnSignalStrengthUpdate(Handler h)311 void unSetOnSignalStrengthUpdate(Handler h); 312 313 /** 314 * Sets the handler for SIM/RUIM SMS storage full unsolicited message. 315 * Unlike the register* methods, there's only one notification handler 316 * 317 * @param h Handler for notification message. 318 * @param what User-defined message code. 319 * @param obj User object. 320 */ setOnIccSmsFull(Handler h, int what, Object obj)321 void setOnIccSmsFull(Handler h, int what, Object obj); unSetOnIccSmsFull(Handler h)322 void unSetOnIccSmsFull(Handler h); 323 324 /** 325 * Sets the handler for SIM Refresh notifications. 326 * 327 * @param h Handler for notification message. 328 * @param what User-defined message code. 329 * @param obj User object. 330 */ registerForIccRefresh(Handler h, int what, Object obj)331 void registerForIccRefresh(Handler h, int what, Object obj); unregisterForIccRefresh(Handler h)332 void unregisterForIccRefresh(Handler h); 333 setOnIccRefresh(Handler h, int what, Object obj)334 void setOnIccRefresh(Handler h, int what, Object obj); unsetOnIccRefresh(Handler h)335 void unsetOnIccRefresh(Handler h); 336 337 /** 338 * Sets the handler for RING notifications. 339 * Unlike the register* methods, there's only one notification handler 340 * 341 * @param h Handler for notification message. 342 * @param what User-defined message code. 343 * @param obj User object. 344 */ setOnCallRing(Handler h, int what, Object obj)345 void setOnCallRing(Handler h, int what, Object obj); unSetOnCallRing(Handler h)346 void unSetOnCallRing(Handler h); 347 348 /** 349 * Sets the handler for RESTRICTED_STATE changed notification, 350 * eg, for Domain Specific Access Control 351 * unlike the register* methods, there's only one signal strength handler 352 * 353 * AsyncResult.result is an int[1] 354 * response.obj.result[0] is a bitmask of RIL_RESTRICTED_STATE_* values 355 */ 356 setOnRestrictedStateChanged(Handler h, int what, Object obj)357 void setOnRestrictedStateChanged(Handler h, int what, Object obj); unSetOnRestrictedStateChanged(Handler h)358 void unSetOnRestrictedStateChanged(Handler h); 359 360 /** 361 * Sets the handler for Supplementary Service Notifications. 362 * Unlike the register* methods, there's only one notification handler 363 * 364 * @param h Handler for notification message. 365 * @param what User-defined message code. 366 * @param obj User object. 367 */ setOnSuppServiceNotification(Handler h, int what, Object obj)368 void setOnSuppServiceNotification(Handler h, int what, Object obj); unSetOnSuppServiceNotification(Handler h)369 void unSetOnSuppServiceNotification(Handler h); 370 371 /** 372 * Sets the handler for Session End Notifications for CAT. 373 * Unlike the register* methods, there's only one notification handler 374 * 375 * @param h Handler for notification message. 376 * @param what User-defined message code. 377 * @param obj User object. 378 */ setOnCatSessionEnd(Handler h, int what, Object obj)379 void setOnCatSessionEnd(Handler h, int what, Object obj); unSetOnCatSessionEnd(Handler h)380 void unSetOnCatSessionEnd(Handler h); 381 382 /** 383 * Sets the handler for Proactive Commands for CAT. 384 * Unlike the register* methods, there's only one notification handler 385 * 386 * @param h Handler for notification message. 387 * @param what User-defined message code. 388 * @param obj User object. 389 */ setOnCatProactiveCmd(Handler h, int what, Object obj)390 void setOnCatProactiveCmd(Handler h, int what, Object obj); unSetOnCatProactiveCmd(Handler h)391 void unSetOnCatProactiveCmd(Handler h); 392 393 /** 394 * Sets the handler for Event Notifications for CAT. 395 * Unlike the register* methods, there's only one notification handler 396 * 397 * @param h Handler for notification message. 398 * @param what User-defined message code. 399 * @param obj User object. 400 */ setOnCatEvent(Handler h, int what, Object obj)401 void setOnCatEvent(Handler h, int what, Object obj); unSetOnCatEvent(Handler h)402 void unSetOnCatEvent(Handler h); 403 404 /** 405 * Sets the handler for Call Set Up Notifications for CAT. 406 * Unlike the register* methods, there's only one notification handler 407 * 408 * @param h Handler for notification message. 409 * @param what User-defined message code. 410 * @param obj User object. 411 */ setOnCatCallSetUp(Handler h, int what, Object obj)412 void setOnCatCallSetUp(Handler h, int what, Object obj); unSetOnCatCallSetUp(Handler h)413 void unSetOnCatCallSetUp(Handler h); 414 415 /** 416 * Enables/disbables supplementary service related notifications from 417 * the network. 418 * 419 * @param enable true to enable notifications, false to disable. 420 * @param result Message to be posted when command completes. 421 */ setSuppServiceNotifications(boolean enable, Message result)422 void setSuppServiceNotifications(boolean enable, Message result); 423 //void unSetSuppServiceNotifications(Handler h); 424 425 /** 426 * Sets the handler for Alpha Notification during STK Call Control. 427 * Unlike the register* methods, there's only one notification handler 428 * 429 * @param h Handler for notification message. 430 * @param what User-defined message code. 431 * @param obj User object. 432 */ setOnCatCcAlphaNotify(Handler h, int what, Object obj)433 void setOnCatCcAlphaNotify(Handler h, int what, Object obj); unSetOnCatCcAlphaNotify(Handler h)434 void unSetOnCatCcAlphaNotify(Handler h); 435 436 /** 437 * Sets the handler for notifying Suplementary Services (SS) 438 * Data during STK Call Control. 439 * Unlike the register* methods, there's only one notification handler 440 * 441 * @param h Handler for notification message. 442 * @param what User-defined message code. 443 * @param obj User object. 444 */ setOnSs(Handler h, int what, Object obj)445 void setOnSs(Handler h, int what, Object obj); unSetOnSs(Handler h)446 void unSetOnSs(Handler h); 447 448 /** 449 * Sets the handler for Event Notifications for CDMA Display Info. 450 * Unlike the register* methods, there's only one notification handler 451 * 452 * @param h Handler for notification message. 453 * @param what User-defined message code. 454 * @param obj User object. 455 */ registerForDisplayInfo(Handler h, int what, Object obj)456 void registerForDisplayInfo(Handler h, int what, Object obj); unregisterForDisplayInfo(Handler h)457 void unregisterForDisplayInfo(Handler h); 458 459 /** 460 * Sets the handler for Event Notifications for CallWaiting Info. 461 * Unlike the register* methods, there's only one notification handler 462 * 463 * @param h Handler for notification message. 464 * @param what User-defined message code. 465 * @param obj User object. 466 */ registerForCallWaitingInfo(Handler h, int what, Object obj)467 void registerForCallWaitingInfo(Handler h, int what, Object obj); unregisterForCallWaitingInfo(Handler h)468 void unregisterForCallWaitingInfo(Handler h); 469 470 /** 471 * Sets the handler for Event Notifications for Signal Info. 472 * Unlike the register* methods, there's only one notification handler 473 * 474 * @param h Handler for notification message. 475 * @param what User-defined message code. 476 * @param obj User object. 477 */ registerForSignalInfo(Handler h, int what, Object obj)478 void registerForSignalInfo(Handler h, int what, Object obj); unregisterForSignalInfo(Handler h)479 void unregisterForSignalInfo(Handler h); 480 481 /** 482 * Registers the handler for CDMA number information record 483 * Unlike the register* methods, there's only one notification handler 484 * 485 * @param h Handler for notification message. 486 * @param what User-defined message code. 487 * @param obj User object. 488 */ registerForNumberInfo(Handler h, int what, Object obj)489 void registerForNumberInfo(Handler h, int what, Object obj); unregisterForNumberInfo(Handler h)490 void unregisterForNumberInfo(Handler h); 491 492 /** 493 * Registers the handler for CDMA redirected number Information record 494 * Unlike the register* methods, there's only one notification handler 495 * 496 * @param h Handler for notification message. 497 * @param what User-defined message code. 498 * @param obj User object. 499 */ registerForRedirectedNumberInfo(Handler h, int what, Object obj)500 void registerForRedirectedNumberInfo(Handler h, int what, Object obj); unregisterForRedirectedNumberInfo(Handler h)501 void unregisterForRedirectedNumberInfo(Handler h); 502 503 /** 504 * Registers the handler for CDMA line control information record 505 * Unlike the register* methods, there's only one notification handler 506 * 507 * @param h Handler for notification message. 508 * @param what User-defined message code. 509 * @param obj User object. 510 */ registerForLineControlInfo(Handler h, int what, Object obj)511 void registerForLineControlInfo(Handler h, int what, Object obj); unregisterForLineControlInfo(Handler h)512 void unregisterForLineControlInfo(Handler h); 513 514 /** 515 * Registers the handler for CDMA T53 CLIR information record 516 * Unlike the register* methods, there's only one notification handler 517 * 518 * @param h Handler for notification message. 519 * @param what User-defined message code. 520 * @param obj User object. 521 */ registerFoT53ClirlInfo(Handler h, int what, Object obj)522 void registerFoT53ClirlInfo(Handler h, int what, Object obj); unregisterForT53ClirInfo(Handler h)523 void unregisterForT53ClirInfo(Handler h); 524 525 /** 526 * Registers the handler for CDMA T53 audio control information record 527 * Unlike the register* methods, there's only one notification handler 528 * 529 * @param h Handler for notification message. 530 * @param what User-defined message code. 531 * @param obj User object. 532 */ registerForT53AudioControlInfo(Handler h, int what, Object obj)533 void registerForT53AudioControlInfo(Handler h, int what, Object obj); unregisterForT53AudioControlInfo(Handler h)534 void unregisterForT53AudioControlInfo(Handler h); 535 536 /** 537 * Fires on if Modem enters Emergency Callback mode 538 */ setEmergencyCallbackMode(Handler h, int what, Object obj)539 void setEmergencyCallbackMode(Handler h, int what, Object obj); 540 541 /** 542 * Fires on any CDMA OTA provision status change 543 */ registerForCdmaOtaProvision(Handler h,int what, Object obj)544 void registerForCdmaOtaProvision(Handler h,int what, Object obj); unregisterForCdmaOtaProvision(Handler h)545 void unregisterForCdmaOtaProvision(Handler h); 546 547 /** 548 * Registers the handler when out-band ringback tone is needed.<p> 549 * 550 * Messages received from this: 551 * Message.obj will be an AsyncResult 552 * AsyncResult.userObj = obj 553 * AsyncResult.result = boolean. <p> 554 */ registerForRingbackTone(Handler h, int what, Object obj)555 void registerForRingbackTone(Handler h, int what, Object obj); unregisterForRingbackTone(Handler h)556 void unregisterForRingbackTone(Handler h); 557 558 /** 559 * Registers the handler when mute/unmute need to be resent to get 560 * uplink audio during a call.<p> 561 * 562 * @param h Handler for notification message. 563 * @param what User-defined message code. 564 * @param obj User object. 565 * 566 */ registerForResendIncallMute(Handler h, int what, Object obj)567 void registerForResendIncallMute(Handler h, int what, Object obj); unregisterForResendIncallMute(Handler h)568 void unregisterForResendIncallMute(Handler h); 569 570 /** 571 * Registers the handler for when Cdma subscription changed events 572 * 573 * @param h Handler for notification message. 574 * @param what User-defined message code. 575 * @param obj User object. 576 * 577 */ registerForCdmaSubscriptionChanged(Handler h, int what, Object obj)578 void registerForCdmaSubscriptionChanged(Handler h, int what, Object obj); unregisterForCdmaSubscriptionChanged(Handler h)579 void unregisterForCdmaSubscriptionChanged(Handler h); 580 581 /** 582 * Registers the handler for when Cdma prl changed events 583 * 584 * @param h Handler for notification message. 585 * @param what User-defined message code. 586 * @param obj User object. 587 * 588 */ registerForCdmaPrlChanged(Handler h, int what, Object obj)589 void registerForCdmaPrlChanged(Handler h, int what, Object obj); unregisterForCdmaPrlChanged(Handler h)590 void unregisterForCdmaPrlChanged(Handler h); 591 592 /** 593 * Registers the handler for when Cdma prl changed events 594 * 595 * @param h Handler for notification message. 596 * @param what User-defined message code. 597 * @param obj User object. 598 * 599 */ registerForExitEmergencyCallbackMode(Handler h, int what, Object obj)600 void registerForExitEmergencyCallbackMode(Handler h, int what, Object obj); unregisterForExitEmergencyCallbackMode(Handler h)601 void unregisterForExitEmergencyCallbackMode(Handler h); 602 603 /** 604 * Registers the handler for RIL_UNSOL_RIL_CONNECT events. 605 * 606 * When ril connects or disconnects a message is sent to the registrant 607 * which contains an AsyncResult, ar, in msg.obj. The ar.result is an 608 * Integer which is the version of the ril or -1 if the ril disconnected. 609 * 610 * @param h Handler for notification message. 611 * @param what User-defined message code. 612 * @param obj User object. 613 */ registerForRilConnected(Handler h, int what, Object obj)614 void registerForRilConnected(Handler h, int what, Object obj); unregisterForRilConnected(Handler h)615 void unregisterForRilConnected(Handler h); 616 617 /** 618 * Supply the ICC PIN to the ICC card 619 * 620 * returned message 621 * retMsg.obj = AsyncResult ar 622 * ar.exception carries exception on failure 623 * This exception is CommandException with an error of PASSWORD_INCORRECT 624 * if the password is incorrect 625 * 626 * ar.result is an optional array of integers where the first entry 627 * is the number of attempts remaining before the ICC will be PUK locked. 628 * 629 * ar.exception and ar.result are null on success 630 */ 631 supplyIccPin(String pin, Message result)632 void supplyIccPin(String pin, Message result); 633 634 /** 635 * Supply the PIN for the app with this AID on the ICC card 636 * 637 * AID (Application ID), See ETSI 102.221 8.1 and 101.220 4 638 * 639 * returned message 640 * retMsg.obj = AsyncResult ar 641 * ar.exception carries exception on failure 642 * This exception is CommandException with an error of PASSWORD_INCORRECT 643 * if the password is incorrect 644 * 645 * ar.result is an optional array of integers where the first entry 646 * is the number of attempts remaining before the ICC will be PUK locked. 647 * 648 * ar.exception and ar.result are null on success 649 */ 650 supplyIccPinForApp(String pin, String aid, Message result)651 void supplyIccPinForApp(String pin, String aid, Message result); 652 653 /** 654 * Supply the ICC PUK and newPin to the ICC card 655 * 656 * returned message 657 * retMsg.obj = AsyncResult ar 658 * ar.exception carries exception on failure 659 * This exception is CommandException with an error of PASSWORD_INCORRECT 660 * if the password is incorrect 661 * 662 * ar.result is an optional array of integers where the first entry 663 * is the number of attempts remaining before the ICC is permanently disabled. 664 * 665 * ar.exception and ar.result are null on success 666 */ 667 supplyIccPuk(String puk, String newPin, Message result)668 void supplyIccPuk(String puk, String newPin, Message result); 669 670 /** 671 * Supply the PUK, new pin for the app with this AID on the ICC card 672 * 673 * AID (Application ID), See ETSI 102.221 8.1 and 101.220 4 674 * 675 * retMsg.obj = AsyncResult ar 676 * ar.exception carries exception on failure 677 * This exception is CommandException with an error of PASSWORD_INCORRECT 678 * if the password is incorrect 679 * 680 * ar.result is an optional array of integers where the first entry 681 * is the number of attempts remaining before the ICC is permanently disabled. 682 * 683 * ar.exception and ar.result are null on success 684 */ 685 supplyIccPukForApp(String puk, String newPin, String aid, Message result)686 void supplyIccPukForApp(String puk, String newPin, String aid, Message result); 687 688 /** 689 * Supply the ICC PIN2 to the ICC card 690 * Only called following operation where ICC_PIN2 was 691 * returned as a a failure from a previous operation 692 * 693 * returned message 694 * retMsg.obj = AsyncResult ar 695 * ar.exception carries exception on failure 696 * This exception is CommandException with an error of PASSWORD_INCORRECT 697 * if the password is incorrect 698 * 699 * ar.result is an optional array of integers where the first entry 700 * is the number of attempts remaining before the ICC will be PUK locked. 701 * 702 * ar.exception and ar.result are null on success 703 */ 704 supplyIccPin2(String pin2, Message result)705 void supplyIccPin2(String pin2, Message result); 706 707 /** 708 * Supply the PIN2 for the app with this AID on the ICC card 709 * Only called following operation where ICC_PIN2 was 710 * returned as a a failure from a previous operation 711 * 712 * AID (Application ID), See ETSI 102.221 8.1 and 101.220 4 713 * 714 * returned message 715 * retMsg.obj = AsyncResult ar 716 * ar.exception carries exception on failure 717 * This exception is CommandException with an error of PASSWORD_INCORRECT 718 * if the password is incorrect 719 * 720 * ar.result is an optional array of integers where the first entry 721 * is the number of attempts remaining before the ICC will be PUK locked. 722 * 723 * ar.exception and ar.result are null on success 724 */ 725 supplyIccPin2ForApp(String pin2, String aid, Message result)726 void supplyIccPin2ForApp(String pin2, String aid, Message result); 727 728 /** 729 * Supply the SIM PUK2 to the SIM card 730 * Only called following operation where SIM_PUK2 was 731 * returned as a a failure from a previous operation 732 * 733 * returned message 734 * retMsg.obj = AsyncResult ar 735 * ar.exception carries exception on failure 736 * This exception is CommandException with an error of PASSWORD_INCORRECT 737 * if the password is incorrect 738 * 739 * ar.result is an optional array of integers where the first entry 740 * is the number of attempts remaining before the ICC is permanently disabled. 741 * 742 * ar.exception and ar.result are null on success 743 */ 744 supplyIccPuk2(String puk2, String newPin2, Message result)745 void supplyIccPuk2(String puk2, String newPin2, Message result); 746 747 /** 748 * Supply the PUK2, newPin2 for the app with this AID on the ICC card 749 * Only called following operation where SIM_PUK2 was 750 * returned as a a failure from a previous operation 751 * 752 * AID (Application ID), See ETSI 102.221 8.1 and 101.220 4 753 * 754 * returned message 755 * retMsg.obj = AsyncResult ar 756 * ar.exception carries exception on failure 757 * This exception is CommandException with an error of PASSWORD_INCORRECT 758 * if the password is incorrect 759 * 760 * ar.result is an optional array of integers where the first entry 761 * is the number of attempts remaining before the ICC is permanently disabled. 762 * 763 * ar.exception and ar.result are null on success 764 */ 765 supplyIccPuk2ForApp(String puk2, String newPin2, String aid, Message result)766 void supplyIccPuk2ForApp(String puk2, String newPin2, String aid, Message result); 767 768 // TODO: Add java doc and indicate that msg.arg1 contains the number of attempts remaining. changeIccPin(String oldPin, String newPin, Message result)769 void changeIccPin(String oldPin, String newPin, Message result); changeIccPinForApp(String oldPin, String newPin, String aidPtr, Message result)770 void changeIccPinForApp(String oldPin, String newPin, String aidPtr, Message result); changeIccPin2(String oldPin2, String newPin2, Message result)771 void changeIccPin2(String oldPin2, String newPin2, Message result); changeIccPin2ForApp(String oldPin2, String newPin2, String aidPtr, Message result)772 void changeIccPin2ForApp(String oldPin2, String newPin2, String aidPtr, Message result); 773 changeBarringPassword(String facility, String oldPwd, String newPwd, Message result)774 void changeBarringPassword(String facility, String oldPwd, String newPwd, Message result); 775 supplyNetworkDepersonalization(String netpin, Message result)776 void supplyNetworkDepersonalization(String netpin, Message result); 777 778 /** 779 * returned message 780 * retMsg.obj = AsyncResult ar 781 * ar.exception carries exception on failure 782 * ar.userObject contains the orignal value of result.obj 783 * ar.result contains a List of DriverCall 784 * The ar.result List is sorted by DriverCall.index 785 */ getCurrentCalls(Message result)786 void getCurrentCalls (Message result); 787 788 /** 789 * returned message 790 * retMsg.obj = AsyncResult ar 791 * ar.exception carries exception on failure 792 * ar.userObject contains the orignal value of result.obj 793 * ar.result contains a List of DataCallResponse 794 * @deprecated Do not use. 795 */ 796 @Deprecated getPDPContextList(Message result)797 void getPDPContextList(Message result); 798 799 /** 800 * returned message 801 * retMsg.obj = AsyncResult ar 802 * ar.exception carries exception on failure 803 * ar.userObject contains the orignal value of result.obj 804 * ar.result contains a List of DataCallResponse 805 */ getDataCallList(Message result)806 void getDataCallList(Message result); 807 808 /** 809 * returned message 810 * retMsg.obj = AsyncResult ar 811 * ar.exception carries exception on failure 812 * ar.userObject contains the orignal value of result.obj 813 * ar.result is null on success and failure 814 * 815 * CLIR_DEFAULT == on "use subscription default value" 816 * CLIR_SUPPRESSION == on "CLIR suppression" (allow CLI presentation) 817 * CLIR_INVOCATION == on "CLIR invocation" (restrict CLI presentation) 818 */ dial(String address, int clirMode, Message result)819 void dial (String address, int clirMode, Message result); 820 821 /** 822 * returned message 823 * retMsg.obj = AsyncResult ar 824 * ar.exception carries exception on failure 825 * ar.userObject contains the orignal value of result.obj 826 * ar.result is null on success and failure 827 * 828 * CLIR_DEFAULT == on "use subscription default value" 829 * CLIR_SUPPRESSION == on "CLIR suppression" (allow CLI presentation) 830 * CLIR_INVOCATION == on "CLIR invocation" (restrict CLI presentation) 831 */ dial(String address, int clirMode, UUSInfo uusInfo, Message result)832 void dial(String address, int clirMode, UUSInfo uusInfo, Message result); 833 834 /** 835 * returned message 836 * retMsg.obj = AsyncResult ar 837 * ar.exception carries exception on failure 838 * ar.userObject contains the orignal value of result.obj 839 * ar.result is String containing IMSI on success 840 */ getIMSI(Message result)841 void getIMSI(Message result); 842 843 /** 844 * returned message 845 * retMsg.obj = AsyncResult ar 846 * ar.exception carries exception on failure 847 * ar.userObject contains the orignal value of result.obj 848 * ar.result is String containing IMSI on success 849 */ getIMSIForApp(String aid, Message result)850 void getIMSIForApp(String aid, Message result); 851 852 /** 853 * returned message 854 * retMsg.obj = AsyncResult ar 855 * ar.exception carries exception on failure 856 * ar.userObject contains the orignal value of result.obj 857 * ar.result is String containing IMEI on success 858 */ getIMEI(Message result)859 void getIMEI(Message result); 860 861 /** 862 * returned message 863 * retMsg.obj = AsyncResult ar 864 * ar.exception carries exception on failure 865 * ar.userObject contains the orignal value of result.obj 866 * ar.result is String containing IMEISV on success 867 */ getIMEISV(Message result)868 void getIMEISV(Message result); 869 870 /** 871 * Hang up one individual connection. 872 * returned message 873 * retMsg.obj = AsyncResult ar 874 * ar.exception carries exception on failure 875 * ar.userObject contains the orignal value of result.obj 876 * ar.result is null on success and failure 877 * 878 * 3GPP 22.030 6.5.5 879 * "Releases a specific active call X" 880 */ hangupConnection(int gsmIndex, Message result)881 void hangupConnection (int gsmIndex, Message result); 882 883 /** 884 * 3GPP 22.030 6.5.5 885 * "Releases all held calls or sets User Determined User Busy (UDUB) 886 * for a waiting call." 887 * ar.exception carries exception on failure 888 * ar.userObject contains the orignal value of result.obj 889 * ar.result is null on success and failure 890 */ hangupWaitingOrBackground(Message result)891 void hangupWaitingOrBackground (Message result); 892 893 /** 894 * 3GPP 22.030 6.5.5 895 * "Releases all active calls (if any exist) and accepts 896 * the other (held or waiting) call." 897 * 898 * ar.exception carries exception on failure 899 * ar.userObject contains the orignal value of result.obj 900 * ar.result is null on success and failure 901 */ hangupForegroundResumeBackground(Message result)902 void hangupForegroundResumeBackground (Message result); 903 904 /** 905 * 3GPP 22.030 6.5.5 906 * "Places all active calls (if any exist) on hold and accepts 907 * the other (held or waiting) call." 908 * 909 * ar.exception carries exception on failure 910 * ar.userObject contains the orignal value of result.obj 911 * ar.result is null on success and failure 912 */ switchWaitingOrHoldingAndActive(Message result)913 void switchWaitingOrHoldingAndActive (Message result); 914 915 /** 916 * 3GPP 22.030 6.5.5 917 * "Adds a held call to the conversation" 918 * 919 * ar.exception carries exception on failure 920 * ar.userObject contains the orignal value of result.obj 921 * ar.result is null on success and failure 922 */ conference(Message result)923 void conference (Message result); 924 925 /** 926 * Set preferred Voice Privacy (VP). 927 * 928 * @param enable true is enhanced and false is normal VP 929 * @param result is a callback message 930 */ setPreferredVoicePrivacy(boolean enable, Message result)931 void setPreferredVoicePrivacy(boolean enable, Message result); 932 933 /** 934 * Get currently set preferred Voice Privacy (VP) mode. 935 * 936 * @param result is a callback message 937 */ getPreferredVoicePrivacy(Message result)938 void getPreferredVoicePrivacy(Message result); 939 940 /** 941 * 3GPP 22.030 6.5.5 942 * "Places all active calls on hold except call X with which 943 * communication shall be supported." 944 */ separateConnection(int gsmIndex, Message result)945 void separateConnection (int gsmIndex, Message result); 946 947 /** 948 * 949 * ar.exception carries exception on failure 950 * ar.userObject contains the orignal value of result.obj 951 * ar.result is null on success and failure 952 */ acceptCall(Message result)953 void acceptCall (Message result); 954 955 /** 956 * also known as UDUB 957 * ar.exception carries exception on failure 958 * ar.userObject contains the orignal value of result.obj 959 * ar.result is null on success and failure 960 */ rejectCall(Message result)961 void rejectCall (Message result); 962 963 /** 964 * 3GPP 22.030 6.5.5 965 * "Connects the two calls and disconnects the subscriber from both calls" 966 * 967 * ar.exception carries exception on failure 968 * ar.userObject contains the orignal value of result.obj 969 * ar.result is null on success and failure 970 */ explicitCallTransfer(Message result)971 void explicitCallTransfer (Message result); 972 973 /** 974 * cause code returned as int[0] in Message.obj.response 975 * Returns integer cause code defined in TS 24.008 976 * Annex H or closest approximation. 977 * Most significant codes: 978 * - Any defined in 22.001 F.4 (for generating busy/congestion) 979 * - Cause 68: ACM >= ACMMax 980 */ getLastCallFailCause(Message result)981 void getLastCallFailCause (Message result); 982 983 984 /** 985 * Reason for last PDP context deactivate or failure to activate 986 * cause code returned as int[0] in Message.obj.response 987 * returns an integer cause code defined in TS 24.008 988 * section 6.1.3.1.3 or close approximation 989 * @deprecated Do not use. 990 */ 991 @Deprecated getLastPdpFailCause(Message result)992 void getLastPdpFailCause (Message result); 993 994 /** 995 * The preferred new alternative to getLastPdpFailCause 996 * that is also CDMA-compatible. 997 */ getLastDataCallFailCause(Message result)998 void getLastDataCallFailCause (Message result); 999 setMute(boolean enableMute, Message response)1000 void setMute (boolean enableMute, Message response); 1001 getMute(Message response)1002 void getMute (Message response); 1003 1004 /** 1005 * response.obj is an AsyncResult 1006 * response.obj.result is an int[2] 1007 * response.obj.result[0] is received signal strength (0-31, 99) 1008 * response.obj.result[1] is bit error rate (0-7, 99) 1009 * as defined in TS 27.007 8.5 1010 */ getSignalStrength(Message response)1011 void getSignalStrength (Message response); 1012 1013 1014 /** 1015 * response.obj.result is an int[3] 1016 * response.obj.result[0] is registration state 0-5 from TS 27.007 7.2 1017 * response.obj.result[1] is LAC if registered or -1 if not 1018 * response.obj.result[2] is CID if registered or -1 if not 1019 * valid LAC and CIDs are 0x0000 - 0xffff 1020 * 1021 * Please note that registration state 4 ("unknown") is treated 1022 * as "out of service" above 1023 */ getVoiceRegistrationState(Message response)1024 void getVoiceRegistrationState (Message response); 1025 1026 /** 1027 * response.obj.result is an int[3] 1028 * response.obj.result[0] is registration state 0-5 from TS 27.007 7.2 1029 * response.obj.result[1] is LAC if registered or -1 if not 1030 * response.obj.result[2] is CID if registered or -1 if not 1031 * valid LAC and CIDs are 0x0000 - 0xffff 1032 * 1033 * Please note that registration state 4 ("unknown") is treated 1034 * as "out of service" above 1035 */ getDataRegistrationState(Message response)1036 void getDataRegistrationState (Message response); 1037 1038 /** 1039 * response.obj.result is a String[3] 1040 * response.obj.result[0] is long alpha or null if unregistered 1041 * response.obj.result[1] is short alpha or null if unregistered 1042 * response.obj.result[2] is numeric or null if unregistered 1043 */ getOperator(Message response)1044 void getOperator(Message response); 1045 1046 /** 1047 * ar.exception carries exception on failure 1048 * ar.userObject contains the orignal value of result.obj 1049 * ar.result is null on success and failure 1050 */ sendDtmf(char c, Message result)1051 void sendDtmf(char c, Message result); 1052 1053 1054 /** 1055 * ar.exception carries exception on failure 1056 * ar.userObject contains the orignal value of result.obj 1057 * ar.result is null on success and failure 1058 */ startDtmf(char c, Message result)1059 void startDtmf(char c, Message result); 1060 1061 /** 1062 * ar.exception carries exception on failure 1063 * ar.userObject contains the orignal value of result.obj 1064 * ar.result is null on success and failure 1065 */ stopDtmf(Message result)1066 void stopDtmf(Message result); 1067 1068 /** 1069 * ar.exception carries exception on failure 1070 * ar.userObject contains the orignal value of result.obj 1071 * ar.result is null on success and failure 1072 */ sendBurstDtmf(String dtmfString, int on, int off, Message result)1073 void sendBurstDtmf(String dtmfString, int on, int off, Message result); 1074 1075 /** 1076 * smscPDU is smsc address in PDU form GSM BCD format prefixed 1077 * by a length byte (as expected by TS 27.005) or NULL for default SMSC 1078 * pdu is SMS in PDU format as an ASCII hex string 1079 * less the SMSC address 1080 */ sendSMS(String smscPDU, String pdu, Message response)1081 void sendSMS (String smscPDU, String pdu, Message response); 1082 1083 /** 1084 * Send an SMS message, Identical to sendSMS, 1085 * except that more messages are expected to be sent soon 1086 * smscPDU is smsc address in PDU form GSM BCD format prefixed 1087 * by a length byte (as expected by TS 27.005) or NULL for default SMSC 1088 * pdu is SMS in PDU format as an ASCII hex string 1089 * less the SMSC address 1090 */ sendSMSExpectMore(String smscPDU, String pdu, Message response)1091 void sendSMSExpectMore (String smscPDU, String pdu, Message response); 1092 1093 /** 1094 * @param pdu is CDMA-SMS in internal pseudo-PDU format 1095 * @param response sent when operation completes 1096 */ sendCdmaSms(byte[] pdu, Message response)1097 void sendCdmaSms(byte[] pdu, Message response); 1098 1099 /** 1100 * send SMS over IMS with 3GPP/GSM SMS format 1101 * @param smscPDU is smsc address in PDU form GSM BCD format prefixed 1102 * by a length byte (as expected by TS 27.005) or NULL for default SMSC 1103 * @param pdu is SMS in PDU format as an ASCII hex string 1104 * less the SMSC address 1105 * @param retry indicates if this is a retry; 0 == not retry, nonzero = retry 1106 * @param messageRef valid field if retry is set to nonzero. 1107 * Contains messageRef from RIL_SMS_Response corresponding to failed MO SMS 1108 * @param response sent when operation completes 1109 */ sendImsGsmSms(String smscPDU, String pdu, int retry, int messageRef, Message response)1110 void sendImsGsmSms (String smscPDU, String pdu, int retry, int messageRef, 1111 Message response); 1112 1113 /** 1114 * send SMS over IMS with 3GPP2/CDMA SMS format 1115 * @param pdu is CDMA-SMS in internal pseudo-PDU format 1116 * @param response sent when operation completes 1117 * @param retry indicates if this is a retry; 0 == not retry, nonzero = retry 1118 * @param messageRef valid field if retry is set to nonzero. 1119 * Contains messageRef from RIL_SMS_Response corresponding to failed MO SMS 1120 * @param response sent when operation completes 1121 */ sendImsCdmaSms(byte[] pdu, int retry, int messageRef, Message response)1122 void sendImsCdmaSms(byte[] pdu, int retry, int messageRef, Message response); 1123 1124 /** 1125 * Deletes the specified SMS record from SIM memory (EF_SMS). 1126 * 1127 * @param index index of the SMS record to delete 1128 * @param response sent when operation completes 1129 */ deleteSmsOnSim(int index, Message response)1130 void deleteSmsOnSim(int index, Message response); 1131 1132 /** 1133 * Deletes the specified SMS record from RUIM memory (EF_SMS in DF_CDMA). 1134 * 1135 * @param index index of the SMS record to delete 1136 * @param response sent when operation completes 1137 */ deleteSmsOnRuim(int index, Message response)1138 void deleteSmsOnRuim(int index, Message response); 1139 1140 /** 1141 * Writes an SMS message to SIM memory (EF_SMS). 1142 * 1143 * @param status status of message on SIM. One of: 1144 * SmsManger.STATUS_ON_ICC_READ 1145 * SmsManger.STATUS_ON_ICC_UNREAD 1146 * SmsManger.STATUS_ON_ICC_SENT 1147 * SmsManger.STATUS_ON_ICC_UNSENT 1148 * @param pdu message PDU, as hex string 1149 * @param response sent when operation completes. 1150 * response.obj will be an AsyncResult, and will indicate 1151 * any error that may have occurred (eg, out of memory). 1152 */ writeSmsToSim(int status, String smsc, String pdu, Message response)1153 void writeSmsToSim(int status, String smsc, String pdu, Message response); 1154 writeSmsToRuim(int status, String pdu, Message response)1155 void writeSmsToRuim(int status, String pdu, Message response); 1156 setRadioPower(boolean on, Message response)1157 void setRadioPower(boolean on, Message response); 1158 acknowledgeLastIncomingGsmSms(boolean success, int cause, Message response)1159 void acknowledgeLastIncomingGsmSms(boolean success, int cause, Message response); 1160 acknowledgeLastIncomingCdmaSms(boolean success, int cause, Message response)1161 void acknowledgeLastIncomingCdmaSms(boolean success, int cause, Message response); 1162 1163 /** 1164 * Acknowledge successful or failed receipt of last incoming SMS, 1165 * including acknowledgement TPDU to send as the RP-User-Data element 1166 * of the RP-ACK or RP-ERROR PDU. 1167 * 1168 * @param success true to send RP-ACK, false to send RP-ERROR 1169 * @param ackPdu the acknowledgement TPDU in hexadecimal format 1170 * @param response sent when operation completes. 1171 */ acknowledgeIncomingGsmSmsWithPdu(boolean success, String ackPdu, Message response)1172 void acknowledgeIncomingGsmSmsWithPdu(boolean success, String ackPdu, Message response); 1173 1174 /** 1175 * parameters equivalent to 27.007 AT+CRSM command 1176 * response.obj will be an AsyncResult 1177 * response.obj.result will be an IccIoResult on success 1178 */ iccIO(int command, int fileid, String path, int p1, int p2, int p3, String data, String pin2, Message response)1179 void iccIO (int command, int fileid, String path, int p1, int p2, int p3, 1180 String data, String pin2, Message response); 1181 1182 /** 1183 * parameters equivalent to 27.007 AT+CRSM command 1184 * response.obj will be an AsyncResult 1185 * response.obj.userObj will be a IccIoResult on success 1186 */ iccIOForApp(int command, int fileid, String path, int p1, int p2, int p3, String data, String pin2, String aid, Message response)1187 void iccIOForApp (int command, int fileid, String path, int p1, int p2, int p3, 1188 String data, String pin2, String aid, Message response); 1189 1190 /** 1191 * (AsyncResult)response.obj).result is an int[] with element [0] set to 1192 * 1 for "CLIP is provisioned", and 0 for "CLIP is not provisioned". 1193 * 1194 * @param response is callback message 1195 */ 1196 queryCLIP(Message response)1197 void queryCLIP(Message response); 1198 1199 /** 1200 * response.obj will be a an int[2] 1201 * 1202 * response.obj[0] will be TS 27.007 +CLIR parameter 'n' 1203 * 0 presentation indicator is used according to the subscription of the CLIR service 1204 * 1 CLIR invocation 1205 * 2 CLIR suppression 1206 * 1207 * response.obj[1] will be TS 27.007 +CLIR parameter 'm' 1208 * 0 CLIR not provisioned 1209 * 1 CLIR provisioned in permanent mode 1210 * 2 unknown (e.g. no network, etc.) 1211 * 3 CLIR temporary mode presentation restricted 1212 * 4 CLIR temporary mode presentation allowed 1213 */ 1214 getCLIR(Message response)1215 void getCLIR(Message response); 1216 1217 /** 1218 * clirMode is one of the CLIR_* constants above 1219 * 1220 * response.obj is null 1221 */ 1222 setCLIR(int clirMode, Message response)1223 void setCLIR(int clirMode, Message response); 1224 1225 /** 1226 * (AsyncResult)response.obj).result is an int[] with element [0] set to 1227 * 0 for disabled, 1 for enabled. 1228 * 1229 * @param serviceClass is a sum of SERVICE_CLASS_* 1230 * @param response is callback message 1231 */ 1232 queryCallWaiting(int serviceClass, Message response)1233 void queryCallWaiting(int serviceClass, Message response); 1234 1235 /** 1236 * @param enable is true to enable, false to disable 1237 * @param serviceClass is a sum of SERVICE_CLASS_* 1238 * @param response is callback message 1239 */ 1240 setCallWaiting(boolean enable, int serviceClass, Message response)1241 void setCallWaiting(boolean enable, int serviceClass, Message response); 1242 1243 /** 1244 * @param action is one of CF_ACTION_* 1245 * @param cfReason is one of CF_REASON_* 1246 * @param serviceClass is a sum of SERVICE_CLASSS_* 1247 */ setCallForward(int action, int cfReason, int serviceClass, String number, int timeSeconds, Message response)1248 void setCallForward(int action, int cfReason, int serviceClass, 1249 String number, int timeSeconds, Message response); 1250 1251 /** 1252 * cfReason is one of CF_REASON_* 1253 * 1254 * ((AsyncResult)response.obj).result will be an array of 1255 * CallForwardInfo's 1256 * 1257 * An array of length 0 means "disabled for all codes" 1258 */ queryCallForwardStatus(int cfReason, int serviceClass, String number, Message response)1259 void queryCallForwardStatus(int cfReason, int serviceClass, 1260 String number, Message response); 1261 setNetworkSelectionModeAutomatic(Message response)1262 void setNetworkSelectionModeAutomatic(Message response); 1263 setNetworkSelectionModeManual(String operatorNumeric, Message response)1264 void setNetworkSelectionModeManual(String operatorNumeric, Message response); 1265 1266 /** 1267 * Queries whether the current network selection mode is automatic 1268 * or manual 1269 * 1270 * ((AsyncResult)response.obj).result is an int[] with element [0] being 1271 * a 0 for automatic selection and a 1 for manual selection 1272 */ 1273 getNetworkSelectionMode(Message response)1274 void getNetworkSelectionMode(Message response); 1275 1276 /** 1277 * Queries the currently available networks 1278 * 1279 * ((AsyncResult)response.obj).result is a List of NetworkInfo objects 1280 */ getAvailableNetworks(Message response)1281 void getAvailableNetworks(Message response); 1282 getBasebandVersion(Message response)1283 void getBasebandVersion (Message response); 1284 1285 1286 /** 1287 * (AsyncResult)response.obj).result will be an Integer representing 1288 * the sum of enabled service classes (sum of SERVICE_CLASS_*) 1289 * 1290 * @param facility one of CB_FACILTY_* 1291 * @param password password or "" if not required 1292 * @param serviceClass is a sum of SERVICE_CLASS_* 1293 * @param response is callback message 1294 */ 1295 queryFacilityLock(String facility, String password, int serviceClass, Message response)1296 void queryFacilityLock (String facility, String password, int serviceClass, 1297 Message response); 1298 1299 /** 1300 * (AsyncResult)response.obj).result will be an Integer representing 1301 * the sum of enabled service classes (sum of SERVICE_CLASS_*) for the 1302 * application with appId. 1303 * 1304 * @param facility one of CB_FACILTY_* 1305 * @param password password or "" if not required 1306 * @param serviceClass is a sum of SERVICE_CLASS_* 1307 * @param appId is application Id or null if none 1308 * @param response is callback message 1309 */ 1310 queryFacilityLockForApp(String facility, String password, int serviceClass, String appId, Message response)1311 void queryFacilityLockForApp(String facility, String password, int serviceClass, String appId, 1312 Message response); 1313 1314 /** 1315 * @param facility one of CB_FACILTY_* 1316 * @param lockState true means lock, false means unlock 1317 * @param password password or "" if not required 1318 * @param serviceClass is a sum of SERVICE_CLASS_* 1319 * @param response is callback message 1320 */ setFacilityLock(String facility, boolean lockState, String password, int serviceClass, Message response)1321 void setFacilityLock (String facility, boolean lockState, String password, 1322 int serviceClass, Message response); 1323 1324 /** 1325 * Set the facility lock for the app with this AID on the ICC card. 1326 * 1327 * @param facility one of CB_FACILTY_* 1328 * @param lockState true means lock, false means unlock 1329 * @param password password or "" if not required 1330 * @param serviceClass is a sum of SERVICE_CLASS_* 1331 * @param appId is application Id or null if none 1332 * @param response is callback message 1333 */ setFacilityLockForApp(String facility, boolean lockState, String password, int serviceClass, String appId, Message response)1334 void setFacilityLockForApp(String facility, boolean lockState, String password, 1335 int serviceClass, String appId, Message response); 1336 sendUSSD(String ussdString, Message response)1337 void sendUSSD (String ussdString, Message response); 1338 1339 /** 1340 * Cancels a pending USSD session if one exists. 1341 * @param response callback message 1342 */ cancelPendingUssd(Message response)1343 void cancelPendingUssd (Message response); 1344 resetRadio(Message result)1345 void resetRadio(Message result); 1346 1347 /** 1348 * Assign a specified band for RF configuration. 1349 * 1350 * @param bandMode one of BM_*_BAND 1351 * @param response is callback message 1352 */ setBandMode(int bandMode, Message response)1353 void setBandMode (int bandMode, Message response); 1354 1355 /** 1356 * Query the list of band mode supported by RF. 1357 * 1358 * @param response is callback message 1359 * ((AsyncResult)response.obj).result is an int[] where int[0] is 1360 * the size of the array and the rest of each element representing 1361 * one available BM_*_BAND 1362 */ queryAvailableBandMode(Message response)1363 void queryAvailableBandMode (Message response); 1364 1365 /** 1366 * Requests to set the preferred network type for searching and registering 1367 * (CS/PS domain, RAT, and operation mode) 1368 * @param networkType one of NT_*_TYPE 1369 * @param response is callback message 1370 */ setPreferredNetworkType(int networkType , Message response)1371 void setPreferredNetworkType(int networkType , Message response); 1372 1373 /** 1374 * Query the preferred network type setting 1375 * 1376 * @param response is callback message to report one of NT_*_TYPE 1377 */ getPreferredNetworkType(Message response)1378 void getPreferredNetworkType(Message response); 1379 1380 /** 1381 * Query neighboring cell ids 1382 * 1383 * @param response s callback message to cell ids 1384 */ getNeighboringCids(Message response)1385 void getNeighboringCids(Message response); 1386 1387 /** 1388 * Request to enable/disable network state change notifications when 1389 * location information (lac and/or cid) has changed. 1390 * 1391 * @param enable true to enable, false to disable 1392 * @param response callback message 1393 */ setLocationUpdates(boolean enable, Message response)1394 void setLocationUpdates(boolean enable, Message response); 1395 1396 /** 1397 * Gets the default SMSC address. 1398 * 1399 * @param result Callback message contains the SMSC address. 1400 */ getSmscAddress(Message result)1401 void getSmscAddress(Message result); 1402 1403 /** 1404 * Sets the default SMSC address. 1405 * 1406 * @param address new SMSC address 1407 * @param result Callback message is empty on completion 1408 */ setSmscAddress(String address, Message result)1409 void setSmscAddress(String address, Message result); 1410 1411 /** 1412 * Indicates whether there is storage available for new SMS messages. 1413 * @param available true if storage is available 1414 * @param result callback message 1415 */ reportSmsMemoryStatus(boolean available, Message result)1416 void reportSmsMemoryStatus(boolean available, Message result); 1417 1418 /** 1419 * Indicates to the vendor ril that StkService is running 1420 * and is ready to receive RIL_UNSOL_STK_XXXX commands. 1421 * 1422 * @param result callback message 1423 */ reportStkServiceIsRunning(Message result)1424 void reportStkServiceIsRunning(Message result); 1425 invokeOemRilRequestRaw(byte[] data, Message response)1426 void invokeOemRilRequestRaw(byte[] data, Message response); 1427 invokeOemRilRequestStrings(String[] strings, Message response)1428 void invokeOemRilRequestStrings(String[] strings, Message response); 1429 1430 /** 1431 * Fires when RIL_UNSOL_OEM_HOOK_RAW is received from the RIL. 1432 */ setOnUnsolOemHookRaw(Handler h, int what, Object obj)1433 void setOnUnsolOemHookRaw(Handler h, int what, Object obj); unSetOnUnsolOemHookRaw(Handler h)1434 void unSetOnUnsolOemHookRaw(Handler h); 1435 1436 /** 1437 * Send TERMINAL RESPONSE to the SIM, after processing a proactive command 1438 * sent by the SIM. 1439 * 1440 * @param contents String containing SAT/USAT response in hexadecimal 1441 * format starting with first byte of response data. See 1442 * TS 102 223 for details. 1443 * @param response Callback message 1444 */ sendTerminalResponse(String contents, Message response)1445 public void sendTerminalResponse(String contents, Message response); 1446 1447 /** 1448 * Send ENVELOPE to the SIM, after processing a proactive command sent by 1449 * the SIM. 1450 * 1451 * @param contents String containing SAT/USAT response in hexadecimal 1452 * format starting with command tag. See TS 102 223 for 1453 * details. 1454 * @param response Callback message 1455 */ sendEnvelope(String contents, Message response)1456 public void sendEnvelope(String contents, Message response); 1457 1458 /** 1459 * Send ENVELOPE to the SIM, such as an SMS-PP data download envelope 1460 * for a SIM data download message. This method has one difference 1461 * from {@link #sendEnvelope}: The SW1 and SW2 status bytes from the UICC response 1462 * are returned along with the response data. 1463 * 1464 * response.obj will be an AsyncResult 1465 * response.obj.result will be an IccIoResult on success 1466 * 1467 * @param contents String containing SAT/USAT response in hexadecimal 1468 * format starting with command tag. See TS 102 223 for 1469 * details. 1470 * @param response Callback message 1471 */ sendEnvelopeWithStatus(String contents, Message response)1472 public void sendEnvelopeWithStatus(String contents, Message response); 1473 1474 /** 1475 * Accept or reject the call setup request from SIM. 1476 * 1477 * @param accept true if the call is to be accepted, false otherwise. 1478 * @param response Callback message 1479 */ handleCallSetupRequestFromSim(boolean accept, Message response)1480 public void handleCallSetupRequestFromSim(boolean accept, Message response); 1481 1482 /** 1483 * Activate or deactivate cell broadcast SMS for GSM. 1484 * 1485 * @param activate 1486 * true = activate, false = deactivate 1487 * @param result Callback message is empty on completion 1488 */ setGsmBroadcastActivation(boolean activate, Message result)1489 public void setGsmBroadcastActivation(boolean activate, Message result); 1490 1491 /** 1492 * Configure cell broadcast SMS for GSM. 1493 * 1494 * @param response Callback message is empty on completion 1495 */ setGsmBroadcastConfig(SmsBroadcastConfigInfo[] config, Message response)1496 public void setGsmBroadcastConfig(SmsBroadcastConfigInfo[] config, Message response); 1497 1498 /** 1499 * Query the current configuration of cell broadcast SMS of GSM. 1500 * 1501 * @param response 1502 * Callback message contains the configuration from the modem 1503 * on completion 1504 */ getGsmBroadcastConfig(Message response)1505 public void getGsmBroadcastConfig(Message response); 1506 1507 //***** new Methods for CDMA support 1508 1509 /** 1510 * Request the device ESN / MEID / IMEI / IMEISV. 1511 * "response" is const char ** 1512 * [0] is IMEI if GSM subscription is available 1513 * [1] is IMEISV if GSM subscription is available 1514 * [2] is ESN if CDMA subscription is available 1515 * [3] is MEID if CDMA subscription is available 1516 */ getDeviceIdentity(Message response)1517 public void getDeviceIdentity(Message response); 1518 1519 /** 1520 * Request the device MDN / H_SID / H_NID / MIN. 1521 * "response" is const char ** 1522 * [0] is MDN if CDMA subscription is available 1523 * [1] is a comma separated list of H_SID (Home SID) in decimal format 1524 * if CDMA subscription is available 1525 * [2] is a comma separated list of H_NID (Home NID) in decimal format 1526 * if CDMA subscription is available 1527 * [3] is MIN (10 digits, MIN2+MIN1) if CDMA subscription is available 1528 */ getCDMASubscription(Message response)1529 public void getCDMASubscription(Message response); 1530 1531 /** 1532 * Send Flash Code. 1533 * "response" is is NULL 1534 * [0] is a FLASH string 1535 */ sendCDMAFeatureCode(String FeatureCode, Message response)1536 public void sendCDMAFeatureCode(String FeatureCode, Message response); 1537 1538 /** Set the Phone type created */ setPhoneType(int phoneType)1539 void setPhoneType(int phoneType); 1540 1541 /** 1542 * Query the CDMA roaming preference setting 1543 * 1544 * @param response is callback message to report one of CDMA_RM_* 1545 */ queryCdmaRoamingPreference(Message response)1546 void queryCdmaRoamingPreference(Message response); 1547 1548 /** 1549 * Requests to set the CDMA roaming preference 1550 * @param cdmaRoamingType one of CDMA_RM_* 1551 * @param response is callback message 1552 */ setCdmaRoamingPreference(int cdmaRoamingType, Message response)1553 void setCdmaRoamingPreference(int cdmaRoamingType, Message response); 1554 1555 /** 1556 * Requests to set the CDMA subscription mode 1557 * @param cdmaSubscriptionType one of CDMA_SUBSCRIPTION_* 1558 * @param response is callback message 1559 */ setCdmaSubscriptionSource(int cdmaSubscriptionType, Message response)1560 void setCdmaSubscriptionSource(int cdmaSubscriptionType, Message response); 1561 1562 /** 1563 * Requests to get the CDMA subscription srouce 1564 * @param response is callback message 1565 */ getCdmaSubscriptionSource(Message response)1566 void getCdmaSubscriptionSource(Message response); 1567 1568 /** 1569 * Set the TTY mode 1570 * 1571 * @param ttyMode one of the following: 1572 * - {@link com.android.internal.telephony.Phone#TTY_MODE_OFF} 1573 * - {@link com.android.internal.telephony.Phone#TTY_MODE_FULL} 1574 * - {@link com.android.internal.telephony.Phone#TTY_MODE_HCO} 1575 * - {@link com.android.internal.telephony.Phone#TTY_MODE_VCO} 1576 * @param response is callback message 1577 */ setTTYMode(int ttyMode, Message response)1578 void setTTYMode(int ttyMode, Message response); 1579 1580 /** 1581 * Query the TTY mode 1582 * (AsyncResult)response.obj).result is an int[] with element [0] set to 1583 * tty mode: 1584 * - {@link com.android.internal.telephony.Phone#TTY_MODE_OFF} 1585 * - {@link com.android.internal.telephony.Phone#TTY_MODE_FULL} 1586 * - {@link com.android.internal.telephony.Phone#TTY_MODE_HCO} 1587 * - {@link com.android.internal.telephony.Phone#TTY_MODE_VCO} 1588 * @param response is callback message 1589 */ queryTTYMode(Message response)1590 void queryTTYMode(Message response); 1591 1592 /** 1593 * Setup a packet data connection On successful completion, the result 1594 * message will return a {@link com.android.internal.telephony.dataconnection.DataCallResponse} 1595 * object containing the connection information. 1596 * 1597 * @param radioTechnology 1598 * indicates whether to setup connection on radio technology CDMA 1599 * (0) or GSM/UMTS (1) 1600 * @param profile 1601 * Profile Number or NULL to indicate default profile 1602 * @param apn 1603 * the APN to connect to if radio technology is GSM/UMTS. 1604 * Otherwise null for CDMA. 1605 * @param user 1606 * the username for APN, or NULL 1607 * @param password 1608 * the password for APN, or NULL 1609 * @param authType 1610 * the PAP / CHAP auth type. Values is one of SETUP_DATA_AUTH_* 1611 * @param protocol 1612 * one of the PDP_type values in TS 27.007 section 10.1.1. 1613 * For example, "IP", "IPV6", "IPV4V6", or "PPP". 1614 * @param result 1615 * Callback message 1616 */ setupDataCall(String radioTechnology, String profile, String apn, String user, String password, String authType, String protocol, Message result)1617 public void setupDataCall(String radioTechnology, String profile, 1618 String apn, String user, String password, String authType, 1619 String protocol, Message result); 1620 1621 /** 1622 * Deactivate packet data connection 1623 * 1624 * @param cid 1625 * The connection ID 1626 * @param reason 1627 * Data disconnect reason. 1628 * @param result 1629 * Callback message is empty on completion 1630 */ deactivateDataCall(int cid, int reason, Message result)1631 public void deactivateDataCall(int cid, int reason, Message result); 1632 1633 /** 1634 * Activate or deactivate cell broadcast SMS for CDMA. 1635 * 1636 * @param activate 1637 * true = activate, false = deactivate 1638 * @param result 1639 * Callback message is empty on completion 1640 */ setCdmaBroadcastActivation(boolean activate, Message result)1641 public void setCdmaBroadcastActivation(boolean activate, Message result); 1642 1643 /** 1644 * Configure cdma cell broadcast SMS. 1645 * 1646 * @param response 1647 * Callback message is empty on completion 1648 */ setCdmaBroadcastConfig(CdmaSmsBroadcastConfigInfo[] configs, Message response)1649 public void setCdmaBroadcastConfig(CdmaSmsBroadcastConfigInfo[] configs, Message response); 1650 1651 /** 1652 * Query the current configuration of cdma cell broadcast SMS. 1653 * 1654 * @param result 1655 * Callback message contains the configuration from the modem on completion 1656 */ getCdmaBroadcastConfig(Message result)1657 public void getCdmaBroadcastConfig(Message result); 1658 1659 /** 1660 * Requests the radio's system selection module to exit emergency callback mode. 1661 * This function should only be called from CDMAPHone.java. 1662 * 1663 * @param response callback message 1664 */ exitEmergencyCallbackMode(Message response)1665 public void exitEmergencyCallbackMode(Message response); 1666 1667 /** 1668 * Request the status of the ICC and UICC cards. 1669 * 1670 * @param result 1671 * Callback message containing {@link IccCardStatus} structure for the card. 1672 */ getIccCardStatus(Message result)1673 public void getIccCardStatus(Message result); 1674 1675 /** 1676 * Return if the current radio is LTE on CDMA. This 1677 * is a tri-state return value as for a period of time 1678 * the mode may be unknown. 1679 * 1680 * @return {@link PhoneConstants#LTE_ON_CDMA_UNKNOWN}, {@link PhoneConstants#LTE_ON_CDMA_FALSE} 1681 * or {@link PhoneConstants#LTE_ON_CDMA_TRUE} 1682 */ getLteOnCdmaMode()1683 public int getLteOnCdmaMode(); 1684 1685 /** 1686 * Request the ISIM application on the UICC to perform the AKA 1687 * challenge/response algorithm for IMS authentication. The nonce string 1688 * and challenge response are Base64 encoded Strings. 1689 * 1690 * @param nonce the nonce string to pass with the ISIM authentication request 1691 * @param response a callback message with the String response in the obj field 1692 * @deprecated 1693 * @see requestIccSimAuthentication 1694 */ requestIsimAuthentication(String nonce, Message response)1695 public void requestIsimAuthentication(String nonce, Message response); 1696 1697 /** 1698 * Request the SIM application on the UICC to perform authentication 1699 * challenge/response algorithm. The data string and challenge response are 1700 * Base64 encoded Strings. 1701 * Can support EAP-SIM, EAP-AKA with results encoded per 3GPP TS 31.102. 1702 * 1703 * @param authContext is the P2 parameter that specifies the authentication context per 3GPP TS 1704 * 31.102 (Section 7.1.2) 1705 * @param data authentication challenge data 1706 * @param aid used to determine which application/slot to send the auth command to. See ETSI 1707 * 102.221 8.1 and 101.220 4 1708 * @param response a callback message with the String response in the obj field 1709 */ requestIccSimAuthentication(int authContext, String data, String aid, Message response)1710 public void requestIccSimAuthentication(int authContext, String data, String aid, Message response); 1711 1712 /** 1713 * Get the current Voice Radio Technology. 1714 * 1715 * AsyncResult.result is an int array with the first value 1716 * being one of the ServiceState.RIL_RADIO_TECHNOLOGY_xxx values. 1717 * 1718 * @param result is sent back to handler and result.obj is a AsyncResult 1719 */ getVoiceRadioTechnology(Message result)1720 void getVoiceRadioTechnology(Message result); 1721 1722 /** 1723 * Return the current set of CellInfo records 1724 * 1725 * AsyncResult.result is a of Collection<CellInfo> 1726 * 1727 * @param result is sent back to handler and result.obj is a AsyncResult 1728 */ getCellInfoList(Message result)1729 void getCellInfoList(Message result); 1730 1731 /** 1732 * Sets the minimum time in milli-seconds between when RIL_UNSOL_CELL_INFO_LIST 1733 * should be invoked. 1734 * 1735 * The default, 0, means invoke RIL_UNSOL_CELL_INFO_LIST when any of the reported 1736 * information changes. Setting the value to INT_MAX(0x7fffffff) means never issue 1737 * A RIL_UNSOL_CELL_INFO_LIST. 1738 * 1739 * 1740 1741 * @param rateInMillis is sent back to handler and result.obj is a AsyncResult 1742 * @param response.obj is AsyncResult ar when sent to associated handler 1743 * ar.exception carries exception on failure or null on success 1744 * otherwise the error. 1745 */ setCellInfoListRate(int rateInMillis, Message response)1746 void setCellInfoListRate(int rateInMillis, Message response); 1747 1748 /** 1749 * Fires when RIL_UNSOL_CELL_INFO_LIST is received from the RIL. 1750 */ registerForCellInfoList(Handler h, int what, Object obj)1751 void registerForCellInfoList(Handler h, int what, Object obj); unregisterForCellInfoList(Handler h)1752 void unregisterForCellInfoList(Handler h); 1753 1754 /** 1755 * Set Initial Attach Apn 1756 * 1757 * @param apn 1758 * the APN to connect to if radio technology is GSM/UMTS. 1759 * @param protocol 1760 * one of the PDP_type values in TS 27.007 section 10.1.1. 1761 * For example, "IP", "IPV6", "IPV4V6", or "PPP". 1762 * @param authType 1763 * authentication protocol used for this PDP context 1764 * (None: 0, PAP: 1, CHAP: 2, PAP&CHAP: 3) 1765 * @param username 1766 * the username for APN, or NULL 1767 * @param password 1768 * the password for APN, or NULL 1769 * @param result 1770 * callback message contains the information of SUCCESS/FAILURE 1771 */ setInitialAttachApn(String apn, String protocol, int authType, String username, String password, Message result)1772 public void setInitialAttachApn(String apn, String protocol, int authType, String username, 1773 String password, Message result); 1774 1775 /** 1776 * Set data profiles in modem 1777 * 1778 * @param dps 1779 * Array of the data profiles set to modem 1780 * @param result 1781 * callback message contains the information of SUCCESS/FAILURE 1782 */ setDataProfile(DataProfile[] dps, Message result)1783 public void setDataProfile(DataProfile[] dps, Message result); 1784 1785 /** 1786 * Notifiy that we are testing an emergency call 1787 */ testingEmergencyCall()1788 public void testingEmergencyCall(); 1789 1790 /** 1791 * Open a logical channel to the SIM. 1792 * 1793 * Input parameters equivalent to TS 27.007 AT+CCHO command. 1794 * 1795 * @param AID Application id. See ETSI 102.221 and 101.220. 1796 * @param response Callback message. response.obj will be an int [1] with 1797 * element [0] set to the id of the logical channel. 1798 */ iccOpenLogicalChannel(String AID, Message response)1799 public void iccOpenLogicalChannel(String AID, Message response); 1800 1801 /** 1802 * Close a previously opened logical channel to the SIM. 1803 * 1804 * Input parameters equivalent to TS 27.007 AT+CCHC command. 1805 * 1806 * @param channel Channel id. Id of the channel to be closed. 1807 * @param response Callback message. 1808 */ iccCloseLogicalChannel(int channel, Message response)1809 public void iccCloseLogicalChannel(int channel, Message response); 1810 1811 /** 1812 * Exchange APDUs with the SIM on a logical channel. 1813 * 1814 * Input parameters equivalent to TS 27.007 AT+CGLA command. 1815 * 1816 * @param channel Channel id of the channel to use for communication. Has to 1817 * be greater than zero. 1818 * @param cla Class of the APDU command. 1819 * @param instruction Instruction of the APDU command. 1820 * @param p1 P1 value of the APDU command. 1821 * @param p2 P2 value of the APDU command. 1822 * @param p3 P3 value of the APDU command. If p3 is negative a 4 byte APDU 1823 * is sent to the SIM. 1824 * @param data Data to be sent with the APDU. 1825 * @param response Callback message. response.obj.userObj will be 1826 * an IccIoResult on success. 1827 */ iccTransmitApduLogicalChannel(int channel, int cla, int instruction, int p1, int p2, int p3, String data, Message response)1828 public void iccTransmitApduLogicalChannel(int channel, int cla, int instruction, 1829 int p1, int p2, int p3, String data, Message response); 1830 1831 /** 1832 * Exchange APDUs with the SIM on a basic channel. 1833 * 1834 * Input parameters equivalent to TS 27.007 AT+CSIM command. 1835 * 1836 * @param cla Class of the APDU command. 1837 * @param instruction Instruction of the APDU command. 1838 * @param p1 P1 value of the APDU command. 1839 * @param p2 P2 value of the APDU command. 1840 * @param p3 P3 value of the APDU command. If p3 is negative a 4 byte APDU 1841 * is sent to the SIM. 1842 * @param data Data to be sent with the APDU. 1843 * @param response Callback message. response.obj.userObj will be 1844 * an IccIoResult on success. 1845 */ iccTransmitApduBasicChannel(int cla, int instruction, int p1, int p2, int p3, String data, Message response)1846 public void iccTransmitApduBasicChannel(int cla, int instruction, int p1, int p2, 1847 int p3, String data, Message response); 1848 1849 /** 1850 * Read one of the NV items defined in {@link RadioNVItems} / {@code ril_nv_items.h}. 1851 * Used for device configuration by some CDMA operators. 1852 * 1853 * @param itemID the ID of the item to read 1854 * @param response callback message with the String response in the obj field 1855 */ nvReadItem(int itemID, Message response)1856 void nvReadItem(int itemID, Message response); 1857 1858 /** 1859 * Write one of the NV items defined in {@link RadioNVItems} / {@code ril_nv_items.h}. 1860 * Used for device configuration by some CDMA operators. 1861 * 1862 * @param itemID the ID of the item to read 1863 * @param itemValue the value to write, as a String 1864 * @param response Callback message. 1865 */ nvWriteItem(int itemID, String itemValue, Message response)1866 void nvWriteItem(int itemID, String itemValue, Message response); 1867 1868 /** 1869 * Update the CDMA Preferred Roaming List (PRL) in the radio NV storage. 1870 * Used for device configuration by some CDMA operators. 1871 * 1872 * @param preferredRoamingList byte array containing the new PRL 1873 * @param response Callback message. 1874 */ nvWriteCdmaPrl(byte[] preferredRoamingList, Message response)1875 void nvWriteCdmaPrl(byte[] preferredRoamingList, Message response); 1876 1877 /** 1878 * Perform the specified type of NV config reset. The radio will be taken offline 1879 * and the device must be rebooted after erasing the NV. Used for device 1880 * configuration by some CDMA operators. 1881 * 1882 * @param resetType reset type: 1: reload NV reset, 2: erase NV reset, 3: factory NV reset 1883 * @param response Callback message. 1884 */ nvResetConfig(int resetType, Message response)1885 void nvResetConfig(int resetType, Message response); 1886 1887 /** 1888 * returned message 1889 * retMsg.obj = AsyncResult ar 1890 * ar.exception carries exception on failure 1891 * ar.userObject contains the orignal value of result.obj 1892 * ar.result contains a List of HardwareConfig 1893 */ getHardwareConfig(Message result)1894 void getHardwareConfig (Message result); 1895 1896 /** 1897 * @return version of the ril. 1898 */ getRilVersion()1899 int getRilVersion(); 1900 1901 /** 1902 * Sets user selected subscription at Modem. 1903 * 1904 * @param slotId 1905 * Slot. 1906 * @param appIndex 1907 * Application index in the card. 1908 * @param subId 1909 * Indicates subscription 0 or subscription 1. 1910 * @param subStatus 1911 * Activation status, 1 = activate and 0 = deactivate. 1912 * @param result 1913 * Callback message contains the information of SUCCESS/FAILURE. 1914 */ 1915 // FIXME Update the doc and consider modifying the request to make more generic. setUiccSubscription(int slotId, int appIndex, int subId, int subStatus, Message result)1916 public void setUiccSubscription(int slotId, int appIndex, int subId, int subStatus, 1917 Message result); 1918 1919 /** 1920 * Tells the modem if data is allowed or not. 1921 * 1922 * @param allowed 1923 * true = allowed, false = not alowed 1924 * @param result 1925 * Callback message contains the information of SUCCESS/FAILURE. 1926 */ 1927 // FIXME We may need to pass AID and slotid also setDataAllowed(boolean allowed, Message result)1928 public void setDataAllowed(boolean allowed, Message result); 1929 1930 /** 1931 * Inform RIL that the device is shutting down 1932 * 1933 * @param result Callback message contains the information of SUCCESS/FAILURE 1934 */ requestShutdown(Message result)1935 public void requestShutdown(Message result); 1936 1937 /** 1938 * Set phone radio type and access technology. 1939 * 1940 * @param rc the phone radio capability defined in 1941 * RadioCapability. It's a input object used to transfer parameter to logic modem 1942 * 1943 * @param result Callback message. 1944 */ setRadioCapability(RadioCapability rc, Message result)1945 public void setRadioCapability(RadioCapability rc, Message result); 1946 1947 /** 1948 * Get phone radio capability 1949 * 1950 * @param result Callback message. 1951 */ getRadioCapability(Message result)1952 public void getRadioCapability(Message result); 1953 1954 /** 1955 * Registers the handler when phone radio capability is changed. 1956 * 1957 * @param h Handler for notification message. 1958 * @param what User-defined message code. 1959 * @param obj User object. 1960 */ registerForRadioCapabilityChanged(Handler h, int what, Object obj)1961 public void registerForRadioCapabilityChanged(Handler h, int what, Object obj); 1962 1963 /** 1964 * Unregister for notifications when phone radio capability is changed. 1965 * 1966 * @param h Handler to be removed from the registrant list. 1967 */ unregisterForRadioCapabilityChanged(Handler h)1968 public void unregisterForRadioCapabilityChanged(Handler h); 1969 1970 /** 1971 * Start LCE (Link Capacity Estimation) service with a desired reporting interval. 1972 * 1973 * @param reportIntervalMs 1974 * LCE info reporting interval (ms). 1975 * 1976 * @param result Callback message contains the current LCE status. 1977 * {byte status, int actualIntervalMs} 1978 */ startLceService(int reportIntervalMs, boolean pullMode, Message result)1979 public void startLceService(int reportIntervalMs, boolean pullMode, Message result); 1980 1981 /** 1982 * Stop LCE service. 1983 * 1984 * @param result Callback message contains the current LCE status: 1985 * {byte status, int actualIntervalMs} 1986 * 1987 */ stopLceService(Message result)1988 public void stopLceService(Message result); 1989 1990 /** 1991 * Pull LCE service for capacity data. 1992 * 1993 * @param result Callback message contains the capacity info: 1994 * {int capacityKbps, byte confidenceLevel, byte lceSuspendedTemporarily} 1995 */ pullLceData(Message result)1996 public void pullLceData(Message result); 1997 1998 /** 1999 * Register a LCE info listener. 2000 * 2001 * @param h Handler for notification message. 2002 * @param what User-defined message code. 2003 * @param obj User object. 2004 */ registerForLceInfo(Handler h, int what, Object obj)2005 void registerForLceInfo(Handler h, int what, Object obj); 2006 2007 /** 2008 * Unregister the LCE Info listener. 2009 * 2010 * @param h handle to be removed. 2011 */ unregisterForLceInfo(Handler h)2012 void unregisterForLceInfo(Handler h); 2013 2014 /** 2015 * 2016 * Get modem activity info and stats 2017 * 2018 * @param result Callback message contains the modem activity information 2019 */ getModemActivityInfo(Message result)2020 public void getModemActivityInfo(Message result); 2021 } 2022