PhoneProxy.java revision d7d6fb39470e212ce53b05fdc1c4dd8a724e9db7
1/* 2 * Copyright (C) 2008 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 19 20import android.app.ActivityManagerNative; 21import android.content.Context; 22import android.content.Intent; 23import android.content.SharedPreferences; 24import android.os.Handler; 25import android.os.Message; 26import android.os.SystemProperties; 27import android.preference.PreferenceManager; 28import android.telephony.CellLocation; 29import android.telephony.PhoneStateListener; 30import android.telephony.ServiceState; 31import android.telephony.SignalStrength; 32import android.util.Log; 33 34import com.android.internal.telephony.cdma.CDMAPhone; 35import com.android.internal.telephony.gsm.GSMPhone; 36import com.android.internal.telephony.gsm.NetworkInfo; 37import com.android.internal.telephony.gsm.PdpConnection; 38import com.android.internal.telephony.test.SimulatedRadioControl; 39 40import java.util.List; 41 42public class PhoneProxy extends Handler implements Phone { 43 public final static Object lockForRadioTechnologyChange = new Object(); 44 45 private Phone mActivePhone; 46 private String mOutgoingPhone; 47 private CommandsInterface mCommandsInterface; 48 private IccSmsInterfaceManagerProxy mIccSmsInterfaceManagerProxy; 49 private IccPhoneBookInterfaceManagerProxy mIccPhoneBookInterfaceManagerProxy; 50 private PhoneSubInfoProxy mPhoneSubInfoProxy; 51 52 private boolean mResetModemOnRadioTechnologyChange = false; 53 54 private static final int EVENT_RADIO_TECHNOLOGY_CHANGED = 1; 55 private static final String LOG_TAG = "PHONE"; 56 57 //***** Class Methods 58 public PhoneProxy(Phone phone) { 59 mActivePhone = phone; 60 mResetModemOnRadioTechnologyChange = SystemProperties.getBoolean( 61 TelephonyProperties.PROPERTY_RESET_ON_RADIO_TECH_CHANGE, false); 62 mIccSmsInterfaceManagerProxy = new IccSmsInterfaceManagerProxy( 63 phone.getIccSmsInterfaceManager()); 64 mIccPhoneBookInterfaceManagerProxy = new IccPhoneBookInterfaceManagerProxy( 65 phone.getIccPhoneBookInterfaceManager()); 66 mPhoneSubInfoProxy = new PhoneSubInfoProxy(phone.getPhoneSubInfo()); 67 mCommandsInterface = ((PhoneBase)mActivePhone).mCM; 68 mCommandsInterface.registerForRadioTechnologyChanged( 69 this, EVENT_RADIO_TECHNOLOGY_CHANGED, null); 70 } 71 72 @Override 73 public void handleMessage(Message msg) { 74 switch(msg.what) { 75 case EVENT_RADIO_TECHNOLOGY_CHANGED: 76 //switch Phone from CDMA to GSM or vice versa 77 mOutgoingPhone = ((PhoneBase)mActivePhone).getPhoneName(); 78 logd("Switching phone from " + mOutgoingPhone + "Phone to " + 79 (mOutgoingPhone.equals("GSM") ? "CDMAPhone" : "GSMPhone") ); 80 boolean oldPowerState = false; // old power state to off 81 if (mResetModemOnRadioTechnologyChange) { 82 if (mCommandsInterface.getRadioState().isOn()) { 83 oldPowerState = true; 84 logd("Setting Radio Power to Off"); 85 mCommandsInterface.setRadioPower(false, null); 86 } 87 } 88 89 if(mOutgoingPhone.equals("GSM")) { 90 logd("Make a new CDMAPhone and destroy the old GSMPhone."); 91 92 ((GSMPhone)mActivePhone).dispose(); 93 Phone oldPhone = mActivePhone; 94 95 //Give the garbage collector a hint to start the garbage collection asap 96 // NOTE this has been disabled since radio technology change could happen during 97 // e.g. a multimedia playing and could slow the system. Tests needs to be done 98 // to see the effects of the GC call here when system is busy. 99 //System.gc(); 100 101 mActivePhone = PhoneFactory.getCdmaPhone(); 102 ((GSMPhone)oldPhone).removeReferences(); 103 oldPhone = null; 104 } else { 105 logd("Make a new GSMPhone and destroy the old CDMAPhone."); 106 107 ((CDMAPhone)mActivePhone).dispose(); 108 //mActivePhone = null; 109 Phone oldPhone = mActivePhone; 110 111 // Give the GC a hint to start the garbage collection asap 112 // NOTE this has been disabled since radio technology change could happen during 113 // e.g. a multimedia playing and could slow the system. Tests needs to be done 114 // to see the effects of the GC call here when system is busy. 115 //System.gc(); 116 117 mActivePhone = PhoneFactory.getGsmPhone(); 118 ((CDMAPhone)oldPhone).removeReferences(); 119 oldPhone = null; 120 } 121 122 if (mResetModemOnRadioTechnologyChange) { 123 logd("Resetting Radio"); 124 mCommandsInterface.setRadioPower(oldPowerState, null); 125 } 126 127 //Set the new interfaces in the proxy's 128 mIccSmsInterfaceManagerProxy.setmIccSmsInterfaceManager( 129 mActivePhone.getIccSmsInterfaceManager()); 130 mIccPhoneBookInterfaceManagerProxy.setmIccPhoneBookInterfaceManager( 131 mActivePhone.getIccPhoneBookInterfaceManager()); 132 mPhoneSubInfoProxy.setmPhoneSubInfo(this.mActivePhone.getPhoneSubInfo()); 133 mCommandsInterface = ((PhoneBase)mActivePhone).mCM; 134 135 //Send an Intent to the PhoneApp that we had a radio technology change 136 Intent intent = new Intent(TelephonyIntents.ACTION_RADIO_TECHNOLOGY_CHANGED); 137 intent.putExtra(Phone.PHONE_NAME_KEY, mActivePhone.getPhoneName()); 138 ActivityManagerNative.broadcastStickyIntent(intent, null); 139 break; 140 default: 141 Log.e(LOG_TAG,"Error! This handler was not registered for this message type. Message: " 142 + msg.what); 143 break; 144 } 145 super.handleMessage(msg); 146 } 147 148 private void logv(String msg) { 149 Log.v(LOG_TAG, "[PhoneProxy] " + msg); 150 } 151 152 private void logd(String msg) { 153 Log.d(LOG_TAG, "[PhoneProxy] " + msg); 154 } 155 156 private void logw(String msg) { 157 Log.w(LOG_TAG, "[PhoneProxy] " + msg); 158 } 159 160 private void loge(String msg) { 161 Log.e(LOG_TAG, "[PhoneProxy] " + msg); 162 } 163 164 165 public ServiceState getServiceState() { 166 return mActivePhone.getServiceState(); 167 } 168 169 public CellLocation getCellLocation() { 170 return mActivePhone.getCellLocation(); 171 } 172 173 public DataState getDataConnectionState() { 174 return mActivePhone.getDataConnectionState(); 175 } 176 177 public DataActivityState getDataActivityState() { 178 return mActivePhone.getDataActivityState(); 179 } 180 181 public Context getContext() { 182 return mActivePhone.getContext(); 183 } 184 185 public void disableDnsCheck(boolean b) { 186 mActivePhone.disableDnsCheck(b); 187 } 188 189 public boolean isDnsCheckDisabled() { 190 return mActivePhone.isDnsCheckDisabled(); 191 } 192 193 public State getState() { 194 return mActivePhone.getState(); 195 } 196 197 public String getPhoneName() { 198 return mActivePhone.getPhoneName(); 199 } 200 201 public int getPhoneType() { 202 return mActivePhone.getPhoneType(); 203 } 204 205 public String[] getActiveApnTypes() { 206 return mActivePhone.getActiveApnTypes(); 207 } 208 209 public String getActiveApn() { 210 return mActivePhone.getActiveApn(); 211 } 212 213 public SignalStrength getSignalStrength() { 214 return mActivePhone.getSignalStrength(); 215 } 216 217 public void registerForUnknownConnection(Handler h, int what, Object obj) { 218 mActivePhone.registerForUnknownConnection(h, what, obj); 219 } 220 221 public void unregisterForUnknownConnection(Handler h) { 222 mActivePhone.unregisterForUnknownConnection(h); 223 } 224 225 public void registerForPreciseCallStateChanged(Handler h, int what, Object obj) { 226 mActivePhone.registerForPreciseCallStateChanged(h, what, obj); 227 } 228 229 public void unregisterForPreciseCallStateChanged(Handler h) { 230 mActivePhone.unregisterForPreciseCallStateChanged(h); 231 } 232 233 public void registerForNewRingingConnection(Handler h, int what, Object obj) { 234 mActivePhone.registerForNewRingingConnection(h, what, obj); 235 } 236 237 public void unregisterForNewRingingConnection(Handler h) { 238 mActivePhone.unregisterForNewRingingConnection(h); 239 } 240 241 public void registerForIncomingRing(Handler h, int what, Object obj) { 242 mActivePhone.registerForIncomingRing(h, what, obj); 243 } 244 245 public void unregisterForIncomingRing(Handler h) { 246 mActivePhone.unregisterForIncomingRing(h); 247 } 248 249 public void registerForDisconnect(Handler h, int what, Object obj) { 250 mActivePhone.registerForDisconnect(h, what, obj); 251 } 252 253 public void unregisterForDisconnect(Handler h) { 254 mActivePhone.unregisterForDisconnect(h); 255 } 256 257 public void registerForMmiInitiate(Handler h, int what, Object obj) { 258 mActivePhone.registerForMmiInitiate(h, what, obj); 259 } 260 261 public void unregisterForMmiInitiate(Handler h) { 262 mActivePhone.unregisterForMmiInitiate(h); 263 } 264 265 public void registerForMmiComplete(Handler h, int what, Object obj) { 266 mActivePhone.registerForMmiComplete(h, what, obj); 267 } 268 269 public void unregisterForMmiComplete(Handler h) { 270 mActivePhone.unregisterForMmiComplete(h); 271 } 272 273 public List<? extends MmiCode> getPendingMmiCodes() { 274 return mActivePhone.getPendingMmiCodes(); 275 } 276 277 public void sendUssdResponse(String ussdMessge) { 278 mActivePhone.sendUssdResponse(ussdMessge); 279 } 280 281 public void registerForServiceStateChanged(Handler h, int what, Object obj) { 282 mActivePhone.registerForServiceStateChanged(h, what, obj); 283 } 284 285 public void unregisterForServiceStateChanged(Handler h) { 286 mActivePhone.unregisterForServiceStateChanged(h); 287 } 288 289 public void registerForSuppServiceNotification(Handler h, int what, Object obj) { 290 mActivePhone.registerForSuppServiceNotification(h, what, obj); 291 } 292 293 public void unregisterForSuppServiceNotification(Handler h) { 294 mActivePhone.unregisterForSuppServiceNotification(h); 295 } 296 297 public void registerForSuppServiceFailed(Handler h, int what, Object obj) { 298 mActivePhone.registerForSuppServiceFailed(h, what, obj); 299 } 300 301 public void unregisterForSuppServiceFailed(Handler h) { 302 mActivePhone.unregisterForSuppServiceFailed(h); 303 } 304 305 public void registerForInCallVoicePrivacyOn(Handler h, int what, Object obj){ 306 mActivePhone.registerForInCallVoicePrivacyOn(h,what,obj); 307 } 308 309 public void unregisterForInCallVoicePrivacyOn(Handler h){ 310 mActivePhone.unregisterForInCallVoicePrivacyOn(h); 311 } 312 313 public void registerForInCallVoicePrivacyOff(Handler h, int what, Object obj){ 314 mActivePhone.registerForInCallVoicePrivacyOff(h,what,obj); 315 } 316 317 public void unregisterForInCallVoicePrivacyOff(Handler h){ 318 mActivePhone.unregisterForInCallVoicePrivacyOff(h); 319 } 320 321 public void registerForCdmaOtaStatusChange(Handler h, int what, Object obj) { 322 mActivePhone.registerForCdmaOtaStatusChange(h,what,obj); 323 } 324 325 public void unregisterForCdmaOtaStatusChange(Handler h) { 326 mActivePhone.unregisterForCdmaOtaStatusChange(h); 327 } 328 329 public void registerForSubscriptionInfoReady(Handler h, int what, Object obj) { 330 mActivePhone.registerForSubscriptionInfoReady(h, what, obj); 331 } 332 333 public void unregisterForSubscriptionInfoReady(Handler h) { 334 mActivePhone.unregisterForSubscriptionInfoReady(h); 335 } 336 337 public void registerForEcmTimerReset(Handler h, int what, Object obj) { 338 mActivePhone.registerForEcmTimerReset(h,what,obj); 339 } 340 341 public void unregisterForEcmTimerReset(Handler h) { 342 mActivePhone.unregisterForEcmTimerReset(h); 343 } 344 345 public void registerForRingbackTone(Handler h, int what, Object obj) { 346 mActivePhone.registerForRingbackTone(h,what,obj); 347 } 348 349 public void unregisterForRingbackTone(Handler h) { 350 mActivePhone.unregisterForRingbackTone(h); 351 } 352 353 public boolean getIccRecordsLoaded() { 354 return mActivePhone.getIccRecordsLoaded(); 355 } 356 357 public IccCard getIccCard() { 358 return mActivePhone.getIccCard(); 359 } 360 361 public void acceptCall() throws CallStateException { 362 mActivePhone.acceptCall(); 363 } 364 365 public void rejectCall() throws CallStateException { 366 mActivePhone.rejectCall(); 367 } 368 369 public void switchHoldingAndActive() throws CallStateException { 370 mActivePhone.switchHoldingAndActive(); 371 } 372 373 public boolean canConference() { 374 return mActivePhone.canConference(); 375 } 376 377 public void conference() throws CallStateException { 378 mActivePhone.conference(); 379 } 380 381 public void enableEnhancedVoicePrivacy(boolean enable, Message onComplete) { 382 mActivePhone.enableEnhancedVoicePrivacy(enable, onComplete); 383 } 384 385 public void getEnhancedVoicePrivacy(Message onComplete) { 386 mActivePhone.getEnhancedVoicePrivacy(onComplete); 387 } 388 389 public boolean canTransfer() { 390 return mActivePhone.canTransfer(); 391 } 392 393 public void explicitCallTransfer() throws CallStateException { 394 mActivePhone.explicitCallTransfer(); 395 } 396 397 public void clearDisconnected() { 398 mActivePhone.clearDisconnected(); 399 } 400 401 public Call getForegroundCall() { 402 return mActivePhone.getForegroundCall(); 403 } 404 405 public Call getBackgroundCall() { 406 return mActivePhone.getBackgroundCall(); 407 } 408 409 public Call getRingingCall() { 410 return mActivePhone.getRingingCall(); 411 } 412 413 public Connection dial(String dialString) throws CallStateException { 414 return mActivePhone.dial(dialString); 415 } 416 417 public boolean handlePinMmi(String dialString) { 418 return mActivePhone.handlePinMmi(dialString); 419 } 420 421 public boolean handleInCallMmiCommands(String command) throws CallStateException { 422 return mActivePhone.handleInCallMmiCommands(command); 423 } 424 425 public void sendDtmf(char c) { 426 mActivePhone.sendDtmf(c); 427 } 428 429 public void startDtmf(char c) { 430 mActivePhone.startDtmf(c); 431 } 432 433 public void stopDtmf() { 434 mActivePhone.stopDtmf(); 435 } 436 437 public void setRadioPower(boolean power) { 438 mActivePhone.setRadioPower(power); 439 } 440 441 public boolean getMessageWaitingIndicator() { 442 return mActivePhone.getMessageWaitingIndicator(); 443 } 444 445 public boolean getCallForwardingIndicator() { 446 return mActivePhone.getCallForwardingIndicator(); 447 } 448 449 public String getLine1Number() { 450 return mActivePhone.getLine1Number(); 451 } 452 453 public String getCdmaMin() { 454 return mActivePhone.getCdmaMin(); 455 } 456 457 public boolean isMinInfoReady() { 458 return mActivePhone.isMinInfoReady(); 459 } 460 461 public String getCdmaPrlVersion() { 462 return mActivePhone.getCdmaPrlVersion(); 463 } 464 465 public String getLine1AlphaTag() { 466 return mActivePhone.getLine1AlphaTag(); 467 } 468 469 public void setLine1Number(String alphaTag, String number, Message onComplete) { 470 mActivePhone.setLine1Number(alphaTag, number, onComplete); 471 } 472 473 public String getVoiceMailNumber() { 474 return mActivePhone.getVoiceMailNumber(); 475 } 476 477 /** @hide */ 478 public int getVoiceMessageCount(){ 479 return mActivePhone.getVoiceMessageCount(); 480 } 481 482 public String getVoiceMailAlphaTag() { 483 return mActivePhone.getVoiceMailAlphaTag(); 484 } 485 486 public void setVoiceMailNumber(String alphaTag,String voiceMailNumber, 487 Message onComplete) { 488 mActivePhone.setVoiceMailNumber(alphaTag, voiceMailNumber, onComplete); 489 } 490 491 public void getCallForwardingOption(int commandInterfaceCFReason, 492 Message onComplete) { 493 mActivePhone.getCallForwardingOption(commandInterfaceCFReason, 494 onComplete); 495 } 496 497 public void setCallForwardingOption(int commandInterfaceCFReason, 498 int commandInterfaceCFAction, String dialingNumber, 499 int timerSeconds, Message onComplete) { 500 mActivePhone.setCallForwardingOption(commandInterfaceCFReason, 501 commandInterfaceCFAction, dialingNumber, timerSeconds, onComplete); 502 } 503 504 public void getOutgoingCallerIdDisplay(Message onComplete) { 505 mActivePhone.getOutgoingCallerIdDisplay(onComplete); 506 } 507 508 public void setOutgoingCallerIdDisplay(int commandInterfaceCLIRMode, 509 Message onComplete) { 510 mActivePhone.setOutgoingCallerIdDisplay(commandInterfaceCLIRMode, 511 onComplete); 512 } 513 514 public void getCallWaiting(Message onComplete) { 515 mActivePhone.getCallWaiting(onComplete); 516 } 517 518 public void setCallWaiting(boolean enable, Message onComplete) { 519 mActivePhone.setCallWaiting(enable, onComplete); 520 } 521 522 public void getAvailableNetworks(Message response) { 523 mActivePhone.getAvailableNetworks(response); 524 } 525 526 public void setNetworkSelectionModeAutomatic(Message response) { 527 mActivePhone.setNetworkSelectionModeAutomatic(response); 528 } 529 530 public void selectNetworkManually(NetworkInfo network, Message response) { 531 mActivePhone.selectNetworkManually(network, response); 532 } 533 534 public void setPreferredNetworkType(int networkType, Message response) { 535 mActivePhone.setPreferredNetworkType(networkType, response); 536 } 537 538 public void getPreferredNetworkType(Message response) { 539 mActivePhone.getPreferredNetworkType(response); 540 } 541 542 public void getNeighboringCids(Message response) { 543 mActivePhone.getNeighboringCids(response); 544 } 545 546 public void setOnPostDialCharacter(Handler h, int what, Object obj) { 547 mActivePhone.setOnPostDialCharacter(h, what, obj); 548 } 549 550 public void setMute(boolean muted) { 551 mActivePhone.setMute(muted); 552 } 553 554 public boolean getMute() { 555 return mActivePhone.getMute(); 556 } 557 558 public void invokeOemRilRequestRaw(byte[] data, Message response) { 559 mActivePhone.invokeOemRilRequestRaw(data, response); 560 } 561 562 public void invokeOemRilRequestStrings(String[] strings, Message response) { 563 mActivePhone.invokeOemRilRequestStrings(strings, response); 564 } 565 566 /** 567 * @deprecated 568 */ 569 public void getPdpContextList(Message response) { 570 mActivePhone.getPdpContextList(response); 571 } 572 573 public void getDataCallList(Message response) { 574 mActivePhone.getDataCallList(response); 575 } 576 577 /** 578 * @deprecated 579 */ 580 public List<PdpConnection> getCurrentPdpList() { 581 return mActivePhone.getCurrentPdpList(); 582 } 583 584 public List<DataConnection> getCurrentDataConnectionList() { 585 return mActivePhone.getCurrentDataConnectionList(); 586 } 587 588 public void updateServiceLocation() { 589 mActivePhone.updateServiceLocation(); 590 } 591 592 public void enableLocationUpdates() { 593 mActivePhone.enableLocationUpdates(); 594 } 595 596 public void disableLocationUpdates() { 597 mActivePhone.disableLocationUpdates(); 598 } 599 600 public void setUnitTestMode(boolean f) { 601 mActivePhone.setUnitTestMode(f); 602 } 603 604 public boolean getUnitTestMode() { 605 return mActivePhone.getUnitTestMode(); 606 } 607 608 public void setBandMode(int bandMode, Message response) { 609 mActivePhone.setBandMode(bandMode, response); 610 } 611 612 public void queryAvailableBandMode(Message response) { 613 mActivePhone.queryAvailableBandMode(response); 614 } 615 616 public boolean getDataRoamingEnabled() { 617 return mActivePhone.getDataRoamingEnabled(); 618 } 619 620 public void setDataRoamingEnabled(boolean enable) { 621 mActivePhone.setDataRoamingEnabled(enable); 622 } 623 624 public void queryCdmaRoamingPreference(Message response) { 625 mActivePhone.queryCdmaRoamingPreference(response); 626 } 627 628 public void setCdmaRoamingPreference(int cdmaRoamingType, Message response) { 629 mActivePhone.setCdmaRoamingPreference(cdmaRoamingType, response); 630 } 631 632 public void setCdmaSubscription(int cdmaSubscriptionType, Message response) { 633 mActivePhone.setCdmaSubscription(cdmaSubscriptionType, response); 634 } 635 636 public SimulatedRadioControl getSimulatedRadioControl() { 637 return mActivePhone.getSimulatedRadioControl(); 638 } 639 640 public boolean enableDataConnectivity() { 641 return mActivePhone.enableDataConnectivity(); 642 } 643 644 public boolean disableDataConnectivity() { 645 return mActivePhone.disableDataConnectivity(); 646 } 647 648 public int enableApnType(String type) { 649 return mActivePhone.enableApnType(type); 650 } 651 652 public int disableApnType(String type) { 653 return mActivePhone.disableApnType(type); 654 } 655 656 public boolean isDataConnectivityEnabled() { 657 return mActivePhone.isDataConnectivityEnabled(); 658 } 659 660 public boolean isDataConnectivityPossible() { 661 return mActivePhone.isDataConnectivityPossible(); 662 } 663 664 public String getInterfaceName(String apnType) { 665 return mActivePhone.getInterfaceName(apnType); 666 } 667 668 public String getIpAddress(String apnType) { 669 return mActivePhone.getIpAddress(apnType); 670 } 671 672 public String getGateway(String apnType) { 673 return mActivePhone.getGateway(apnType); 674 } 675 676 public String[] getDnsServers(String apnType) { 677 return mActivePhone.getDnsServers(apnType); 678 } 679 680 public String getDeviceId() { 681 return mActivePhone.getDeviceId(); 682 } 683 684 public String getDeviceSvn() { 685 return mActivePhone.getDeviceSvn(); 686 } 687 688 public String getSubscriberId() { 689 return mActivePhone.getSubscriberId(); 690 } 691 692 public String getIccSerialNumber() { 693 return mActivePhone.getIccSerialNumber(); 694 } 695 696 public String getEsn() { 697 return mActivePhone.getEsn(); 698 } 699 700 public String getMeid() { 701 return mActivePhone.getMeid(); 702 } 703 704 public PhoneSubInfo getPhoneSubInfo(){ 705 return mActivePhone.getPhoneSubInfo(); 706 } 707 708 public IccSmsInterfaceManager getIccSmsInterfaceManager(){ 709 return mActivePhone.getIccSmsInterfaceManager(); 710 } 711 712 public IccPhoneBookInterfaceManager getIccPhoneBookInterfaceManager(){ 713 return mActivePhone.getIccPhoneBookInterfaceManager(); 714 } 715 716 public void setTTYMode(int ttyMode, Message onComplete) { 717 mActivePhone.setTTYMode(ttyMode, onComplete); 718 } 719 720 public void queryTTYMode(Message onComplete) { 721 mActivePhone.queryTTYMode(onComplete); 722 } 723 724 public void activateCellBroadcastSms(int activate, Message response) { 725 mActivePhone.activateCellBroadcastSms(activate, response); 726 } 727 728 public void getCellBroadcastSmsConfig(Message response) { 729 mActivePhone.getCellBroadcastSmsConfig(response); 730 } 731 732 public void setCellBroadcastSmsConfig(int[] configValuesArray, Message response) { 733 mActivePhone.setCellBroadcastSmsConfig(configValuesArray, response); 734 } 735 736 public void notifyDataActivity() { 737 mActivePhone.notifyDataActivity(); 738 } 739 740 public void getSmscAddress(Message result) { 741 mActivePhone.getSmscAddress(result); 742 } 743 744 public void setSmscAddress(String address, Message result) { 745 mActivePhone.setSmscAddress(address, result); 746 } 747 748 public int getCdmaEriIconIndex() { 749 return mActivePhone.getCdmaEriIconIndex(); 750 } 751 752 public String getCdmaEriText() { 753 return mActivePhone.getCdmaEriText(); 754 } 755 756 public int getCdmaEriIconMode() { 757 return mActivePhone.getCdmaEriIconMode(); 758 } 759 760 public void sendBurstDtmf(String dtmfString, int on, int off, Message onComplete){ 761 mActivePhone.sendBurstDtmf(dtmfString, on, off, onComplete); 762 } 763 764 public void exitEmergencyCallbackMode(){ 765 mActivePhone.exitEmergencyCallbackMode(); 766 } 767 768 public boolean isOtaSpNumber(String dialStr){ 769 return mActivePhone.isOtaSpNumber(dialStr); 770 } 771 772 public void registerForCallWaiting(Handler h, int what, Object obj){ 773 mActivePhone.registerForCallWaiting(h,what,obj); 774 } 775 776 public void unregisterForCallWaiting(Handler h){ 777 mActivePhone.unregisterForCallWaiting(h); 778 } 779 780 public void registerForSignalInfo(Handler h, int what, Object obj) { 781 mActivePhone.registerForSignalInfo(h,what,obj); 782 } 783 784 public void unregisterForSignalInfo(Handler h) { 785 mActivePhone.unregisterForSignalInfo(h); 786 } 787 788 public void registerForDisplayInfo(Handler h, int what, Object obj) { 789 mActivePhone.registerForDisplayInfo(h,what,obj); 790 } 791 792 public void unregisterForDisplayInfo(Handler h) { 793 mActivePhone.unregisterForDisplayInfo(h); 794 } 795 796 public void registerForNumberInfo(Handler h, int what, Object obj) { 797 mActivePhone.registerForNumberInfo(h, what, obj); 798 } 799 800 public void unregisterForNumberInfo(Handler h) { 801 mActivePhone.unregisterForNumberInfo(h); 802 } 803 804 public void registerForRedirectedNumberInfo(Handler h, int what, Object obj) { 805 mActivePhone.registerForRedirectedNumberInfo(h, what, obj); 806 } 807 808 public void unregisterForRedirectedNumberInfo(Handler h) { 809 mActivePhone.unregisterForRedirectedNumberInfo(h); 810 } 811 812 public void registerForLineControlInfo(Handler h, int what, Object obj) { 813 mActivePhone.registerForLineControlInfo( h, what, obj); 814 } 815 816 public void unregisterForLineControlInfo(Handler h) { 817 mActivePhone.unregisterForLineControlInfo(h); 818 } 819 820 public void registerFoT53ClirlInfo(Handler h, int what, Object obj) { 821 mActivePhone.registerFoT53ClirlInfo(h, what, obj); 822 } 823 824 public void unregisterForT53ClirInfo(Handler h) { 825 mActivePhone.unregisterForT53ClirInfo(h); 826 } 827 828 public void registerForT53AudioControlInfo(Handler h, int what, Object obj) { 829 mActivePhone.registerForT53AudioControlInfo( h, what, obj); 830 } 831 832 public void unregisterForT53AudioControlInfo(Handler h) { 833 mActivePhone.unregisterForT53AudioControlInfo(h); 834 } 835 836 public void setOnEcbModeExitResponse(Handler h, int what, Object obj){ 837 mActivePhone.setOnEcbModeExitResponse(h,what,obj); 838 } 839 840 public void unsetOnEcbModeExitResponse(Handler h){ 841 mActivePhone.unsetOnEcbModeExitResponse(h); 842 } 843} 844