1 2 /* 3 * Copyright (C) 2006 The Android Open Source Project 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18 package com.android.internal.telephony; 19 20 import android.annotation.NonNull; 21 import android.annotation.Nullable; 22 import android.compat.annotation.UnsupportedAppUsage; 23 import android.content.Context; 24 import android.os.AsyncResult; 25 import android.os.Build; 26 import android.os.Handler; 27 import android.os.Message; 28 import android.os.Registrant; 29 import android.os.RegistrantList; 30 import android.telephony.Annotation.RadioPowerState; 31 import android.telephony.BarringInfo; 32 import android.telephony.TelephonyManager; 33 import android.telephony.emergency.EmergencyNumber; 34 35 import com.android.internal.telephony.uicc.SimPhonebookRecord; 36 37 import java.util.ArrayList; 38 import java.util.List; 39 40 /** 41 * {@hide} 42 */ 43 public abstract class BaseCommands implements CommandsInterface { 44 //***** Instance Variables 45 @UnsupportedAppUsage 46 protected Context mContext; 47 protected int mState = TelephonyManager.RADIO_POWER_UNAVAILABLE; 48 @UnsupportedAppUsage 49 protected Object mStateMonitor = new Object(); 50 51 protected RegistrantList mRadioStateChangedRegistrants = new RegistrantList(); 52 protected RegistrantList mOnRegistrants = new RegistrantList(); 53 protected RegistrantList mAvailRegistrants = new RegistrantList(); 54 protected RegistrantList mOffOrNotAvailRegistrants = new RegistrantList(); 55 protected RegistrantList mNotAvailRegistrants = new RegistrantList(); 56 @UnsupportedAppUsage 57 protected RegistrantList mCallStateRegistrants = new RegistrantList(); 58 protected RegistrantList mNetworkStateRegistrants = new RegistrantList(); 59 protected RegistrantList mDataCallListChangedRegistrants = new RegistrantList(); 60 protected RegistrantList mApnUnthrottledRegistrants = new RegistrantList(); 61 protected RegistrantList mSlicingConfigChangedRegistrants = new RegistrantList(); 62 @UnsupportedAppUsage 63 protected RegistrantList mVoiceRadioTechChangedRegistrants = new RegistrantList(); 64 @UnsupportedAppUsage 65 protected RegistrantList mImsNetworkStateChangedRegistrants = new RegistrantList(); 66 @UnsupportedAppUsage 67 protected RegistrantList mIccStatusChangedRegistrants = new RegistrantList(); 68 protected RegistrantList mIccSlotStatusChangedRegistrants = new RegistrantList(); 69 protected RegistrantList mVoicePrivacyOnRegistrants = new RegistrantList(); 70 protected RegistrantList mVoicePrivacyOffRegistrants = new RegistrantList(); 71 @UnsupportedAppUsage 72 protected Registrant mUnsolOemHookRawRegistrant; 73 @UnsupportedAppUsage 74 protected RegistrantList mOtaProvisionRegistrants = new RegistrantList(); 75 @UnsupportedAppUsage 76 protected RegistrantList mCallWaitingInfoRegistrants = new RegistrantList(); 77 protected RegistrantList mDisplayInfoRegistrants = new RegistrantList(); 78 protected RegistrantList mSignalInfoRegistrants = new RegistrantList(); 79 protected RegistrantList mNumberInfoRegistrants = new RegistrantList(); 80 protected RegistrantList mRedirNumInfoRegistrants = new RegistrantList(); 81 protected RegistrantList mLineControlInfoRegistrants = new RegistrantList(); 82 protected RegistrantList mT53ClirInfoRegistrants = new RegistrantList(); 83 protected RegistrantList mT53AudCntrlInfoRegistrants = new RegistrantList(); 84 @UnsupportedAppUsage 85 protected RegistrantList mRingbackToneRegistrants = new RegistrantList(); 86 @UnsupportedAppUsage 87 protected RegistrantList mResendIncallMuteRegistrants = new RegistrantList(); 88 @UnsupportedAppUsage 89 protected RegistrantList mCdmaSubscriptionChangedRegistrants = new RegistrantList(); 90 @UnsupportedAppUsage 91 protected RegistrantList mCdmaPrlChangedRegistrants = new RegistrantList(); 92 @UnsupportedAppUsage 93 protected RegistrantList mExitEmergencyCallbackModeRegistrants = new RegistrantList(); 94 protected RegistrantList mRilConnectedRegistrants = new RegistrantList(); 95 @UnsupportedAppUsage 96 protected RegistrantList mIccRefreshRegistrants = new RegistrantList(); 97 @UnsupportedAppUsage 98 protected RegistrantList mRilCellInfoListRegistrants = new RegistrantList(); 99 @UnsupportedAppUsage 100 protected RegistrantList mSubscriptionStatusRegistrants = new RegistrantList(); 101 @UnsupportedAppUsage 102 protected RegistrantList mSrvccStateRegistrants = new RegistrantList(); 103 @UnsupportedAppUsage 104 protected RegistrantList mHardwareConfigChangeRegistrants = new RegistrantList(); 105 @UnsupportedAppUsage 106 protected RegistrantList mPhoneRadioCapabilityChangedRegistrants = 107 new RegistrantList(); 108 protected RegistrantList mPcoDataRegistrants = new RegistrantList(); 109 protected RegistrantList mCarrierInfoForImsiEncryptionRegistrants = new RegistrantList(); 110 protected RegistrantList mRilNetworkScanResultRegistrants = new RegistrantList(); 111 protected RegistrantList mModemResetRegistrants = new RegistrantList(); 112 protected RegistrantList mNattKeepaliveStatusRegistrants = new RegistrantList(); 113 protected RegistrantList mPhysicalChannelConfigurationRegistrants = new RegistrantList(); 114 protected RegistrantList mLceInfoRegistrants = new RegistrantList(); 115 protected RegistrantList mEmergencyNumberListRegistrants = new RegistrantList(); 116 protected RegistrantList mUiccApplicationsEnablementRegistrants = new RegistrantList(); 117 protected RegistrantList mBarringInfoChangedRegistrants = new RegistrantList(); 118 protected RegistrantList mSimPhonebookChangedRegistrants = new RegistrantList(); 119 protected RegistrantList mSimPhonebookRecordsReceivedRegistrants = new RegistrantList(); 120 protected RegistrantList mEmergencyNetworkScanRegistrants = new RegistrantList(); 121 protected RegistrantList mConnectionSetupFailureRegistrants = new RegistrantList(); 122 protected RegistrantList mNotifyAnbrRegistrants = new RegistrantList(); 123 protected RegistrantList mTriggerImsDeregistrationRegistrants = new RegistrantList(); 124 protected RegistrantList mPendingSatelliteMessageCountRegistrants = new RegistrantList(); 125 protected RegistrantList mNewSatelliteMessagesRegistrants = new RegistrantList(); 126 protected RegistrantList mSatelliteMessagesTransferCompleteRegistrants = new RegistrantList(); 127 protected RegistrantList mSatellitePointingInfoChangedRegistrants = new RegistrantList(); 128 protected RegistrantList mSatelliteModeChangedRegistrants = new RegistrantList(); 129 protected RegistrantList mSatelliteRadioTechnologyChangedRegistrants = new RegistrantList(); 130 protected RegistrantList mSatelliteProvisionStateChangedRegistrants = new RegistrantList(); 131 132 @UnsupportedAppUsage 133 protected Registrant mGsmSmsRegistrant; 134 @UnsupportedAppUsage 135 protected Registrant mCdmaSmsRegistrant; 136 @UnsupportedAppUsage 137 protected Registrant mNITZTimeRegistrant; 138 @UnsupportedAppUsage 139 protected Registrant mSignalStrengthRegistrant; 140 @UnsupportedAppUsage 141 protected Registrant mUSSDRegistrant; 142 @UnsupportedAppUsage 143 protected Registrant mSmsOnSimRegistrant; 144 @UnsupportedAppUsage 145 protected Registrant mSmsStatusRegistrant; 146 @UnsupportedAppUsage 147 protected Registrant mSsnRegistrant; 148 @UnsupportedAppUsage 149 protected Registrant mCatSessionEndRegistrant; 150 @UnsupportedAppUsage 151 protected Registrant mCatProCmdRegistrant; 152 @UnsupportedAppUsage 153 protected Registrant mCatEventRegistrant; 154 @UnsupportedAppUsage 155 protected Registrant mCatCallSetUpRegistrant; 156 @UnsupportedAppUsage 157 protected Registrant mIccSmsFullRegistrant; 158 @UnsupportedAppUsage 159 protected Registrant mEmergencyCallbackModeRegistrant; 160 @UnsupportedAppUsage 161 protected Registrant mRingRegistrant; 162 @UnsupportedAppUsage 163 protected Registrant mRestrictedStateRegistrant; 164 @UnsupportedAppUsage 165 protected Registrant mGsmBroadcastSmsRegistrant; 166 @UnsupportedAppUsage 167 protected Registrant mCatCcAlphaRegistrant; 168 @UnsupportedAppUsage 169 protected Registrant mSsRegistrant; 170 protected Registrant mRegistrationFailedRegistrant; 171 172 // Lock that mLastEmergencyNumberListIndication uses. 173 private Object mLastEmergencyNumberListIndicationLock = new Object(); 174 // Cache last emergency number list indication from radio 175 private final List<EmergencyNumber> mLastEmergencyNumberListIndication = new ArrayList<>(); 176 177 // The last barring information received 178 protected BarringInfo mLastBarringInfo = new BarringInfo(); 179 // Preferred network type received from PhoneFactory. 180 // This is used when establishing a connection to the 181 // vendor ril so it starts up in the correct mode. 182 @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) 183 protected int mAllowedNetworkTypesBitmask; 184 // CDMA subscription received from PhoneFactory 185 protected int mCdmaSubscription; 186 // Type of Phone, GSM or CDMA. Set by GsmCdmaPhone. 187 @UnsupportedAppUsage 188 protected int mPhoneType; 189 // RIL Version 190 protected int mRilVersion = -1; 191 BaseCommands(Context context)192 public BaseCommands(Context context) { 193 mContext = context; // May be null (if so we won't log statistics) 194 } 195 196 //***** CommandsInterface implementation 197 198 @Override getRadioState()199 public @RadioPowerState int getRadioState() { 200 return mState; 201 } 202 203 @Override registerForRadioStateChanged(Handler h, int what, Object obj)204 public void registerForRadioStateChanged(Handler h, int what, Object obj) { 205 synchronized (mStateMonitor) { 206 mRadioStateChangedRegistrants.addUnique(h, what, obj); 207 Message.obtain(h, what, new AsyncResult(obj, null, null)).sendToTarget(); 208 } 209 } 210 211 @Override unregisterForRadioStateChanged(Handler h)212 public void unregisterForRadioStateChanged(Handler h) { 213 synchronized (mStateMonitor) { 214 mRadioStateChangedRegistrants.remove(h); 215 } 216 } 217 registerForImsNetworkStateChanged(Handler h, int what, Object obj)218 public void registerForImsNetworkStateChanged(Handler h, int what, Object obj) { 219 mImsNetworkStateChangedRegistrants.addUnique(h, what, obj); 220 } 221 unregisterForImsNetworkStateChanged(Handler h)222 public void unregisterForImsNetworkStateChanged(Handler h) { 223 mImsNetworkStateChangedRegistrants.remove(h); 224 } 225 226 @Override registerForOn(Handler h, int what, Object obj)227 public void registerForOn(Handler h, int what, Object obj) { 228 synchronized (mStateMonitor) { 229 mOnRegistrants.addUnique(h, what, obj); 230 231 if (mState == TelephonyManager.RADIO_POWER_ON) { 232 Message.obtain(h, what, new AsyncResult(obj, null, null)).sendToTarget(); 233 } 234 } 235 } 236 @Override unregisterForOn(Handler h)237 public void unregisterForOn(Handler h) { 238 synchronized (mStateMonitor) { 239 mOnRegistrants.remove(h); 240 } 241 } 242 243 244 @Override registerForAvailable(Handler h, int what, Object obj)245 public void registerForAvailable(Handler h, int what, Object obj) { 246 synchronized (mStateMonitor) { 247 mAvailRegistrants.addUnique(h, what, obj); 248 249 if (mState != TelephonyManager.RADIO_POWER_UNAVAILABLE) { 250 Message.obtain(h, what, new AsyncResult(obj, null, null)).sendToTarget(); 251 } 252 } 253 } 254 255 @Override unregisterForAvailable(Handler h)256 public void unregisterForAvailable(Handler h) { 257 synchronized(mStateMonitor) { 258 mAvailRegistrants.remove(h); 259 } 260 } 261 262 @Override registerForNotAvailable(Handler h, int what, Object obj)263 public void registerForNotAvailable(Handler h, int what, Object obj) { 264 synchronized (mStateMonitor) { 265 mNotAvailRegistrants.addUnique(h, what, obj); 266 267 if (mState == TelephonyManager.RADIO_POWER_UNAVAILABLE) { 268 Message.obtain(h, what, new AsyncResult(obj, null, null)).sendToTarget(); 269 } 270 } 271 } 272 273 @Override unregisterForNotAvailable(Handler h)274 public void unregisterForNotAvailable(Handler h) { 275 synchronized (mStateMonitor) { 276 mNotAvailRegistrants.remove(h); 277 } 278 } 279 280 @Override registerForOffOrNotAvailable(Handler h, int what, Object obj)281 public void registerForOffOrNotAvailable(Handler h, int what, Object obj) { 282 synchronized (mStateMonitor) { 283 mOffOrNotAvailRegistrants.addUnique(h, what, obj); 284 285 if (mState == TelephonyManager.RADIO_POWER_OFF 286 || mState == TelephonyManager.RADIO_POWER_UNAVAILABLE) { 287 Message.obtain(h, what, new AsyncResult(obj, null, null)).sendToTarget(); 288 } 289 } 290 } 291 @Override unregisterForOffOrNotAvailable(Handler h)292 public void unregisterForOffOrNotAvailable(Handler h) { 293 synchronized(mStateMonitor) { 294 mOffOrNotAvailRegistrants.remove(h); 295 } 296 } 297 298 @Override registerForCallStateChanged(Handler h, int what, Object obj)299 public void registerForCallStateChanged(Handler h, int what, Object obj) { 300 mCallStateRegistrants.addUnique(h, what, obj); 301 } 302 303 @Override unregisterForCallStateChanged(Handler h)304 public void unregisterForCallStateChanged(Handler h) { 305 mCallStateRegistrants.remove(h); 306 } 307 308 @Override registerForNetworkStateChanged(Handler h, int what, Object obj)309 public void registerForNetworkStateChanged(Handler h, int what, Object obj) { 310 mNetworkStateRegistrants.addUnique(h, what, obj); 311 } 312 313 @Override unregisterForNetworkStateChanged(Handler h)314 public void unregisterForNetworkStateChanged(Handler h) { 315 mNetworkStateRegistrants.remove(h); 316 } 317 318 @Override registerForDataCallListChanged(Handler h, int what, Object obj)319 public void registerForDataCallListChanged(Handler h, int what, Object obj) { 320 mDataCallListChangedRegistrants.addUnique(h, what, obj); 321 } 322 323 @Override unregisterForDataCallListChanged(Handler h)324 public void unregisterForDataCallListChanged(Handler h) { 325 mDataCallListChangedRegistrants.remove(h); 326 } 327 328 @Override registerForApnUnthrottled(Handler h, int what, Object obj)329 public void registerForApnUnthrottled(Handler h, int what, Object obj) { 330 mApnUnthrottledRegistrants.addUnique(h, what, obj); 331 } 332 333 @Override unregisterForApnUnthrottled(Handler h)334 public void unregisterForApnUnthrottled(Handler h) { 335 mApnUnthrottledRegistrants.remove(h); 336 } 337 338 @Override registerForSlicingConfigChanged(Handler h, int what, Object obj)339 public void registerForSlicingConfigChanged(Handler h, int what, Object obj) { 340 mSlicingConfigChangedRegistrants.addUnique(h, what, obj); 341 } 342 343 @Override unregisterForSlicingConfigChanged(Handler h)344 public void unregisterForSlicingConfigChanged(Handler h) { 345 mSlicingConfigChangedRegistrants.remove(h); 346 } 347 348 @Override registerForVoiceRadioTechChanged(Handler h, int what, Object obj)349 public void registerForVoiceRadioTechChanged(Handler h, int what, Object obj) { 350 mVoiceRadioTechChangedRegistrants.addUnique(h, what, obj); 351 } 352 353 @Override unregisterForVoiceRadioTechChanged(Handler h)354 public void unregisterForVoiceRadioTechChanged(Handler h) { 355 mVoiceRadioTechChangedRegistrants.remove(h); 356 } 357 358 @Override registerForIccStatusChanged(Handler h, int what, Object obj)359 public void registerForIccStatusChanged(Handler h, int what, Object obj) { 360 mIccStatusChangedRegistrants.addUnique(h, what, obj); 361 } 362 363 @Override unregisterForIccStatusChanged(Handler h)364 public void unregisterForIccStatusChanged(Handler h) { 365 mIccStatusChangedRegistrants.remove(h); 366 } 367 368 @Override registerForIccSlotStatusChanged(Handler h, int what, Object obj)369 public void registerForIccSlotStatusChanged(Handler h, int what, Object obj) { 370 mIccSlotStatusChangedRegistrants.addUnique(h, what, obj); 371 } 372 373 @Override unregisterForIccSlotStatusChanged(Handler h)374 public void unregisterForIccSlotStatusChanged(Handler h) { 375 mIccSlotStatusChangedRegistrants.remove(h); 376 } 377 378 @Override setOnNewGsmSms(Handler h, int what, Object obj)379 public void setOnNewGsmSms(Handler h, int what, Object obj) { 380 mGsmSmsRegistrant = new Registrant (h, what, obj); 381 } 382 383 @Override unSetOnNewGsmSms(Handler h)384 public void unSetOnNewGsmSms(Handler h) { 385 if (mGsmSmsRegistrant != null && mGsmSmsRegistrant.getHandler() == h) { 386 mGsmSmsRegistrant.clear(); 387 mGsmSmsRegistrant = null; 388 } 389 } 390 391 @Override setOnNewCdmaSms(Handler h, int what, Object obj)392 public void setOnNewCdmaSms(Handler h, int what, Object obj) { 393 mCdmaSmsRegistrant = new Registrant (h, what, obj); 394 } 395 396 @Override unSetOnNewCdmaSms(Handler h)397 public void unSetOnNewCdmaSms(Handler h) { 398 if (mCdmaSmsRegistrant != null && mCdmaSmsRegistrant.getHandler() == h) { 399 mCdmaSmsRegistrant.clear(); 400 mCdmaSmsRegistrant = null; 401 } 402 } 403 404 @Override setOnNewGsmBroadcastSms(Handler h, int what, Object obj)405 public void setOnNewGsmBroadcastSms(Handler h, int what, Object obj) { 406 mGsmBroadcastSmsRegistrant = new Registrant (h, what, obj); 407 } 408 409 @Override unSetOnNewGsmBroadcastSms(Handler h)410 public void unSetOnNewGsmBroadcastSms(Handler h) { 411 if (mGsmBroadcastSmsRegistrant != null && mGsmBroadcastSmsRegistrant.getHandler() == h) { 412 mGsmBroadcastSmsRegistrant.clear(); 413 mGsmBroadcastSmsRegistrant = null; 414 } 415 } 416 417 @Override setOnSmsOnSim(Handler h, int what, Object obj)418 public void setOnSmsOnSim(Handler h, int what, Object obj) { 419 mSmsOnSimRegistrant = new Registrant (h, what, obj); 420 } 421 422 @Override unSetOnSmsOnSim(Handler h)423 public void unSetOnSmsOnSim(Handler h) { 424 if (mSmsOnSimRegistrant != null && mSmsOnSimRegistrant.getHandler() == h) { 425 mSmsOnSimRegistrant.clear(); 426 mSmsOnSimRegistrant = null; 427 } 428 } 429 430 @Override setOnSmsStatus(Handler h, int what, Object obj)431 public void setOnSmsStatus(Handler h, int what, Object obj) { 432 mSmsStatusRegistrant = new Registrant (h, what, obj); 433 } 434 435 @Override unSetOnSmsStatus(Handler h)436 public void unSetOnSmsStatus(Handler h) { 437 if (mSmsStatusRegistrant != null && mSmsStatusRegistrant.getHandler() == h) { 438 mSmsStatusRegistrant.clear(); 439 mSmsStatusRegistrant = null; 440 } 441 } 442 443 @Override setOnSignalStrengthUpdate(Handler h, int what, Object obj)444 public void setOnSignalStrengthUpdate(Handler h, int what, Object obj) { 445 mSignalStrengthRegistrant = new Registrant (h, what, obj); 446 } 447 448 @Override unSetOnSignalStrengthUpdate(Handler h)449 public void unSetOnSignalStrengthUpdate(Handler h) { 450 if (mSignalStrengthRegistrant != null && mSignalStrengthRegistrant.getHandler() == h) { 451 mSignalStrengthRegistrant.clear(); 452 mSignalStrengthRegistrant = null; 453 } 454 } 455 456 @Override setOnNITZTime(Handler h, int what, Object obj)457 public void setOnNITZTime(Handler h, int what, Object obj) { 458 mNITZTimeRegistrant = new Registrant (h, what, obj); 459 } 460 461 @Override unSetOnNITZTime(Handler h)462 public void unSetOnNITZTime(Handler h) { 463 if (mNITZTimeRegistrant != null && mNITZTimeRegistrant.getHandler() == h) { 464 mNITZTimeRegistrant.clear(); 465 mNITZTimeRegistrant = null; 466 } 467 } 468 469 @Override setOnUSSD(Handler h, int what, Object obj)470 public void setOnUSSD(Handler h, int what, Object obj) { 471 mUSSDRegistrant = new Registrant (h, what, obj); 472 } 473 474 @Override unSetOnUSSD(Handler h)475 public void unSetOnUSSD(Handler h) { 476 if (mUSSDRegistrant != null && mUSSDRegistrant.getHandler() == h) { 477 mUSSDRegistrant.clear(); 478 mUSSDRegistrant = null; 479 } 480 } 481 482 @Override setOnSuppServiceNotification(Handler h, int what, Object obj)483 public void setOnSuppServiceNotification(Handler h, int what, Object obj) { 484 mSsnRegistrant = new Registrant (h, what, obj); 485 } 486 487 @Override unSetOnSuppServiceNotification(Handler h)488 public void unSetOnSuppServiceNotification(Handler h) { 489 if (mSsnRegistrant != null && mSsnRegistrant.getHandler() == h) { 490 mSsnRegistrant.clear(); 491 mSsnRegistrant = null; 492 } 493 } 494 495 @Override setOnCatSessionEnd(Handler h, int what, Object obj)496 public void setOnCatSessionEnd(Handler h, int what, Object obj) { 497 mCatSessionEndRegistrant = new Registrant (h, what, obj); 498 } 499 500 @Override unSetOnCatSessionEnd(Handler h)501 public void unSetOnCatSessionEnd(Handler h) { 502 if (mCatSessionEndRegistrant != null && mCatSessionEndRegistrant.getHandler() == h) { 503 mCatSessionEndRegistrant.clear(); 504 mCatSessionEndRegistrant = null; 505 } 506 } 507 508 @Override setOnCatProactiveCmd(Handler h, int what, Object obj)509 public void setOnCatProactiveCmd(Handler h, int what, Object obj) { 510 mCatProCmdRegistrant = new Registrant (h, what, obj); 511 } 512 513 @Override unSetOnCatProactiveCmd(Handler h)514 public void unSetOnCatProactiveCmd(Handler h) { 515 if (mCatProCmdRegistrant != null && mCatProCmdRegistrant.getHandler() == h) { 516 mCatProCmdRegistrant.clear(); 517 mCatProCmdRegistrant = null; 518 } 519 } 520 521 @Override setOnCatEvent(Handler h, int what, Object obj)522 public void setOnCatEvent(Handler h, int what, Object obj) { 523 mCatEventRegistrant = new Registrant (h, what, obj); 524 } 525 526 @Override unSetOnCatEvent(Handler h)527 public void unSetOnCatEvent(Handler h) { 528 if (mCatEventRegistrant != null && mCatEventRegistrant.getHandler() == h) { 529 mCatEventRegistrant.clear(); 530 mCatEventRegistrant = null; 531 } 532 } 533 534 @Override setOnCatCallSetUp(Handler h, int what, Object obj)535 public void setOnCatCallSetUp(Handler h, int what, Object obj) { 536 mCatCallSetUpRegistrant = new Registrant (h, what, obj); 537 } 538 539 @Override unSetOnCatCallSetUp(Handler h)540 public void unSetOnCatCallSetUp(Handler h) { 541 if (mCatCallSetUpRegistrant != null && mCatCallSetUpRegistrant.getHandler() == h) { 542 mCatCallSetUpRegistrant.clear(); 543 mCatCallSetUpRegistrant = null; 544 } 545 } 546 547 @Override setOnIccSmsFull(Handler h, int what, Object obj)548 public void setOnIccSmsFull(Handler h, int what, Object obj) { 549 mIccSmsFullRegistrant = new Registrant (h, what, obj); 550 } 551 552 @Override unSetOnIccSmsFull(Handler h)553 public void unSetOnIccSmsFull(Handler h) { 554 if (mIccSmsFullRegistrant != null && mIccSmsFullRegistrant.getHandler() == h) { 555 mIccSmsFullRegistrant.clear(); 556 mIccSmsFullRegistrant = null; 557 } 558 } 559 560 @Override registerForIccRefresh(Handler h, int what, Object obj)561 public void registerForIccRefresh(Handler h, int what, Object obj) { 562 mIccRefreshRegistrants.addUnique(h, what, obj); 563 } 564 @Override setOnIccRefresh(Handler h, int what, Object obj)565 public void setOnIccRefresh(Handler h, int what, Object obj) { 566 registerForIccRefresh(h, what, obj); 567 } 568 569 @Override setEmergencyCallbackMode(Handler h, int what, Object obj)570 public void setEmergencyCallbackMode(Handler h, int what, Object obj) { 571 mEmergencyCallbackModeRegistrant = new Registrant (h, what, obj); 572 } 573 574 @Override unregisterForIccRefresh(Handler h)575 public void unregisterForIccRefresh(Handler h) { 576 mIccRefreshRegistrants.remove(h); 577 } 578 @Override unsetOnIccRefresh(Handler h)579 public void unsetOnIccRefresh(Handler h) { 580 unregisterForIccRefresh(h); 581 } 582 583 @Override setOnCallRing(Handler h, int what, Object obj)584 public void setOnCallRing(Handler h, int what, Object obj) { 585 mRingRegistrant = new Registrant (h, what, obj); 586 } 587 588 @Override unSetOnCallRing(Handler h)589 public void unSetOnCallRing(Handler h) { 590 if (mRingRegistrant != null && mRingRegistrant.getHandler() == h) { 591 mRingRegistrant.clear(); 592 mRingRegistrant = null; 593 } 594 } 595 596 @Override setOnSs(Handler h, int what, Object obj)597 public void setOnSs(Handler h, int what, Object obj) { 598 mSsRegistrant = new Registrant (h, what, obj); 599 } 600 601 @Override unSetOnSs(Handler h)602 public void unSetOnSs(Handler h) { 603 mSsRegistrant.clear(); 604 } 605 606 @Override setOnCatCcAlphaNotify(Handler h, int what, Object obj)607 public void setOnCatCcAlphaNotify(Handler h, int what, Object obj) { 608 mCatCcAlphaRegistrant = new Registrant (h, what, obj); 609 } 610 611 @Override unSetOnCatCcAlphaNotify(Handler h)612 public void unSetOnCatCcAlphaNotify(Handler h) { 613 mCatCcAlphaRegistrant.clear(); 614 } 615 616 @Override setOnRegistrationFailed(Handler h, int what, Object obj)617 public void setOnRegistrationFailed(Handler h, int what, Object obj) { 618 mRegistrationFailedRegistrant = new Registrant(h, what, obj); 619 } 620 621 @Override unSetOnRegistrationFailed(Handler h)622 public void unSetOnRegistrationFailed(Handler h) { 623 mRegistrationFailedRegistrant.clear(); 624 } 625 626 @Override registerForInCallVoicePrivacyOn(Handler h, int what, Object obj)627 public void registerForInCallVoicePrivacyOn(Handler h, int what, Object obj) { 628 mVoicePrivacyOnRegistrants.addUnique(h, what, obj); 629 } 630 631 @Override unregisterForInCallVoicePrivacyOn(Handler h)632 public void unregisterForInCallVoicePrivacyOn(Handler h){ 633 mVoicePrivacyOnRegistrants.remove(h); 634 } 635 636 @Override registerForInCallVoicePrivacyOff(Handler h, int what, Object obj)637 public void registerForInCallVoicePrivacyOff(Handler h, int what, Object obj) { 638 mVoicePrivacyOffRegistrants.addUnique(h, what, obj); 639 } 640 641 @Override unregisterForInCallVoicePrivacyOff(Handler h)642 public void unregisterForInCallVoicePrivacyOff(Handler h){ 643 mVoicePrivacyOffRegistrants.remove(h); 644 } 645 646 @Override setOnRestrictedStateChanged(Handler h, int what, Object obj)647 public void setOnRestrictedStateChanged(Handler h, int what, Object obj) { 648 mRestrictedStateRegistrant = new Registrant (h, what, obj); 649 } 650 651 @Override unSetOnRestrictedStateChanged(Handler h)652 public void unSetOnRestrictedStateChanged(Handler h) { 653 if (mRestrictedStateRegistrant != null && mRestrictedStateRegistrant.getHandler() == h) { 654 mRestrictedStateRegistrant.clear(); 655 mRestrictedStateRegistrant = null; 656 } 657 } 658 659 @Override registerForDisplayInfo(Handler h, int what, Object obj)660 public void registerForDisplayInfo(Handler h, int what, Object obj) { 661 mDisplayInfoRegistrants.addUnique(h, what, obj); 662 } 663 664 @Override unregisterForDisplayInfo(Handler h)665 public void unregisterForDisplayInfo(Handler h) { 666 mDisplayInfoRegistrants.remove(h); 667 } 668 669 @Override registerForCallWaitingInfo(Handler h, int what, Object obj)670 public void registerForCallWaitingInfo(Handler h, int what, Object obj) { 671 mCallWaitingInfoRegistrants.addUnique(h, what, obj); 672 } 673 674 @Override unregisterForCallWaitingInfo(Handler h)675 public void unregisterForCallWaitingInfo(Handler h) { 676 mCallWaitingInfoRegistrants.remove(h); 677 } 678 679 @Override registerForSignalInfo(Handler h, int what, Object obj)680 public void registerForSignalInfo(Handler h, int what, Object obj) { 681 mSignalInfoRegistrants.addUnique(h, what, obj); 682 } 683 setOnUnsolOemHookRaw(Handler h, int what, Object obj)684 public void setOnUnsolOemHookRaw(Handler h, int what, Object obj) { 685 mUnsolOemHookRawRegistrant = new Registrant (h, what, obj); 686 } 687 unSetOnUnsolOemHookRaw(Handler h)688 public void unSetOnUnsolOemHookRaw(Handler h) { 689 if (mUnsolOemHookRawRegistrant != null && mUnsolOemHookRawRegistrant.getHandler() == h) { 690 mUnsolOemHookRawRegistrant.clear(); 691 mUnsolOemHookRawRegistrant = null; 692 } 693 } 694 695 @Override unregisterForSignalInfo(Handler h)696 public void unregisterForSignalInfo(Handler h) { 697 mSignalInfoRegistrants.remove(h); 698 } 699 700 @Override registerForCdmaOtaProvision(Handler h,int what, Object obj)701 public void registerForCdmaOtaProvision(Handler h,int what, Object obj){ 702 mOtaProvisionRegistrants.addUnique(h, what, obj); 703 } 704 705 @Override unregisterForCdmaOtaProvision(Handler h)706 public void unregisterForCdmaOtaProvision(Handler h){ 707 mOtaProvisionRegistrants.remove(h); 708 } 709 710 @Override registerForNumberInfo(Handler h,int what, Object obj)711 public void registerForNumberInfo(Handler h,int what, Object obj) { 712 mNumberInfoRegistrants.addUnique(h, what, obj); 713 } 714 715 @Override unregisterForNumberInfo(Handler h)716 public void unregisterForNumberInfo(Handler h){ 717 mNumberInfoRegistrants.remove(h); 718 } 719 720 @Override registerForRedirectedNumberInfo(Handler h,int what, Object obj)721 public void registerForRedirectedNumberInfo(Handler h,int what, Object obj) { 722 mRedirNumInfoRegistrants.addUnique(h, what, obj); 723 } 724 725 @Override unregisterForRedirectedNumberInfo(Handler h)726 public void unregisterForRedirectedNumberInfo(Handler h) { 727 mRedirNumInfoRegistrants.remove(h); 728 } 729 730 @Override registerForLineControlInfo(Handler h, int what, Object obj)731 public void registerForLineControlInfo(Handler h, int what, Object obj) { 732 mLineControlInfoRegistrants.addUnique(h, what, obj); 733 } 734 735 @Override unregisterForLineControlInfo(Handler h)736 public void unregisterForLineControlInfo(Handler h) { 737 mLineControlInfoRegistrants.remove(h); 738 } 739 740 @Override registerFoT53ClirlInfo(Handler h,int what, Object obj)741 public void registerFoT53ClirlInfo(Handler h,int what, Object obj) { 742 mT53ClirInfoRegistrants.addUnique(h, what, obj); 743 } 744 745 @Override unregisterForT53ClirInfo(Handler h)746 public void unregisterForT53ClirInfo(Handler h) { 747 mT53ClirInfoRegistrants.remove(h); 748 } 749 750 @Override registerForT53AudioControlInfo(Handler h,int what, Object obj)751 public void registerForT53AudioControlInfo(Handler h,int what, Object obj) { 752 mT53AudCntrlInfoRegistrants.addUnique(h, what, obj); 753 } 754 755 @Override unregisterForT53AudioControlInfo(Handler h)756 public void unregisterForT53AudioControlInfo(Handler h) { 757 mT53AudCntrlInfoRegistrants.remove(h); 758 } 759 760 @Override registerForRingbackTone(Handler h, int what, Object obj)761 public void registerForRingbackTone(Handler h, int what, Object obj) { 762 mRingbackToneRegistrants.addUnique(h, what, obj); 763 } 764 765 @Override unregisterForRingbackTone(Handler h)766 public void unregisterForRingbackTone(Handler h) { 767 mRingbackToneRegistrants.remove(h); 768 } 769 770 @Override registerForResendIncallMute(Handler h, int what, Object obj)771 public void registerForResendIncallMute(Handler h, int what, Object obj) { 772 mResendIncallMuteRegistrants.addUnique(h, what, obj); 773 } 774 775 @Override unregisterForResendIncallMute(Handler h)776 public void unregisterForResendIncallMute(Handler h) { 777 mResendIncallMuteRegistrants.remove(h); 778 } 779 780 @Override registerForCdmaSubscriptionChanged(Handler h, int what, Object obj)781 public void registerForCdmaSubscriptionChanged(Handler h, int what, Object obj) { 782 mCdmaSubscriptionChangedRegistrants.addUnique(h, what, obj); 783 } 784 785 @Override unregisterForCdmaSubscriptionChanged(Handler h)786 public void unregisterForCdmaSubscriptionChanged(Handler h) { 787 mCdmaSubscriptionChangedRegistrants.remove(h); 788 } 789 790 @Override registerForCdmaPrlChanged(Handler h, int what, Object obj)791 public void registerForCdmaPrlChanged(Handler h, int what, Object obj) { 792 mCdmaPrlChangedRegistrants.addUnique(h, what, obj); 793 } 794 795 @Override unregisterForCdmaPrlChanged(Handler h)796 public void unregisterForCdmaPrlChanged(Handler h) { 797 mCdmaPrlChangedRegistrants.remove(h); 798 } 799 800 @Override registerForExitEmergencyCallbackMode(Handler h, int what, Object obj)801 public void registerForExitEmergencyCallbackMode(Handler h, int what, Object obj) { 802 mExitEmergencyCallbackModeRegistrants.addUnique(h, what, obj); 803 } 804 805 @Override unregisterForExitEmergencyCallbackMode(Handler h)806 public void unregisterForExitEmergencyCallbackMode(Handler h) { 807 mExitEmergencyCallbackModeRegistrants.remove(h); 808 } 809 810 @Override registerForHardwareConfigChanged(Handler h, int what, Object obj)811 public void registerForHardwareConfigChanged(Handler h, int what, Object obj) { 812 mHardwareConfigChangeRegistrants.addUnique(h, what, obj); 813 } 814 815 @Override unregisterForHardwareConfigChanged(Handler h)816 public void unregisterForHardwareConfigChanged(Handler h) { 817 mHardwareConfigChangeRegistrants.remove(h); 818 } 819 820 @Override registerForNetworkScanResult(Handler h, int what, Object obj)821 public void registerForNetworkScanResult(Handler h, int what, Object obj) { 822 mRilNetworkScanResultRegistrants.addUnique(h, what, obj); 823 } 824 825 @Override unregisterForNetworkScanResult(Handler h)826 public void unregisterForNetworkScanResult(Handler h) { 827 mRilNetworkScanResultRegistrants.remove(h); 828 } 829 830 /** 831 * {@inheritDoc} 832 */ 833 @Override registerForRilConnected(Handler h, int what, Object obj)834 public void registerForRilConnected(Handler h, int what, Object obj) { 835 mRilConnectedRegistrants.addUnique(h, what, obj); 836 if (mRilVersion != -1) { 837 Message.obtain(h, what, new AsyncResult(obj, new Integer(mRilVersion), null)) 838 .sendToTarget(); 839 } 840 } 841 842 @Override unregisterForRilConnected(Handler h)843 public void unregisterForRilConnected(Handler h) { 844 mRilConnectedRegistrants.remove(h); 845 } 846 registerForSubscriptionStatusChanged(Handler h, int what, Object obj)847 public void registerForSubscriptionStatusChanged(Handler h, int what, Object obj) { 848 mSubscriptionStatusRegistrants.addUnique(h, what, obj); 849 } 850 unregisterForSubscriptionStatusChanged(Handler h)851 public void unregisterForSubscriptionStatusChanged(Handler h) { 852 mSubscriptionStatusRegistrants.remove(h); 853 } 854 855 @Override registerForEmergencyNumberList(Handler h, int what, Object obj)856 public void registerForEmergencyNumberList(Handler h, int what, Object obj) { 857 mEmergencyNumberListRegistrants.addUnique(h, what, obj); 858 // Notify the last emergency number list from radio to new registrants because they may 859 // miss the latest indication (e.g. constructed in a delay after HAL is registrated). 860 List<EmergencyNumber> lastEmergencyNumberListIndication = 861 getLastEmergencyNumberListIndication(); 862 if (lastEmergencyNumberListIndication != null) { 863 mEmergencyNumberListRegistrants.notifyRegistrants(new AsyncResult( 864 null, lastEmergencyNumberListIndication, null)); 865 } 866 } 867 868 @Override unregisterForEmergencyNumberList(Handler h)869 public void unregisterForEmergencyNumberList(Handler h) { 870 mEmergencyNumberListRegistrants.remove(h); 871 } 872 873 //***** Protected Methods 874 /** 875 * Store new RadioState and send notification based on the changes 876 * 877 * This function is called only by RIL.java when receiving unsolicited 878 * RIL_UNSOL_RESPONSE_RADIO_STATE_CHANGED 879 * 880 * RadioState has 3 values : RADIO_OFF, RADIO_UNAVAILABLE, RADIO_ON. 881 * 882 * @param newState new RadioState decoded from RIL_UNSOL_RADIO_STATE_CHANGED 883 * @param forceNotifyRegistrants boolean indicating if registrants should be notified even if 884 * there is no change in state 885 */ setRadioState(int newState, boolean forceNotifyRegistrants)886 protected void setRadioState(int newState, boolean forceNotifyRegistrants) { 887 int oldState; 888 889 synchronized (mStateMonitor) { 890 oldState = mState; 891 mState = newState; 892 893 if (oldState == mState && !forceNotifyRegistrants) { 894 // no state transition 895 return; 896 } 897 898 mRadioStateChangedRegistrants.notifyRegistrants(); 899 900 if (mState != TelephonyManager.RADIO_POWER_UNAVAILABLE 901 && oldState == TelephonyManager.RADIO_POWER_UNAVAILABLE) { 902 mAvailRegistrants.notifyRegistrants(); 903 } 904 905 if (mState == TelephonyManager.RADIO_POWER_UNAVAILABLE 906 && oldState != TelephonyManager.RADIO_POWER_UNAVAILABLE) { 907 mNotAvailRegistrants.notifyRegistrants(); 908 } 909 910 if (mState == TelephonyManager.RADIO_POWER_ON 911 && oldState != TelephonyManager.RADIO_POWER_ON) { 912 mOnRegistrants.notifyRegistrants(); 913 } 914 915 if ((mState == TelephonyManager.RADIO_POWER_OFF 916 || mState == TelephonyManager.RADIO_POWER_UNAVAILABLE) 917 && (oldState == TelephonyManager.RADIO_POWER_ON)) { 918 mOffOrNotAvailRegistrants.notifyRegistrants(); 919 mLastBarringInfo = new BarringInfo(); 920 } 921 } 922 } 923 cacheEmergencyNumberListIndication( List<EmergencyNumber> emergencyNumberListIndication)924 protected void cacheEmergencyNumberListIndication( 925 List<EmergencyNumber> emergencyNumberListIndication) { 926 synchronized (mLastEmergencyNumberListIndicationLock) { 927 mLastEmergencyNumberListIndication.clear(); 928 mLastEmergencyNumberListIndication.addAll(emergencyNumberListIndication); 929 } 930 } 931 getLastEmergencyNumberListIndication()932 private List<EmergencyNumber> getLastEmergencyNumberListIndication() { 933 synchronized (mLastEmergencyNumberListIndicationLock) { 934 return new ArrayList<>(mLastEmergencyNumberListIndication); 935 } 936 } 937 938 /** {@inheritDoc} */ 939 @Override getLastBarringInfo()940 public @NonNull BarringInfo getLastBarringInfo() { 941 return mLastBarringInfo; 942 } 943 944 /** 945 * {@inheritDoc} 946 */ 947 @Override registerForCellInfoList(Handler h, int what, Object obj)948 public void registerForCellInfoList(Handler h, int what, Object obj) { 949 mRilCellInfoListRegistrants.addUnique(h, what, obj); 950 } 951 @Override unregisterForCellInfoList(Handler h)952 public void unregisterForCellInfoList(Handler h) { 953 mRilCellInfoListRegistrants.remove(h); 954 } 955 956 @Override registerForPhysicalChannelConfiguration(Handler h, int what, Object obj)957 public void registerForPhysicalChannelConfiguration(Handler h, int what, Object obj) { 958 mPhysicalChannelConfigurationRegistrants.addUnique(h, what, obj); 959 } 960 961 @Override unregisterForPhysicalChannelConfiguration(Handler h)962 public void unregisterForPhysicalChannelConfiguration(Handler h) { 963 mPhysicalChannelConfigurationRegistrants.remove(h); 964 } 965 966 @Override registerForSrvccStateChanged(Handler h, int what, Object obj)967 public void registerForSrvccStateChanged(Handler h, int what, Object obj) { 968 mSrvccStateRegistrants.addUnique(h, what, obj); 969 } 970 971 @Override unregisterForSrvccStateChanged(Handler h)972 public void unregisterForSrvccStateChanged(Handler h) { 973 mSrvccStateRegistrants.remove(h); 974 } 975 976 @Override testingEmergencyCall()977 public void testingEmergencyCall() {} 978 979 @Override getRilVersion()980 public int getRilVersion() { 981 return mRilVersion; 982 } 983 setUiccSubscription(int slotId, int appIndex, int subId, int subStatus, Message response)984 public void setUiccSubscription(int slotId, int appIndex, int subId, int subStatus, 985 Message response) { 986 } 987 setDataAllowed(boolean allowed, Message response)988 public void setDataAllowed(boolean allowed, Message response) { 989 } 990 991 @Override requestShutdown(Message result)992 public void requestShutdown(Message result) { 993 } 994 995 @Override getRadioCapability(Message result)996 public void getRadioCapability(Message result) { 997 } 998 999 @Override setRadioCapability(RadioCapability rc, Message response)1000 public void setRadioCapability(RadioCapability rc, Message response) { 1001 } 1002 1003 @Override registerForRadioCapabilityChanged(Handler h, int what, Object obj)1004 public void registerForRadioCapabilityChanged(Handler h, int what, Object obj) { 1005 mPhoneRadioCapabilityChangedRegistrants.addUnique(h, what, obj); 1006 } 1007 1008 @Override unregisterForRadioCapabilityChanged(Handler h)1009 public void unregisterForRadioCapabilityChanged(Handler h) { 1010 mPhoneRadioCapabilityChangedRegistrants.remove(h); 1011 } 1012 1013 @Override startLceService(int reportIntervalMs, boolean pullMode, Message result)1014 public void startLceService(int reportIntervalMs, boolean pullMode, Message result) { 1015 } 1016 1017 @Override stopLceService(Message result)1018 public void stopLceService(Message result) { 1019 } 1020 1021 @Override pullLceData(Message result)1022 public void pullLceData(Message result) { 1023 } 1024 1025 @Override registerForLceInfo(Handler h, int what, Object obj)1026 public void registerForLceInfo(Handler h, int what, Object obj) { 1027 synchronized (mStateMonitor) { 1028 mLceInfoRegistrants.addUnique(h, what, obj); 1029 } 1030 } 1031 1032 @Override unregisterForLceInfo(Handler h)1033 public void unregisterForLceInfo(Handler h) { 1034 synchronized (mStateMonitor) { 1035 mLceInfoRegistrants.remove(h); 1036 } 1037 } 1038 1039 @Override registerForModemReset(Handler h, int what, Object obj)1040 public void registerForModemReset(Handler h, int what, Object obj) { 1041 mModemResetRegistrants.addUnique(h, what, obj); 1042 } 1043 1044 @Override unregisterForModemReset(Handler h)1045 public void unregisterForModemReset(Handler h) { 1046 mModemResetRegistrants.remove(h); 1047 } 1048 1049 @Override registerForPcoData(Handler h, int what, Object obj)1050 public void registerForPcoData(Handler h, int what, Object obj) { 1051 mPcoDataRegistrants.addUnique(h, what, obj); 1052 } 1053 1054 @Override unregisterForPcoData(Handler h)1055 public void unregisterForPcoData(Handler h) { 1056 mPcoDataRegistrants.remove(h); 1057 } 1058 1059 @Override registerForCarrierInfoForImsiEncryption(Handler h, int what, Object obj)1060 public void registerForCarrierInfoForImsiEncryption(Handler h, int what, Object obj) { 1061 mCarrierInfoForImsiEncryptionRegistrants.addUnique(h, what, obj); 1062 } 1063 1064 @Override unregisterForCarrierInfoForImsiEncryption(Handler h)1065 public void unregisterForCarrierInfoForImsiEncryption(Handler h) { 1066 mCarrierInfoForImsiEncryptionRegistrants.remove(h); 1067 } 1068 1069 @Override registerForNattKeepaliveStatus(Handler h, int what, Object obj)1070 public void registerForNattKeepaliveStatus(Handler h, int what, Object obj) { 1071 synchronized (mStateMonitor) { 1072 mNattKeepaliveStatusRegistrants.addUnique(h, what, obj); 1073 } 1074 } 1075 1076 @Override unregisterForNattKeepaliveStatus(Handler h)1077 public void unregisterForNattKeepaliveStatus(Handler h) { 1078 synchronized (mStateMonitor) { 1079 mNattKeepaliveStatusRegistrants.remove(h); 1080 } 1081 } 1082 1083 /** 1084 * Registers the handler for RIL_UNSOL_UICC_APPLICATIONS_ENABLEMENT_CHANGED events. 1085 * 1086 * @param h Handler for notification message. 1087 * @param what User-defined message code. 1088 * @param obj User object. 1089 */ 1090 @Override registerUiccApplicationEnablementChanged(Handler h, int what, Object obj)1091 public void registerUiccApplicationEnablementChanged(Handler h, int what, Object obj) { 1092 mUiccApplicationsEnablementRegistrants.addUnique(h, what, obj); 1093 } 1094 1095 /** 1096 * Unregisters the handler for RIL_UNSOL_UICC_APPLICATIONS_ENABLEMENT_CHANGED events. 1097 * 1098 * @param h Handler for notification message. 1099 */ 1100 @Override unregisterUiccApplicationEnablementChanged(Handler h)1101 public void unregisterUiccApplicationEnablementChanged(Handler h) { 1102 mUiccApplicationsEnablementRegistrants.remove(h); 1103 } 1104 1105 /** 1106 * Registers the handler for RIL_UNSOL_BARRING_INFO_CHANGED events. 1107 * 1108 * @param h Handler for notification message. 1109 * @param what User-defined message code. 1110 * @param obj User object. 1111 */ 1112 @Override registerForBarringInfoChanged(Handler h, int what, Object obj)1113 public void registerForBarringInfoChanged(Handler h, int what, Object obj) { 1114 mBarringInfoChangedRegistrants.addUnique(h, what, obj); 1115 } 1116 1117 /** 1118 * Unregisters the handler for RIL_UNSOL_BARRING_INFO_CHANGED events. 1119 * 1120 * @param h Handler for notification message. 1121 */ 1122 @Override unregisterForBarringInfoChanged(Handler h)1123 public void unregisterForBarringInfoChanged(Handler h) { 1124 mBarringInfoChangedRegistrants.remove(h); 1125 } 1126 1127 @Override registerForSimPhonebookChanged(Handler h, int what, Object obj)1128 public void registerForSimPhonebookChanged(Handler h, int what, Object obj) { 1129 mSimPhonebookChangedRegistrants.addUnique(h, what, obj); 1130 } 1131 1132 @Override unregisterForSimPhonebookChanged(Handler h)1133 public void unregisterForSimPhonebookChanged(Handler h) { 1134 mSimPhonebookChangedRegistrants.remove(h); 1135 } 1136 1137 @Override registerForSimPhonebookRecordsReceived(Handler h, int what, Object obj)1138 public void registerForSimPhonebookRecordsReceived(Handler h, int what, Object obj) { 1139 mSimPhonebookRecordsReceivedRegistrants.addUnique(h, what, obj); 1140 } 1141 1142 @Override unregisterForSimPhonebookRecordsReceived(Handler h)1143 public void unregisterForSimPhonebookRecordsReceived(Handler h) { 1144 mSimPhonebookRecordsReceivedRegistrants.remove(h); 1145 } 1146 1147 @Override getSimPhonebookRecords(Message result)1148 public void getSimPhonebookRecords(Message result) { 1149 } 1150 1151 @Override getSimPhonebookCapacity(Message result)1152 public void getSimPhonebookCapacity(Message result) { 1153 } 1154 1155 @Override updateSimPhonebookRecord(SimPhonebookRecord phonebookRecord, Message result)1156 public void updateSimPhonebookRecord(SimPhonebookRecord phonebookRecord, Message result) { 1157 } 1158 1159 /** 1160 * Register for Emergency network scan result. 1161 * 1162 * @param h Handler for notification message. 1163 * @param what User-defined message code. 1164 * @param obj User object. 1165 */ 1166 @Override registerForEmergencyNetworkScan(Handler h, int what, Object obj)1167 public void registerForEmergencyNetworkScan(Handler h, int what, Object obj) { 1168 mEmergencyNetworkScanRegistrants.add(h, what, obj); 1169 } 1170 1171 /** 1172 * Unregister for Emergency network scan result. 1173 * 1174 * @param h Handler to be removed from the registrant list. 1175 */ 1176 @Override unregisterForEmergencyNetworkScan(Handler h)1177 public void unregisterForEmergencyNetworkScan(Handler h) { 1178 mEmergencyNetworkScanRegistrants.remove(h); 1179 } 1180 1181 @Override registerForConnectionSetupFailure(Handler h, int what, Object obj)1182 public void registerForConnectionSetupFailure(Handler h, int what, Object obj) { 1183 mConnectionSetupFailureRegistrants.addUnique(h, what, obj); 1184 } 1185 1186 @Override unregisterForConnectionSetupFailure(Handler h)1187 public void unregisterForConnectionSetupFailure(Handler h) { 1188 mConnectionSetupFailureRegistrants.remove(h); 1189 } 1190 1191 @Override registerForNotifyAnbr(Handler h, int what, Object obj)1192 public void registerForNotifyAnbr(Handler h, int what, Object obj) { 1193 mNotifyAnbrRegistrants.addUnique(h, what, obj); 1194 } 1195 1196 @Override unregisterForNotifyAnbr(Handler h)1197 public void unregisterForNotifyAnbr(Handler h) { 1198 mNotifyAnbrRegistrants.remove(h); 1199 } 1200 1201 @Override registerForTriggerImsDeregistration(Handler h, int what, Object obj)1202 public void registerForTriggerImsDeregistration(Handler h, int what, Object obj) { 1203 mTriggerImsDeregistrationRegistrants.add(h, what, obj); 1204 } 1205 1206 @Override unregisterForTriggerImsDeregistration(Handler h)1207 public void unregisterForTriggerImsDeregistration(Handler h) { 1208 mTriggerImsDeregistrationRegistrants.remove(h); 1209 } 1210 1211 @Override registerForPendingSatelliteMessageCount( @onNull Handler h, int what, @Nullable Object obj)1212 public void registerForPendingSatelliteMessageCount( 1213 @NonNull Handler h, int what, @Nullable Object obj) { 1214 mPendingSatelliteMessageCountRegistrants.add(h, what, obj); 1215 } 1216 1217 @Override unregisterForPendingSatelliteMessageCount(@onNull Handler h)1218 public void unregisterForPendingSatelliteMessageCount(@NonNull Handler h) { 1219 mPendingSatelliteMessageCountRegistrants.remove(h); 1220 } 1221 1222 @Override registerForNewSatelliteMessages( @onNull Handler h, int what, @Nullable Object obj)1223 public void registerForNewSatelliteMessages( 1224 @NonNull Handler h, int what, @Nullable Object obj) { 1225 mNewSatelliteMessagesRegistrants.add(h, what, obj); 1226 } 1227 1228 @Override unregisterForNewSatelliteMessages(@onNull Handler h)1229 public void unregisterForNewSatelliteMessages(@NonNull Handler h) { 1230 mNewSatelliteMessagesRegistrants.remove(h); 1231 } 1232 1233 @Override registerForSatelliteMessagesTransferComplete(@onNull Handler h, int what, @Nullable Object obj)1234 public void registerForSatelliteMessagesTransferComplete(@NonNull Handler h, 1235 int what, @Nullable Object obj) { 1236 mSatelliteMessagesTransferCompleteRegistrants.add(h, what, obj); 1237 } 1238 1239 @Override unregisterForSatelliteMessagesTransferComplete(@onNull Handler h)1240 public void unregisterForSatelliteMessagesTransferComplete(@NonNull Handler h) { 1241 mSatelliteMessagesTransferCompleteRegistrants.remove(h); 1242 } 1243 1244 @Override registerForSatellitePointingInfoChanged(@onNull Handler h, int what, @Nullable Object obj)1245 public void registerForSatellitePointingInfoChanged(@NonNull Handler h, 1246 int what, @Nullable Object obj) { 1247 mSatellitePointingInfoChangedRegistrants.add(h, what, obj); 1248 } 1249 1250 @Override unregisterForSatellitePointingInfoChanged(@onNull Handler h)1251 public void unregisterForSatellitePointingInfoChanged(@NonNull Handler h) { 1252 mSatellitePointingInfoChangedRegistrants.remove(h); 1253 } 1254 1255 @Override registerForSatelliteModeChanged(@onNull Handler h, int what, @Nullable Object obj)1256 public void registerForSatelliteModeChanged(@NonNull Handler h, 1257 int what, @Nullable Object obj) { 1258 mSatelliteModeChangedRegistrants.add(h, what, obj); 1259 } 1260 1261 @Override unregisterForSatelliteModeChanged(@onNull Handler h)1262 public void unregisterForSatelliteModeChanged(@NonNull Handler h) { 1263 mSatelliteModeChangedRegistrants.remove(h); 1264 } 1265 1266 @Override registerForSatelliteRadioTechnologyChanged(@onNull Handler h, int what, @Nullable Object obj)1267 public void registerForSatelliteRadioTechnologyChanged(@NonNull Handler h, 1268 int what, @Nullable Object obj) { 1269 mSatelliteRadioTechnologyChangedRegistrants.add(h, what, obj); 1270 } 1271 1272 @Override unregisterForSatelliteRadioTechnologyChanged(@onNull Handler h)1273 public void unregisterForSatelliteRadioTechnologyChanged(@NonNull Handler h) { 1274 mSatelliteRadioTechnologyChangedRegistrants.remove(h); 1275 } 1276 1277 @Override registerForSatelliteProvisionStateChanged(@onNull Handler h, int what, @Nullable Object obj)1278 public void registerForSatelliteProvisionStateChanged(@NonNull Handler h, 1279 int what, @Nullable Object obj) { 1280 mSatelliteProvisionStateChangedRegistrants.add(h, what, obj); 1281 } 1282 1283 @Override unregisterForSatelliteProvisionStateChanged(@onNull Handler h)1284 public void unregisterForSatelliteProvisionStateChanged(@NonNull Handler h) { 1285 mSatelliteProvisionStateChangedRegistrants.remove(h); 1286 } 1287 } 1288