BaseCommands.java revision a8467dd0c524787104b1ccdddc5e8af10ba729ed
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 17package com.android.internal.telephony; 18 19 20import android.content.Context; 21import android.os.Message; 22import android.os.RegistrantList; 23import android.os.Registrant; 24import android.os.Handler; 25import android.os.AsyncResult; 26import android.telephony.TelephonyManager; 27 28/** 29 * {@hide} 30 */ 31public abstract class BaseCommands implements CommandsInterface { 32 //***** Instance Variables 33 protected Context mContext; 34 protected RadioState mState = RadioState.RADIO_UNAVAILABLE; 35 protected Object mStateMonitor = new Object(); 36 37 protected RegistrantList mRadioStateChangedRegistrants = new RegistrantList(); 38 protected RegistrantList mOnRegistrants = new RegistrantList(); 39 protected RegistrantList mAvailRegistrants = new RegistrantList(); 40 protected RegistrantList mOffOrNotAvailRegistrants = new RegistrantList(); 41 protected RegistrantList mNotAvailRegistrants = new RegistrantList(); 42 protected RegistrantList mCallStateRegistrants = new RegistrantList(); 43 protected RegistrantList mVoiceNetworkStateRegistrants = new RegistrantList(); 44 protected RegistrantList mDataNetworkStateRegistrants = new RegistrantList(); 45 protected RegistrantList mVoiceRadioTechChangedRegistrants = new RegistrantList(); 46 protected RegistrantList mImsNetworkStateChangedRegistrants = new RegistrantList(); 47 protected RegistrantList mIccStatusChangedRegistrants = new RegistrantList(); 48 protected RegistrantList mVoicePrivacyOnRegistrants = new RegistrantList(); 49 protected RegistrantList mVoicePrivacyOffRegistrants = new RegistrantList(); 50 protected Registrant mUnsolOemHookRawRegistrant; 51 protected RegistrantList mOtaProvisionRegistrants = new RegistrantList(); 52 protected RegistrantList mCallWaitingInfoRegistrants = new RegistrantList(); 53 protected RegistrantList mDisplayInfoRegistrants = new RegistrantList(); 54 protected RegistrantList mSignalInfoRegistrants = new RegistrantList(); 55 protected RegistrantList mNumberInfoRegistrants = new RegistrantList(); 56 protected RegistrantList mRedirNumInfoRegistrants = new RegistrantList(); 57 protected RegistrantList mLineControlInfoRegistrants = new RegistrantList(); 58 protected RegistrantList mT53ClirInfoRegistrants = new RegistrantList(); 59 protected RegistrantList mT53AudCntrlInfoRegistrants = new RegistrantList(); 60 protected RegistrantList mRingbackToneRegistrants = new RegistrantList(); 61 protected RegistrantList mResendIncallMuteRegistrants = new RegistrantList(); 62 protected RegistrantList mCdmaSubscriptionChangedRegistrants = new RegistrantList(); 63 protected RegistrantList mCdmaPrlChangedRegistrants = new RegistrantList(); 64 protected RegistrantList mExitEmergencyCallbackModeRegistrants = new RegistrantList(); 65 protected RegistrantList mRilConnectedRegistrants = new RegistrantList(); 66 protected RegistrantList mIccRefreshRegistrants = new RegistrantList(); 67 protected RegistrantList mRilCellInfoListRegistrants = new RegistrantList(); 68 protected RegistrantList mSubscriptionStatusRegistrants = new RegistrantList(); 69 protected RegistrantList mSrvccStateRegistrants = new RegistrantList(); 70 protected RegistrantList mHardwareConfigChangeRegistrants = new RegistrantList(); 71 72 protected Registrant mGsmSmsRegistrant; 73 protected Registrant mCdmaSmsRegistrant; 74 protected Registrant mNITZTimeRegistrant; 75 protected Registrant mSignalStrengthRegistrant; 76 protected Registrant mUSSDRegistrant; 77 protected Registrant mSmsOnSimRegistrant; 78 protected Registrant mSmsStatusRegistrant; 79 protected Registrant mSsnRegistrant; 80 protected Registrant mCatSessionEndRegistrant; 81 protected Registrant mCatProCmdRegistrant; 82 protected Registrant mCatEventRegistrant; 83 protected Registrant mCatCallSetUpRegistrant; 84 protected Registrant mIccSmsFullRegistrant; 85 protected Registrant mEmergencyCallbackModeRegistrant; 86 protected Registrant mRingRegistrant; 87 protected Registrant mRestrictedStateRegistrant; 88 protected Registrant mGsmBroadcastSmsRegistrant; 89 90 // Preferred network type received from PhoneFactory. 91 // This is used when establishing a connection to the 92 // vendor ril so it starts up in the correct mode. 93 protected int mPreferredNetworkType; 94 // CDMA subscription received from PhoneFactory 95 protected int mCdmaSubscription; 96 // Type of Phone, GSM or CDMA. Set by CDMAPhone or GSMPhone. 97 protected int mPhoneType; 98 // RIL Version 99 protected int mRilVersion = -1; 100 101 public BaseCommands(Context context) { 102 mContext = context; // May be null (if so we won't log statistics) 103 } 104 105 //***** CommandsInterface implementation 106 107 @Override 108 public RadioState getRadioState() { 109 return mState; 110 } 111 112 @Override 113 public void registerForRadioStateChanged(Handler h, int what, Object obj) { 114 Registrant r = new Registrant (h, what, obj); 115 116 synchronized (mStateMonitor) { 117 mRadioStateChangedRegistrants.add(r); 118 r.notifyRegistrant(); 119 } 120 } 121 122 @Override 123 public void unregisterForRadioStateChanged(Handler h) { 124 synchronized (mStateMonitor) { 125 mRadioStateChangedRegistrants.remove(h); 126 } 127 } 128 129 public void registerForImsNetworkStateChanged(Handler h, int what, Object obj) { 130 Registrant r = new Registrant (h, what, obj); 131 mImsNetworkStateChangedRegistrants.add(r); 132 } 133 134 public void unregisterForImsNetworkStateChanged(Handler h) { 135 mImsNetworkStateChangedRegistrants.remove(h); 136 } 137 138 @Override 139 public void registerForOn(Handler h, int what, Object obj) { 140 Registrant r = new Registrant (h, what, obj); 141 142 synchronized (mStateMonitor) { 143 mOnRegistrants.add(r); 144 145 if (mState.isOn()) { 146 r.notifyRegistrant(new AsyncResult(null, null, null)); 147 } 148 } 149 } 150 @Override 151 public void unregisterForOn(Handler h) { 152 synchronized (mStateMonitor) { 153 mOnRegistrants.remove(h); 154 } 155 } 156 157 158 @Override 159 public void registerForAvailable(Handler h, int what, Object obj) { 160 Registrant r = new Registrant (h, what, obj); 161 162 synchronized (mStateMonitor) { 163 mAvailRegistrants.add(r); 164 165 if (mState.isAvailable()) { 166 r.notifyRegistrant(new AsyncResult(null, null, null)); 167 } 168 } 169 } 170 171 @Override 172 public void unregisterForAvailable(Handler h) { 173 synchronized(mStateMonitor) { 174 mAvailRegistrants.remove(h); 175 } 176 } 177 178 @Override 179 public void registerForNotAvailable(Handler h, int what, Object obj) { 180 Registrant r = new Registrant (h, what, obj); 181 182 synchronized (mStateMonitor) { 183 mNotAvailRegistrants.add(r); 184 185 if (!mState.isAvailable()) { 186 r.notifyRegistrant(new AsyncResult(null, null, null)); 187 } 188 } 189 } 190 191 @Override 192 public void unregisterForNotAvailable(Handler h) { 193 synchronized (mStateMonitor) { 194 mNotAvailRegistrants.remove(h); 195 } 196 } 197 198 @Override 199 public void registerForOffOrNotAvailable(Handler h, int what, Object obj) { 200 Registrant r = new Registrant (h, what, obj); 201 202 synchronized (mStateMonitor) { 203 mOffOrNotAvailRegistrants.add(r); 204 205 if (mState == RadioState.RADIO_OFF || !mState.isAvailable()) { 206 r.notifyRegistrant(new AsyncResult(null, null, null)); 207 } 208 } 209 } 210 @Override 211 public void unregisterForOffOrNotAvailable(Handler h) { 212 synchronized(mStateMonitor) { 213 mOffOrNotAvailRegistrants.remove(h); 214 } 215 } 216 217 @Override 218 public void registerForCallStateChanged(Handler h, int what, Object obj) { 219 Registrant r = new Registrant (h, what, obj); 220 221 mCallStateRegistrants.add(r); 222 } 223 224 @Override 225 public void unregisterForCallStateChanged(Handler h) { 226 mCallStateRegistrants.remove(h); 227 } 228 229 @Override 230 public void registerForVoiceNetworkStateChanged(Handler h, int what, Object obj) { 231 Registrant r = new Registrant (h, what, obj); 232 233 mVoiceNetworkStateRegistrants.add(r); 234 } 235 236 @Override 237 public void unregisterForVoiceNetworkStateChanged(Handler h) { 238 mVoiceNetworkStateRegistrants.remove(h); 239 } 240 241 @Override 242 public void registerForDataNetworkStateChanged(Handler h, int what, Object obj) { 243 Registrant r = new Registrant (h, what, obj); 244 245 mDataNetworkStateRegistrants.add(r); 246 } 247 248 @Override 249 public void unregisterForDataNetworkStateChanged(Handler h) { 250 mDataNetworkStateRegistrants.remove(h); 251 } 252 253 @Override 254 public void registerForVoiceRadioTechChanged(Handler h, int what, Object obj) { 255 Registrant r = new Registrant (h, what, obj); 256 mVoiceRadioTechChangedRegistrants.add(r); 257 } 258 259 @Override 260 public void unregisterForVoiceRadioTechChanged(Handler h) { 261 mVoiceRadioTechChangedRegistrants.remove(h); 262 } 263 264 @Override 265 public void registerForIccStatusChanged(Handler h, int what, Object obj) { 266 Registrant r = new Registrant (h, what, obj); 267 mIccStatusChangedRegistrants.add(r); 268 } 269 270 @Override 271 public void unregisterForIccStatusChanged(Handler h) { 272 mIccStatusChangedRegistrants.remove(h); 273 } 274 275 @Override 276 public void setOnNewGsmSms(Handler h, int what, Object obj) { 277 mGsmSmsRegistrant = new Registrant (h, what, obj); 278 } 279 280 @Override 281 public void unSetOnNewGsmSms(Handler h) { 282 mGsmSmsRegistrant.clear(); 283 } 284 285 @Override 286 public void setOnNewCdmaSms(Handler h, int what, Object obj) { 287 mCdmaSmsRegistrant = new Registrant (h, what, obj); 288 } 289 290 @Override 291 public void unSetOnNewCdmaSms(Handler h) { 292 mCdmaSmsRegistrant.clear(); 293 } 294 295 @Override 296 public void setOnNewGsmBroadcastSms(Handler h, int what, Object obj) { 297 mGsmBroadcastSmsRegistrant = new Registrant (h, what, obj); 298 } 299 300 @Override 301 public void unSetOnNewGsmBroadcastSms(Handler h) { 302 mGsmBroadcastSmsRegistrant.clear(); 303 } 304 305 @Override 306 public void setOnSmsOnSim(Handler h, int what, Object obj) { 307 mSmsOnSimRegistrant = new Registrant (h, what, obj); 308 } 309 310 @Override 311 public void unSetOnSmsOnSim(Handler h) { 312 mSmsOnSimRegistrant.clear(); 313 } 314 315 @Override 316 public void setOnSmsStatus(Handler h, int what, Object obj) { 317 mSmsStatusRegistrant = new Registrant (h, what, obj); 318 } 319 320 @Override 321 public void unSetOnSmsStatus(Handler h) { 322 mSmsStatusRegistrant.clear(); 323 } 324 325 @Override 326 public void setOnSignalStrengthUpdate(Handler h, int what, Object obj) { 327 mSignalStrengthRegistrant = new Registrant (h, what, obj); 328 } 329 330 @Override 331 public void unSetOnSignalStrengthUpdate(Handler h) { 332 mSignalStrengthRegistrant.clear(); 333 } 334 335 @Override 336 public void setOnNITZTime(Handler h, int what, Object obj) { 337 mNITZTimeRegistrant = new Registrant (h, what, obj); 338 } 339 340 @Override 341 public void unSetOnNITZTime(Handler h) { 342 mNITZTimeRegistrant.clear(); 343 } 344 345 @Override 346 public void setOnUSSD(Handler h, int what, Object obj) { 347 mUSSDRegistrant = new Registrant (h, what, obj); 348 } 349 350 @Override 351 public void unSetOnUSSD(Handler h) { 352 mUSSDRegistrant.clear(); 353 } 354 355 @Override 356 public void setOnSuppServiceNotification(Handler h, int what, Object obj) { 357 mSsnRegistrant = new Registrant (h, what, obj); 358 } 359 360 @Override 361 public void unSetOnSuppServiceNotification(Handler h) { 362 mSsnRegistrant.clear(); 363 } 364 365 @Override 366 public void setOnCatSessionEnd(Handler h, int what, Object obj) { 367 mCatSessionEndRegistrant = new Registrant (h, what, obj); 368 } 369 370 @Override 371 public void unSetOnCatSessionEnd(Handler h) { 372 mCatSessionEndRegistrant.clear(); 373 } 374 375 @Override 376 public void setOnCatProactiveCmd(Handler h, int what, Object obj) { 377 mCatProCmdRegistrant = new Registrant (h, what, obj); 378 } 379 380 @Override 381 public void unSetOnCatProactiveCmd(Handler h) { 382 mCatProCmdRegistrant.clear(); 383 } 384 385 @Override 386 public void setOnCatEvent(Handler h, int what, Object obj) { 387 mCatEventRegistrant = new Registrant (h, what, obj); 388 } 389 390 @Override 391 public void unSetOnCatEvent(Handler h) { 392 mCatEventRegistrant.clear(); 393 } 394 395 @Override 396 public void setOnCatCallSetUp(Handler h, int what, Object obj) { 397 mCatCallSetUpRegistrant = new Registrant (h, what, obj); 398 } 399 400 @Override 401 public void unSetOnCatCallSetUp(Handler h) { 402 mCatCallSetUpRegistrant.clear(); 403 } 404 405 @Override 406 public void setOnIccSmsFull(Handler h, int what, Object obj) { 407 mIccSmsFullRegistrant = new Registrant (h, what, obj); 408 } 409 410 @Override 411 public void unSetOnIccSmsFull(Handler h) { 412 mIccSmsFullRegistrant.clear(); 413 } 414 415 @Override 416 public void registerForIccRefresh(Handler h, int what, Object obj) { 417 Registrant r = new Registrant (h, what, obj); 418 mIccRefreshRegistrants.add(r); 419 } 420 @Override 421 public void setOnIccRefresh(Handler h, int what, Object obj) { 422 registerForIccRefresh(h, what, obj); 423 } 424 425 @Override 426 public void setEmergencyCallbackMode(Handler h, int what, Object obj) { 427 mEmergencyCallbackModeRegistrant = new Registrant (h, what, obj); 428 } 429 430 @Override 431 public void unregisterForIccRefresh(Handler h) { 432 mIccRefreshRegistrants.remove(h); 433 } 434 @Override 435 public void unsetOnIccRefresh(Handler h) { 436 unregisterForIccRefresh(h); 437 } 438 439 @Override 440 public void setOnCallRing(Handler h, int what, Object obj) { 441 mRingRegistrant = new Registrant (h, what, obj); 442 } 443 444 @Override 445 public void unSetOnCallRing(Handler h) { 446 mRingRegistrant.clear(); 447 } 448 449 @Override 450 public void registerForInCallVoicePrivacyOn(Handler h, int what, Object obj) { 451 Registrant r = new Registrant (h, what, obj); 452 mVoicePrivacyOnRegistrants.add(r); 453 } 454 455 @Override 456 public void unregisterForInCallVoicePrivacyOn(Handler h){ 457 mVoicePrivacyOnRegistrants.remove(h); 458 } 459 460 @Override 461 public void registerForInCallVoicePrivacyOff(Handler h, int what, Object obj) { 462 Registrant r = new Registrant (h, what, obj); 463 mVoicePrivacyOffRegistrants.add(r); 464 } 465 466 @Override 467 public void unregisterForInCallVoicePrivacyOff(Handler h){ 468 mVoicePrivacyOffRegistrants.remove(h); 469 } 470 471 @Override 472 public void setOnRestrictedStateChanged(Handler h, int what, Object obj) { 473 mRestrictedStateRegistrant = new Registrant (h, what, obj); 474 } 475 476 @Override 477 public void unSetOnRestrictedStateChanged(Handler h) { 478 mRestrictedStateRegistrant.clear(); 479 } 480 481 @Override 482 public void registerForDisplayInfo(Handler h, int what, Object obj) { 483 Registrant r = new Registrant (h, what, obj); 484 mDisplayInfoRegistrants.add(r); 485 } 486 487 @Override 488 public void unregisterForDisplayInfo(Handler h) { 489 mDisplayInfoRegistrants.remove(h); 490 } 491 492 @Override 493 public void registerForCallWaitingInfo(Handler h, int what, Object obj) { 494 Registrant r = new Registrant (h, what, obj); 495 mCallWaitingInfoRegistrants.add(r); 496 } 497 498 @Override 499 public void unregisterForCallWaitingInfo(Handler h) { 500 mCallWaitingInfoRegistrants.remove(h); 501 } 502 503 @Override 504 public void registerForSignalInfo(Handler h, int what, Object obj) { 505 Registrant r = new Registrant (h, what, obj); 506 mSignalInfoRegistrants.add(r); 507 } 508 509 public void setOnUnsolOemHookRaw(Handler h, int what, Object obj) { 510 mUnsolOemHookRawRegistrant = new Registrant (h, what, obj); 511 } 512 513 public void unSetOnUnsolOemHookRaw(Handler h) { 514 mUnsolOemHookRawRegistrant.clear(); 515 } 516 517 @Override 518 public void unregisterForSignalInfo(Handler h) { 519 mSignalInfoRegistrants.remove(h); 520 } 521 522 @Override 523 public void registerForCdmaOtaProvision(Handler h,int what, Object obj){ 524 Registrant r = new Registrant (h, what, obj); 525 mOtaProvisionRegistrants.add(r); 526 } 527 528 @Override 529 public void unregisterForCdmaOtaProvision(Handler h){ 530 mOtaProvisionRegistrants.remove(h); 531 } 532 533 @Override 534 public void registerForNumberInfo(Handler h,int what, Object obj) { 535 Registrant r = new Registrant (h, what, obj); 536 mNumberInfoRegistrants.add(r); 537 } 538 539 @Override 540 public void unregisterForNumberInfo(Handler h){ 541 mNumberInfoRegistrants.remove(h); 542 } 543 544 @Override 545 public void registerForRedirectedNumberInfo(Handler h,int what, Object obj) { 546 Registrant r = new Registrant (h, what, obj); 547 mRedirNumInfoRegistrants.add(r); 548 } 549 550 @Override 551 public void unregisterForRedirectedNumberInfo(Handler h) { 552 mRedirNumInfoRegistrants.remove(h); 553 } 554 555 @Override 556 public void registerForLineControlInfo(Handler h, int what, Object obj) { 557 Registrant r = new Registrant (h, what, obj); 558 mLineControlInfoRegistrants.add(r); 559 } 560 561 @Override 562 public void unregisterForLineControlInfo(Handler h) { 563 mLineControlInfoRegistrants.remove(h); 564 } 565 566 @Override 567 public void registerFoT53ClirlInfo(Handler h,int what, Object obj) { 568 Registrant r = new Registrant (h, what, obj); 569 mT53ClirInfoRegistrants.add(r); 570 } 571 572 @Override 573 public void unregisterForT53ClirInfo(Handler h) { 574 mT53ClirInfoRegistrants.remove(h); 575 } 576 577 @Override 578 public void registerForT53AudioControlInfo(Handler h,int what, Object obj) { 579 Registrant r = new Registrant (h, what, obj); 580 mT53AudCntrlInfoRegistrants.add(r); 581 } 582 583 @Override 584 public void unregisterForT53AudioControlInfo(Handler h) { 585 mT53AudCntrlInfoRegistrants.remove(h); 586 } 587 588 @Override 589 public void registerForRingbackTone(Handler h, int what, Object obj) { 590 Registrant r = new Registrant (h, what, obj); 591 mRingbackToneRegistrants.add(r); 592 } 593 594 @Override 595 public void unregisterForRingbackTone(Handler h) { 596 mRingbackToneRegistrants.remove(h); 597 } 598 599 @Override 600 public void registerForResendIncallMute(Handler h, int what, Object obj) { 601 Registrant r = new Registrant (h, what, obj); 602 mResendIncallMuteRegistrants.add(r); 603 } 604 605 @Override 606 public void unregisterForResendIncallMute(Handler h) { 607 mResendIncallMuteRegistrants.remove(h); 608 } 609 610 @Override 611 public void registerForCdmaSubscriptionChanged(Handler h, int what, Object obj) { 612 Registrant r = new Registrant (h, what, obj); 613 mCdmaSubscriptionChangedRegistrants.add(r); 614 } 615 616 @Override 617 public void unregisterForCdmaSubscriptionChanged(Handler h) { 618 mCdmaSubscriptionChangedRegistrants.remove(h); 619 } 620 621 @Override 622 public void registerForCdmaPrlChanged(Handler h, int what, Object obj) { 623 Registrant r = new Registrant (h, what, obj); 624 mCdmaPrlChangedRegistrants.add(r); 625 } 626 627 @Override 628 public void unregisterForCdmaPrlChanged(Handler h) { 629 mCdmaPrlChangedRegistrants.remove(h); 630 } 631 632 @Override 633 public void registerForExitEmergencyCallbackMode(Handler h, int what, Object obj) { 634 Registrant r = new Registrant (h, what, obj); 635 mExitEmergencyCallbackModeRegistrants.add(r); 636 } 637 638 @Override 639 public void unregisterForExitEmergencyCallbackMode(Handler h) { 640 mExitEmergencyCallbackModeRegistrants.remove(h); 641 } 642 643 @Override 644 public void registerForHardwareConfigChanged(Handler h, int what, Object obj) { 645 Registrant r = new Registrant (h, what, obj); 646 mHardwareConfigChangeRegistrants.add(r); 647 } 648 649 @Override 650 public void unregisterForHardwareConfigChanged(Handler h) { 651 mHardwareConfigChangeRegistrants.remove(h); 652 } 653 654 /** 655 * {@inheritDoc} 656 */ 657 @Override 658 public void registerForRilConnected(Handler h, int what, Object obj) { 659 Registrant r = new Registrant (h, what, obj); 660 mRilConnectedRegistrants.add(r); 661 if (mRilVersion != -1) { 662 r.notifyRegistrant(new AsyncResult(null, new Integer(mRilVersion), null)); 663 } 664 } 665 666 @Override 667 public void unregisterForRilConnected(Handler h) { 668 mRilConnectedRegistrants.remove(h); 669 } 670 671 public void registerForSubscriptionStatusChanged(Handler h, int what, Object obj) { 672 Registrant r = new Registrant (h, what, obj); 673 mSubscriptionStatusRegistrants.add(r); 674 } 675 676 public void unregisterForSubscriptionStatusChanged(Handler h) { 677 mSubscriptionStatusRegistrants.remove(h); 678 } 679 680 //***** Protected Methods 681 /** 682 * Store new RadioState and send notification based on the changes 683 * 684 * This function is called only by RIL.java when receiving unsolicited 685 * RIL_UNSOL_RESPONSE_RADIO_STATE_CHANGED 686 * 687 * RadioState has 3 values : RADIO_OFF, RADIO_UNAVAILABLE, RADIO_ON. 688 * 689 * @param newState new RadioState decoded from RIL_UNSOL_RADIO_STATE_CHANGED 690 */ 691 protected void setRadioState(RadioState newState) { 692 RadioState oldState; 693 694 synchronized (mStateMonitor) { 695 oldState = mState; 696 mState = newState; 697 698 if (oldState == mState) { 699 // no state transition 700 return; 701 } 702 703 mRadioStateChangedRegistrants.notifyRegistrants(); 704 705 if (mState.isAvailable() && !oldState.isAvailable()) { 706 mAvailRegistrants.notifyRegistrants(); 707 onRadioAvailable(); 708 } 709 710 if (!mState.isAvailable() && oldState.isAvailable()) { 711 mNotAvailRegistrants.notifyRegistrants(); 712 } 713 714 if (mState.isOn() && !oldState.isOn()) { 715 mOnRegistrants.notifyRegistrants(); 716 } 717 718 if ((!mState.isOn() || !mState.isAvailable()) 719 && !((!oldState.isOn() || !oldState.isAvailable())) 720 ) { 721 mOffOrNotAvailRegistrants.notifyRegistrants(); 722 } 723 } 724 } 725 726 protected void onRadioAvailable() { 727 } 728 729 /** 730 * {@inheritDoc} 731 */ 732 @Override 733 public int getLteOnCdmaMode() { 734 return TelephonyManager.getLteOnCdmaModeStatic(); 735 } 736 737 /** 738 * {@inheritDoc} 739 */ 740 @Override 741 public void registerForCellInfoList(Handler h, int what, Object obj) { 742 Registrant r = new Registrant (h, what, obj); 743 mRilCellInfoListRegistrants.add(r); 744 } 745 @Override 746 public void unregisterForCellInfoList(Handler h) { 747 mRilCellInfoListRegistrants.remove(h); 748 } 749 750 @Override 751 public void registerForSrvccStateChanged(Handler h, int what, Object obj) { 752 Registrant r = new Registrant (h, what, obj); 753 754 mSrvccStateRegistrants.add(r); 755 } 756 757 @Override 758 public void unregisterForSrvccStateChanged(Handler h) { 759 mSrvccStateRegistrants.remove(h); 760 } 761 762 @Override 763 public void testingEmergencyCall() {} 764 765 @Override 766 public int getRilVersion() { 767 return mRilVersion; 768 } 769 770 public void setUiccSubscription(int slotId, int appIndex, int subId, int subStatus, 771 Message response) { 772 } 773 774 public void setDataAllowed(boolean allowed, Message response) { 775 } 776} 777