16bc4098827f3070a44b5e51508b455d7c7be9c07Wink Saville
20825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/*
30825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Copyright (C) 2006 The Android Open Source Project
40825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville *
50825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Licensed under the Apache License, Version 2.0 (the "License");
60825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * you may not use this file except in compliance with the License.
70825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * You may obtain a copy of the License at
80825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville *
90825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville *      http://www.apache.org/licenses/LICENSE-2.0
100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville *
110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Unless required by applicable law or agreed to in writing, software
120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * distributed under the License is distributed on an "AS IS" BASIS,
130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * See the License for the specific language governing permissions and
150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * limitations under the License.
160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */
170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
180825495a331bb44df395a0cdb79fab85e68db5d5Wink Savillepackage com.android.internal.telephony;
190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
200825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.content.Context;
21a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport android.os.Message;
220825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.RegistrantList;
230825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.Registrant;
240825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.Handler;
250825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.AsyncResult;
267e7d2b34010bf24a70bbf40303c7a4606c438adaStuart Scottimport android.telephony.RadioAccessFamily;
270825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.telephony.TelephonyManager;
280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
297e7d2b34010bf24a70bbf40303c7a4606c438adaStuart Scottimport com.android.internal.telephony.RadioCapability;
307e7d2b34010bf24a70bbf40303c7a4606c438adaStuart Scott
310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/**
320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@hide}
330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */
340825495a331bb44df395a0cdb79fab85e68db5d5Wink Savillepublic abstract class BaseCommands implements CommandsInterface {
350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    //***** Instance Variables
360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected Context mContext;
370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RadioState mState = RadioState.RADIO_UNAVAILABLE;
380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected Object mStateMonitor = new Object();
390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mRadioStateChangedRegistrants = new RegistrantList();
410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mOnRegistrants = new RegistrantList();
420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mAvailRegistrants = new RegistrantList();
430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mOffOrNotAvailRegistrants = new RegistrantList();
440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mNotAvailRegistrants = new RegistrantList();
450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mCallStateRegistrants = new RegistrantList();
460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mVoiceNetworkStateRegistrants = new RegistrantList();
470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mDataNetworkStateRegistrants = new RegistrantList();
480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mVoiceRadioTechChangedRegistrants = new RegistrantList();
491260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa    protected RegistrantList mImsNetworkStateChangedRegistrants = new RegistrantList();
500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mIccStatusChangedRegistrants = new RegistrantList();
510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mVoicePrivacyOnRegistrants = new RegistrantList();
520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mVoicePrivacyOffRegistrants = new RegistrantList();
530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected Registrant mUnsolOemHookRawRegistrant;
540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mOtaProvisionRegistrants = new RegistrantList();
550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mCallWaitingInfoRegistrants = new RegistrantList();
560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mDisplayInfoRegistrants = new RegistrantList();
570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mSignalInfoRegistrants = new RegistrantList();
580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mNumberInfoRegistrants = new RegistrantList();
590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mRedirNumInfoRegistrants = new RegistrantList();
600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mLineControlInfoRegistrants = new RegistrantList();
610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mT53ClirInfoRegistrants = new RegistrantList();
620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mT53AudCntrlInfoRegistrants = new RegistrantList();
630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mRingbackToneRegistrants = new RegistrantList();
640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mResendIncallMuteRegistrants = new RegistrantList();
650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mCdmaSubscriptionChangedRegistrants = new RegistrantList();
660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mCdmaPrlChangedRegistrants = new RegistrantList();
670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mExitEmergencyCallbackModeRegistrants = new RegistrantList();
680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mRilConnectedRegistrants = new RegistrantList();
690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mIccRefreshRegistrants = new RegistrantList();
705fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville    protected RegistrantList mRilCellInfoListRegistrants = new RegistrantList();
71a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    protected RegistrantList mSubscriptionStatusRegistrants = new RegistrantList();
72a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    protected RegistrantList mSrvccStateRegistrants = new RegistrantList();
73a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    protected RegistrantList mHardwareConfigChangeRegistrants = new RegistrantList();
742b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville    protected RegistrantList mPhoneRadioCapabilityChangedRegistrants =
752b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville            new RegistrantList();
764b4d80db8a8d447d3c1110831c2a821a2bd2a186Robert Greenwalt    protected RegistrantList mPcoDataRegistrants = new RegistrantList();
774b4d80db8a8d447d3c1110831c2a821a2bd2a186Robert Greenwalt
780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected Registrant mGsmSmsRegistrant;
800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected Registrant mCdmaSmsRegistrant;
810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected Registrant mNITZTimeRegistrant;
820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected Registrant mSignalStrengthRegistrant;
830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected Registrant mUSSDRegistrant;
840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected Registrant mSmsOnSimRegistrant;
850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected Registrant mSmsStatusRegistrant;
860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected Registrant mSsnRegistrant;
870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected Registrant mCatSessionEndRegistrant;
880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected Registrant mCatProCmdRegistrant;
890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected Registrant mCatEventRegistrant;
900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected Registrant mCatCallSetUpRegistrant;
910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected Registrant mIccSmsFullRegistrant;
920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected Registrant mEmergencyCallbackModeRegistrant;
930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected Registrant mRingRegistrant;
940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected Registrant mRestrictedStateRegistrant;
950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected Registrant mGsmBroadcastSmsRegistrant;
9609b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja    protected Registrant mCatCcAlphaRegistrant;
9709b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja    protected Registrant mSsRegistrant;
9865bee39d7e417fb898c3948696d5d8a38046c449fenglu    protected Registrant mLceInfoRegistrant;
990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    // Preferred network type received from PhoneFactory.
1010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    // This is used when establishing a connection to the
1020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    // vendor ril so it starts up in the correct mode.
1030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected int mPreferredNetworkType;
1040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    // CDMA subscription received from PhoneFactory
1050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected int mCdmaSubscription;
10658dd6858dc8013b680ea003d22063fd65ed5fe1cAmit Mahajan    // Type of Phone, GSM or CDMA. Set by GsmCdmaPhone.
1070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected int mPhoneType;
1080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    // RIL Version
1090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected int mRilVersion = -1;
1100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public BaseCommands(Context context) {
1120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mContext = context;  // May be null (if so we won't log statistics)
1130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    //***** CommandsInterface implementation
1160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
117cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
1180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public RadioState getRadioState() {
1190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mState;
1200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
122cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
1230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForRadioStateChanged(Handler h, int what, Object obj) {
1240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
1250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        synchronized (mStateMonitor) {
1270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mRadioStateChangedRegistrants.add(r);
1280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            r.notifyRegistrant();
1290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
132cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
1330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForRadioStateChanged(Handler h) {
1340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        synchronized (mStateMonitor) {
1350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mRadioStateChangedRegistrants.remove(h);
1360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1391260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa    public void registerForImsNetworkStateChanged(Handler h, int what, Object obj) {
1401260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa        Registrant r = new Registrant (h, what, obj);
1411260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa        mImsNetworkStateChangedRegistrants.add(r);
1421260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa    }
1431260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa
1441260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa    public void unregisterForImsNetworkStateChanged(Handler h) {
1451260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa        mImsNetworkStateChangedRegistrants.remove(h);
1461260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa    }
1471260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa
148cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
1490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForOn(Handler h, int what, Object obj) {
1500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
1510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        synchronized (mStateMonitor) {
1530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mOnRegistrants.add(r);
1540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            if (mState.isOn()) {
1560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                r.notifyRegistrant(new AsyncResult(null, null, null));
1570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            }
1580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
160cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
1610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForOn(Handler h) {
1620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        synchronized (mStateMonitor) {
1630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mOnRegistrants.remove(h);
1640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
168cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
1690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForAvailable(Handler h, int what, Object obj) {
1700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
1710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        synchronized (mStateMonitor) {
1730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mAvailRegistrants.add(r);
1740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            if (mState.isAvailable()) {
1760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                r.notifyRegistrant(new AsyncResult(null, null, null));
1770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            }
1780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
181cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
1820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForAvailable(Handler h) {
1830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        synchronized(mStateMonitor) {
1840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mAvailRegistrants.remove(h);
1850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
188cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
1890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForNotAvailable(Handler h, int what, Object obj) {
1900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
1910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        synchronized (mStateMonitor) {
1930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mNotAvailRegistrants.add(r);
1940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            if (!mState.isAvailable()) {
1960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                r.notifyRegistrant(new AsyncResult(null, null, null));
1970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            }
1980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
201cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
2020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForNotAvailable(Handler h) {
2030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        synchronized (mStateMonitor) {
2040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mNotAvailRegistrants.remove(h);
2050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
2060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
208cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
2090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForOffOrNotAvailable(Handler h, int what, Object obj) {
2100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
2110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        synchronized (mStateMonitor) {
2130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mOffOrNotAvailRegistrants.add(r);
2140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            if (mState == RadioState.RADIO_OFF || !mState.isAvailable()) {
2160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                r.notifyRegistrant(new AsyncResult(null, null, null));
2170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            }
2180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
2190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
220cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
2210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForOffOrNotAvailable(Handler h) {
2220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        synchronized(mStateMonitor) {
2230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mOffOrNotAvailRegistrants.remove(h);
2240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
2250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
227cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
2280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForCallStateChanged(Handler h, int what, Object obj) {
2290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
2300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mCallStateRegistrants.add(r);
2320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
234cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
2350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForCallStateChanged(Handler h) {
2360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mCallStateRegistrants.remove(h);
2370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
239cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
2400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForVoiceNetworkStateChanged(Handler h, int what, Object obj) {
2410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
2420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mVoiceNetworkStateRegistrants.add(r);
2440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
246cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
2470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForVoiceNetworkStateChanged(Handler h) {
2480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mVoiceNetworkStateRegistrants.remove(h);
2490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
251cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
2520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForDataNetworkStateChanged(Handler h, int what, Object obj) {
2530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
2540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mDataNetworkStateRegistrants.add(r);
2560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
258cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
2590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForDataNetworkStateChanged(Handler h) {
2600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mDataNetworkStateRegistrants.remove(h);
2610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
263cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
2640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForVoiceRadioTechChanged(Handler h, int what, Object obj) {
2650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
2660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mVoiceRadioTechChangedRegistrants.add(r);
2670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
269cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
2700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForVoiceRadioTechChanged(Handler h) {
2710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mVoiceRadioTechChangedRegistrants.remove(h);
2720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
274cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
2750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForIccStatusChanged(Handler h, int what, Object obj) {
2760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
2770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mIccStatusChangedRegistrants.add(r);
2780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
280cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
2810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForIccStatusChanged(Handler h) {
2820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mIccStatusChangedRegistrants.remove(h);
2830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
285cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
2860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setOnNewGsmSms(Handler h, int what, Object obj) {
2870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mGsmSmsRegistrant = new Registrant (h, what, obj);
2880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
290cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
2910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unSetOnNewGsmSms(Handler h) {
2928756c83413829be5b6530d122772959ad8414698Etan Cohen        if (mGsmSmsRegistrant != null && mGsmSmsRegistrant.getHandler() == h) {
2938756c83413829be5b6530d122772959ad8414698Etan Cohen            mGsmSmsRegistrant.clear();
2948756c83413829be5b6530d122772959ad8414698Etan Cohen            mGsmSmsRegistrant = null;
2958756c83413829be5b6530d122772959ad8414698Etan Cohen        }
2960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
298cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
2990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setOnNewCdmaSms(Handler h, int what, Object obj) {
3000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mCdmaSmsRegistrant = new Registrant (h, what, obj);
3010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
303cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
3040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unSetOnNewCdmaSms(Handler h) {
3058756c83413829be5b6530d122772959ad8414698Etan Cohen        if (mCdmaSmsRegistrant != null && mCdmaSmsRegistrant.getHandler() == h) {
3068756c83413829be5b6530d122772959ad8414698Etan Cohen            mCdmaSmsRegistrant.clear();
3078756c83413829be5b6530d122772959ad8414698Etan Cohen            mCdmaSmsRegistrant = null;
3088756c83413829be5b6530d122772959ad8414698Etan Cohen        }
3090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
311cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
3120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setOnNewGsmBroadcastSms(Handler h, int what, Object obj) {
3130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mGsmBroadcastSmsRegistrant = new Registrant (h, what, obj);
3140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
316cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
3170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unSetOnNewGsmBroadcastSms(Handler h) {
3188756c83413829be5b6530d122772959ad8414698Etan Cohen        if (mGsmBroadcastSmsRegistrant != null && mGsmBroadcastSmsRegistrant.getHandler() == h) {
3198756c83413829be5b6530d122772959ad8414698Etan Cohen            mGsmBroadcastSmsRegistrant.clear();
3208756c83413829be5b6530d122772959ad8414698Etan Cohen            mGsmBroadcastSmsRegistrant = null;
3218756c83413829be5b6530d122772959ad8414698Etan Cohen        }
3220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
324cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
3250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setOnSmsOnSim(Handler h, int what, Object obj) {
3260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mSmsOnSimRegistrant = new Registrant (h, what, obj);
3270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
329cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
3300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unSetOnSmsOnSim(Handler h) {
3318756c83413829be5b6530d122772959ad8414698Etan Cohen        if (mSmsOnSimRegistrant != null && mSmsOnSimRegistrant.getHandler() == h) {
3328756c83413829be5b6530d122772959ad8414698Etan Cohen            mSmsOnSimRegistrant.clear();
3338756c83413829be5b6530d122772959ad8414698Etan Cohen            mSmsOnSimRegistrant = null;
3348756c83413829be5b6530d122772959ad8414698Etan Cohen        }
3350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
337cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
3380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setOnSmsStatus(Handler h, int what, Object obj) {
3390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mSmsStatusRegistrant = new Registrant (h, what, obj);
3400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
342cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
3430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unSetOnSmsStatus(Handler h) {
3448756c83413829be5b6530d122772959ad8414698Etan Cohen        if (mSmsStatusRegistrant != null && mSmsStatusRegistrant.getHandler() == h) {
3458756c83413829be5b6530d122772959ad8414698Etan Cohen            mSmsStatusRegistrant.clear();
3468756c83413829be5b6530d122772959ad8414698Etan Cohen            mSmsStatusRegistrant = null;
3478756c83413829be5b6530d122772959ad8414698Etan Cohen        }
3480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
350cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
3510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setOnSignalStrengthUpdate(Handler h, int what, Object obj) {
3520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mSignalStrengthRegistrant = new Registrant (h, what, obj);
3530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
355cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
3560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unSetOnSignalStrengthUpdate(Handler h) {
3578756c83413829be5b6530d122772959ad8414698Etan Cohen        if (mSignalStrengthRegistrant != null && mSignalStrengthRegistrant.getHandler() == h) {
3588756c83413829be5b6530d122772959ad8414698Etan Cohen            mSignalStrengthRegistrant.clear();
3598756c83413829be5b6530d122772959ad8414698Etan Cohen            mSignalStrengthRegistrant = null;
3608756c83413829be5b6530d122772959ad8414698Etan Cohen        }
3610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
363cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
3640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setOnNITZTime(Handler h, int what, Object obj) {
3650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mNITZTimeRegistrant = new Registrant (h, what, obj);
3660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
368cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
3690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unSetOnNITZTime(Handler h) {
3708756c83413829be5b6530d122772959ad8414698Etan Cohen        if (mNITZTimeRegistrant != null && mNITZTimeRegistrant.getHandler() == h) {
3718756c83413829be5b6530d122772959ad8414698Etan Cohen            mNITZTimeRegistrant.clear();
3728756c83413829be5b6530d122772959ad8414698Etan Cohen            mNITZTimeRegistrant = null;
3738756c83413829be5b6530d122772959ad8414698Etan Cohen        }
3740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
376cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
3770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setOnUSSD(Handler h, int what, Object obj) {
3780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mUSSDRegistrant = new Registrant (h, what, obj);
3790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
381cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
3820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unSetOnUSSD(Handler h) {
3838756c83413829be5b6530d122772959ad8414698Etan Cohen        if (mUSSDRegistrant != null && mUSSDRegistrant.getHandler() == h) {
3848756c83413829be5b6530d122772959ad8414698Etan Cohen            mUSSDRegistrant.clear();
3858756c83413829be5b6530d122772959ad8414698Etan Cohen            mUSSDRegistrant = null;
3868756c83413829be5b6530d122772959ad8414698Etan Cohen        }
3870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
389cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
3900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setOnSuppServiceNotification(Handler h, int what, Object obj) {
3910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mSsnRegistrant = new Registrant (h, what, obj);
3920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
394cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
3950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unSetOnSuppServiceNotification(Handler h) {
3968756c83413829be5b6530d122772959ad8414698Etan Cohen        if (mSsnRegistrant != null && mSsnRegistrant.getHandler() == h) {
3978756c83413829be5b6530d122772959ad8414698Etan Cohen            mSsnRegistrant.clear();
3988756c83413829be5b6530d122772959ad8414698Etan Cohen            mSsnRegistrant = null;
3998756c83413829be5b6530d122772959ad8414698Etan Cohen        }
4000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
402cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
4030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setOnCatSessionEnd(Handler h, int what, Object obj) {
4040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mCatSessionEndRegistrant = new Registrant (h, what, obj);
4050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
407cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
4080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unSetOnCatSessionEnd(Handler h) {
4098756c83413829be5b6530d122772959ad8414698Etan Cohen        if (mCatSessionEndRegistrant != null && mCatSessionEndRegistrant.getHandler() == h) {
4108756c83413829be5b6530d122772959ad8414698Etan Cohen            mCatSessionEndRegistrant.clear();
4118756c83413829be5b6530d122772959ad8414698Etan Cohen            mCatSessionEndRegistrant = null;
4128756c83413829be5b6530d122772959ad8414698Etan Cohen        }
4130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
415cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
4160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setOnCatProactiveCmd(Handler h, int what, Object obj) {
4170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mCatProCmdRegistrant = new Registrant (h, what, obj);
4180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
420cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
4210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unSetOnCatProactiveCmd(Handler h) {
4228756c83413829be5b6530d122772959ad8414698Etan Cohen        if (mCatProCmdRegistrant != null && mCatProCmdRegistrant.getHandler() == h) {
4238756c83413829be5b6530d122772959ad8414698Etan Cohen            mCatProCmdRegistrant.clear();
4248756c83413829be5b6530d122772959ad8414698Etan Cohen            mCatProCmdRegistrant = null;
4258756c83413829be5b6530d122772959ad8414698Etan Cohen        }
4260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
428cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
4290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setOnCatEvent(Handler h, int what, Object obj) {
4300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mCatEventRegistrant = new Registrant (h, what, obj);
4310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
433cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
4340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unSetOnCatEvent(Handler h) {
4358756c83413829be5b6530d122772959ad8414698Etan Cohen        if (mCatEventRegistrant != null && mCatEventRegistrant.getHandler() == h) {
4368756c83413829be5b6530d122772959ad8414698Etan Cohen            mCatEventRegistrant.clear();
4378756c83413829be5b6530d122772959ad8414698Etan Cohen            mCatEventRegistrant = null;
4388756c83413829be5b6530d122772959ad8414698Etan Cohen        }
4390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
441cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
4420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setOnCatCallSetUp(Handler h, int what, Object obj) {
4430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mCatCallSetUpRegistrant = new Registrant (h, what, obj);
4440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
446cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
4470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unSetOnCatCallSetUp(Handler h) {
4488756c83413829be5b6530d122772959ad8414698Etan Cohen        if (mCatCallSetUpRegistrant != null && mCatCallSetUpRegistrant.getHandler() == h) {
4498756c83413829be5b6530d122772959ad8414698Etan Cohen            mCatCallSetUpRegistrant.clear();
4508756c83413829be5b6530d122772959ad8414698Etan Cohen            mCatCallSetUpRegistrant = null;
4518756c83413829be5b6530d122772959ad8414698Etan Cohen        }
4520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
454cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
4550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setOnIccSmsFull(Handler h, int what, Object obj) {
4560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mIccSmsFullRegistrant = new Registrant (h, what, obj);
4570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
459cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
4600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unSetOnIccSmsFull(Handler h) {
4618756c83413829be5b6530d122772959ad8414698Etan Cohen        if (mIccSmsFullRegistrant != null && mIccSmsFullRegistrant.getHandler() == h) {
4628756c83413829be5b6530d122772959ad8414698Etan Cohen            mIccSmsFullRegistrant.clear();
4638756c83413829be5b6530d122772959ad8414698Etan Cohen            mIccSmsFullRegistrant = null;
4648756c83413829be5b6530d122772959ad8414698Etan Cohen        }
4650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
467cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
4680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForIccRefresh(Handler h, int what, Object obj) {
4690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
4700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mIccRefreshRegistrants.add(r);
4710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
472cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
4730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setOnIccRefresh(Handler h, int what, Object obj) {
4740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        registerForIccRefresh(h, what, obj);
4750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
477cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
4780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setEmergencyCallbackMode(Handler h, int what, Object obj) {
4790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mEmergencyCallbackModeRegistrant = new Registrant (h, what, obj);
4800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
482cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
4830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForIccRefresh(Handler h) {
4840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mIccRefreshRegistrants.remove(h);
4850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
486cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
4870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unsetOnIccRefresh(Handler h) {
4880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        unregisterForIccRefresh(h);
4890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
491cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
4920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setOnCallRing(Handler h, int what, Object obj) {
4930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mRingRegistrant = new Registrant (h, what, obj);
4940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
496cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
4970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unSetOnCallRing(Handler h) {
4988756c83413829be5b6530d122772959ad8414698Etan Cohen        if (mRingRegistrant != null && mRingRegistrant.getHandler() == h) {
4998756c83413829be5b6530d122772959ad8414698Etan Cohen            mRingRegistrant.clear();
5008756c83413829be5b6530d122772959ad8414698Etan Cohen            mRingRegistrant = null;
5018756c83413829be5b6530d122772959ad8414698Etan Cohen        }
5020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
504cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
50509b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja    public void setOnSs(Handler h, int what, Object obj) {
50609b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        mSsRegistrant = new Registrant (h, what, obj);
50709b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja    }
50809b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja
50909b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja    @Override
51009b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja    public void unSetOnSs(Handler h) {
51109b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        mSsRegistrant.clear();
51209b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja    }
51309b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja
51409b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja    @Override
51509b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja    public void setOnCatCcAlphaNotify(Handler h, int what, Object obj) {
51609b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        mCatCcAlphaRegistrant = new Registrant (h, what, obj);
51709b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja    }
51809b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja
51909b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja    @Override
52009b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja    public void unSetOnCatCcAlphaNotify(Handler h) {
52109b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        mCatCcAlphaRegistrant.clear();
52209b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja    }
52309b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja
52409b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja    @Override
5250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForInCallVoicePrivacyOn(Handler h, int what, Object obj) {
5260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
5270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mVoicePrivacyOnRegistrants.add(r);
5280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
530cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
5310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForInCallVoicePrivacyOn(Handler h){
5320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mVoicePrivacyOnRegistrants.remove(h);
5330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
535cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
5360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForInCallVoicePrivacyOff(Handler h, int what, Object obj) {
5370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
5380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mVoicePrivacyOffRegistrants.add(r);
5390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
541cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
5420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForInCallVoicePrivacyOff(Handler h){
5430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mVoicePrivacyOffRegistrants.remove(h);
5440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
546cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
5470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setOnRestrictedStateChanged(Handler h, int what, Object obj) {
5480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mRestrictedStateRegistrant = new Registrant (h, what, obj);
5490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
551cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
5520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unSetOnRestrictedStateChanged(Handler h) {
553ec2e4a8f12e5b67b1116e0c655a08c0216b8cd07Amit Mahajan        if (mRestrictedStateRegistrant != null && mRestrictedStateRegistrant.getHandler() == h) {
5548756c83413829be5b6530d122772959ad8414698Etan Cohen            mRestrictedStateRegistrant.clear();
5558756c83413829be5b6530d122772959ad8414698Etan Cohen            mRestrictedStateRegistrant = null;
5568756c83413829be5b6530d122772959ad8414698Etan Cohen        }
5570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
559cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
5600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForDisplayInfo(Handler h, int what, Object obj) {
5610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
5620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mDisplayInfoRegistrants.add(r);
5630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
565cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
5660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForDisplayInfo(Handler h) {
5670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mDisplayInfoRegistrants.remove(h);
5680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
570cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
5710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForCallWaitingInfo(Handler h, int what, Object obj) {
5720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
5730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mCallWaitingInfoRegistrants.add(r);
5740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
576cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
5770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForCallWaitingInfo(Handler h) {
5780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mCallWaitingInfoRegistrants.remove(h);
5790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
581cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
5820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForSignalInfo(Handler h, int what, Object obj) {
5830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
5840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mSignalInfoRegistrants.add(r);
5850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
5870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setOnUnsolOemHookRaw(Handler h, int what, Object obj) {
5880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mUnsolOemHookRawRegistrant = new Registrant (h, what, obj);
5890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
5910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unSetOnUnsolOemHookRaw(Handler h) {
5928756c83413829be5b6530d122772959ad8414698Etan Cohen        if (mUnsolOemHookRawRegistrant != null && mUnsolOemHookRawRegistrant.getHandler() == h) {
5938756c83413829be5b6530d122772959ad8414698Etan Cohen            mUnsolOemHookRawRegistrant.clear();
5948756c83413829be5b6530d122772959ad8414698Etan Cohen            mUnsolOemHookRawRegistrant = null;
5958756c83413829be5b6530d122772959ad8414698Etan Cohen        }
5960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
598cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
5990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForSignalInfo(Handler h) {
6000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mSignalInfoRegistrants.remove(h);
6010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
603cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
6040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForCdmaOtaProvision(Handler h,int what, Object obj){
6050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
6060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mOtaProvisionRegistrants.add(r);
6070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
609cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
6100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForCdmaOtaProvision(Handler h){
6110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mOtaProvisionRegistrants.remove(h);
6120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
614cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
6150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForNumberInfo(Handler h,int what, Object obj) {
6160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
6170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mNumberInfoRegistrants.add(r);
6180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
620cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
6210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForNumberInfo(Handler h){
6220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mNumberInfoRegistrants.remove(h);
6230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
625cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville     @Override
626cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    public void registerForRedirectedNumberInfo(Handler h,int what, Object obj) {
6270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
6280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mRedirNumInfoRegistrants.add(r);
6290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
631cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
6320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForRedirectedNumberInfo(Handler h) {
6330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mRedirNumInfoRegistrants.remove(h);
6340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
636cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
6370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForLineControlInfo(Handler h, int what, Object obj) {
6380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
6390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mLineControlInfoRegistrants.add(r);
6400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
642cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
6430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForLineControlInfo(Handler h) {
6440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mLineControlInfoRegistrants.remove(h);
6450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
647cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
6480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerFoT53ClirlInfo(Handler h,int what, Object obj) {
6490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
6500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mT53ClirInfoRegistrants.add(r);
6510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
653cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
6540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForT53ClirInfo(Handler h) {
6550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mT53ClirInfoRegistrants.remove(h);
6560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
658cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
6590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForT53AudioControlInfo(Handler h,int what, Object obj) {
6600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
6610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mT53AudCntrlInfoRegistrants.add(r);
6620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
664cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
6650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForT53AudioControlInfo(Handler h) {
6660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mT53AudCntrlInfoRegistrants.remove(h);
6670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
669cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
6700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForRingbackTone(Handler h, int what, Object obj) {
6710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
6720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mRingbackToneRegistrants.add(r);
6730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
675cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
6760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForRingbackTone(Handler h) {
6770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mRingbackToneRegistrants.remove(h);
6780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
680cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
6810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForResendIncallMute(Handler h, int what, Object obj) {
6820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
6830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mResendIncallMuteRegistrants.add(r);
6840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
686cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
6870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForResendIncallMute(Handler h) {
6880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mResendIncallMuteRegistrants.remove(h);
6890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
6910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Override
6920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForCdmaSubscriptionChanged(Handler h, int what, Object obj) {
6930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
6940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mCdmaSubscriptionChangedRegistrants.add(r);
6950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
6970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Override
6980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForCdmaSubscriptionChanged(Handler h) {
6990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mCdmaSubscriptionChangedRegistrants.remove(h);
7000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
7010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
7020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Override
7030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForCdmaPrlChanged(Handler h, int what, Object obj) {
7040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
7050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mCdmaPrlChangedRegistrants.add(r);
7060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
7070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
7080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Override
7090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForCdmaPrlChanged(Handler h) {
7100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mCdmaPrlChangedRegistrants.remove(h);
7110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
7120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
7130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Override
7140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForExitEmergencyCallbackMode(Handler h, int what, Object obj) {
7150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
7160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mExitEmergencyCallbackModeRegistrants.add(r);
7170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
7180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
7190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Override
7200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForExitEmergencyCallbackMode(Handler h) {
7210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mExitEmergencyCallbackModeRegistrants.remove(h);
7220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
7230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
724a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
725a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public void registerForHardwareConfigChanged(Handler h, int what, Object obj) {
726a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        Registrant r = new Registrant (h, what, obj);
727a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        mHardwareConfigChangeRegistrants.add(r);
728a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
729a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
730a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
731a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public void unregisterForHardwareConfigChanged(Handler h) {
732a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        mHardwareConfigChangeRegistrants.remove(h);
733a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
734a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
7350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
7360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * {@inheritDoc}
7370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
7380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Override
7390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForRilConnected(Handler h, int what, Object obj) {
7400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
7410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mRilConnectedRegistrants.add(r);
7420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        if (mRilVersion != -1) {
7430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            r.notifyRegistrant(new AsyncResult(null, new Integer(mRilVersion), null));
7440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
7450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
7460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
7470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Override
7480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForRilConnected(Handler h) {
7490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mRilConnectedRegistrants.remove(h);
7500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
7510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
7520e42864afb21261d6bd2e9b4aa97f6d01d039a25Yashdev Singh    public void registerForSubscriptionStatusChanged(Handler h, int what, Object obj) {
7530e42864afb21261d6bd2e9b4aa97f6d01d039a25Yashdev Singh        Registrant r = new Registrant (h, what, obj);
7540e42864afb21261d6bd2e9b4aa97f6d01d039a25Yashdev Singh        mSubscriptionStatusRegistrants.add(r);
7550e42864afb21261d6bd2e9b4aa97f6d01d039a25Yashdev Singh    }
7560e42864afb21261d6bd2e9b4aa97f6d01d039a25Yashdev Singh
7570e42864afb21261d6bd2e9b4aa97f6d01d039a25Yashdev Singh    public void unregisterForSubscriptionStatusChanged(Handler h) {
7580e42864afb21261d6bd2e9b4aa97f6d01d039a25Yashdev Singh        mSubscriptionStatusRegistrants.remove(h);
7590e42864afb21261d6bd2e9b4aa97f6d01d039a25Yashdev Singh    }
760a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
7610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    //***** Protected Methods
7620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
7630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Store new RadioState and send notification based on the changes
7640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *
7650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * This function is called only by RIL.java when receiving unsolicited
7660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * RIL_UNSOL_RESPONSE_RADIO_STATE_CHANGED
7670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *
7680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * RadioState has 3 values : RADIO_OFF, RADIO_UNAVAILABLE, RADIO_ON.
7690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *
7700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @param newState new RadioState decoded from RIL_UNSOL_RADIO_STATE_CHANGED
7710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
7720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected void setRadioState(RadioState newState) {
7730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        RadioState oldState;
7740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
7750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        synchronized (mStateMonitor) {
7760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            oldState = mState;
7770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mState = newState;
7780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
7790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            if (oldState == mState) {
7800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                // no state transition
7810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return;
7820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            }
7830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
7840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mRadioStateChangedRegistrants.notifyRegistrants();
7850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
7860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            if (mState.isAvailable() && !oldState.isAvailable()) {
7870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                mAvailRegistrants.notifyRegistrants();
7880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                onRadioAvailable();
7890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            }
7900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
7910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            if (!mState.isAvailable() && oldState.isAvailable()) {
7920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                mNotAvailRegistrants.notifyRegistrants();
7930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            }
7940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
7950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            if (mState.isOn() && !oldState.isOn()) {
7960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                mOnRegistrants.notifyRegistrants();
7970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            }
7980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
7990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            if ((!mState.isOn() || !mState.isAvailable())
8000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                && !((!oldState.isOn() || !oldState.isAvailable()))
8010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            ) {
8020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                mOffOrNotAvailRegistrants.notifyRegistrants();
8030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            }
8040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
8050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
8060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
8070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected void onRadioAvailable() {
8080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
8090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
8100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
8110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * {@inheritDoc}
8120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
8130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Override
8140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public int getLteOnCdmaMode() {
8150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return TelephonyManager.getLteOnCdmaModeStatic();
8160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
8170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
8185fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville    /**
8195fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville     * {@inheritDoc}
8205fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville     */
8215fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville    @Override
8225fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville    public void registerForCellInfoList(Handler h, int what, Object obj) {
8235fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville        Registrant r = new Registrant (h, what, obj);
8245fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville        mRilCellInfoListRegistrants.add(r);
8255fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville    }
8265fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville    @Override
8275fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville    public void unregisterForCellInfoList(Handler h) {
8285fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville        mRilCellInfoListRegistrants.remove(h);
8295fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville    }
8305fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville
8310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Override
832a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public void registerForSrvccStateChanged(Handler h, int what, Object obj) {
833a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        Registrant r = new Registrant (h, what, obj);
834a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
835a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        mSrvccStateRegistrants.add(r);
836a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
837a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
838a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
839a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public void unregisterForSrvccStateChanged(Handler h) {
840a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        mSrvccStateRegistrants.remove(h);
841a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
842a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
843a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
8440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void testingEmergencyCall() {}
8451de1d3c6da7aa16d1a1b4a3f85484803788d2f8bWink Saville
8461de1d3c6da7aa16d1a1b4a3f85484803788d2f8bWink Saville    @Override
8471de1d3c6da7aa16d1a1b4a3f85484803788d2f8bWink Saville    public int getRilVersion() {
8481de1d3c6da7aa16d1a1b4a3f85484803788d2f8bWink Saville        return mRilVersion;
8491de1d3c6da7aa16d1a1b4a3f85484803788d2f8bWink Saville    }
850a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
851a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public void setUiccSubscription(int slotId, int appIndex, int subId, int subStatus,
852a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville            Message response) {
853a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
854a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
855a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public void setDataAllowed(boolean allowed, Message response) {
856a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
85703586878fb3d870373f2fdf65afb81cc5ae97067Naveen Kalla
85803586878fb3d870373f2fdf65afb81cc5ae97067Naveen Kalla    @Override
85903586878fb3d870373f2fdf65afb81cc5ae97067Naveen Kalla    public void requestShutdown(Message result) {
86003586878fb3d870373f2fdf65afb81cc5ae97067Naveen Kalla    }
8612b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville
8622b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville    @Override
8632b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville    public void getRadioCapability(Message result) {
8642b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville    }
8652b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville
8662b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville    @Override
8672b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville    public void setRadioCapability(RadioCapability rc, Message response) {
8682b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville    }
8692b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville
8702b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville    @Override
8712b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville    public void registerForRadioCapabilityChanged(Handler h, int what, Object obj) {
8722b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville        Registrant r = new Registrant(h, what, obj);
8732b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville        mPhoneRadioCapabilityChangedRegistrants.add(r);
8742b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville    }
8752b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville
8762b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville    @Override
8772b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville    public void unregisterForRadioCapabilityChanged(Handler h) {
8782b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville        mPhoneRadioCapabilityChangedRegistrants.remove(h);
8792b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville    }
88065bee39d7e417fb898c3948696d5d8a38046c449fenglu
88165bee39d7e417fb898c3948696d5d8a38046c449fenglu    @Override
88265bee39d7e417fb898c3948696d5d8a38046c449fenglu    public void startLceService(int reportIntervalMs, boolean pullMode, Message result) {
88365bee39d7e417fb898c3948696d5d8a38046c449fenglu    }
88465bee39d7e417fb898c3948696d5d8a38046c449fenglu
88565bee39d7e417fb898c3948696d5d8a38046c449fenglu    @Override
88665bee39d7e417fb898c3948696d5d8a38046c449fenglu    public void stopLceService(Message result) {
88765bee39d7e417fb898c3948696d5d8a38046c449fenglu    }
88865bee39d7e417fb898c3948696d5d8a38046c449fenglu
88965bee39d7e417fb898c3948696d5d8a38046c449fenglu    @Override
89065bee39d7e417fb898c3948696d5d8a38046c449fenglu    public void pullLceData(Message result) {
89165bee39d7e417fb898c3948696d5d8a38046c449fenglu    }
89265bee39d7e417fb898c3948696d5d8a38046c449fenglu
89365bee39d7e417fb898c3948696d5d8a38046c449fenglu    @Override
89465bee39d7e417fb898c3948696d5d8a38046c449fenglu    public void registerForLceInfo(Handler h, int what, Object obj) {
89565bee39d7e417fb898c3948696d5d8a38046c449fenglu      mLceInfoRegistrant = new Registrant(h, what, obj);
89665bee39d7e417fb898c3948696d5d8a38046c449fenglu    }
89765bee39d7e417fb898c3948696d5d8a38046c449fenglu
89865bee39d7e417fb898c3948696d5d8a38046c449fenglu    @Override
89965bee39d7e417fb898c3948696d5d8a38046c449fenglu    public void unregisterForLceInfo(Handler h) {
90065bee39d7e417fb898c3948696d5d8a38046c449fenglu      if (mLceInfoRegistrant != null && mLceInfoRegistrant.getHandler() == h) {
90165bee39d7e417fb898c3948696d5d8a38046c449fenglu          mLceInfoRegistrant.clear();
90265bee39d7e417fb898c3948696d5d8a38046c449fenglu          mLceInfoRegistrant = null;
90365bee39d7e417fb898c3948696d5d8a38046c449fenglu      }
90465bee39d7e417fb898c3948696d5d8a38046c449fenglu    }
9054b4d80db8a8d447d3c1110831c2a821a2bd2a186Robert Greenwalt
9064b4d80db8a8d447d3c1110831c2a821a2bd2a186Robert Greenwalt    @Override
9074b4d80db8a8d447d3c1110831c2a821a2bd2a186Robert Greenwalt    public void registerForPcoData(Handler h, int what, Object obj) {
9084b4d80db8a8d447d3c1110831c2a821a2bd2a186Robert Greenwalt        mPcoDataRegistrants.add(new Registrant(h, what, obj));
9094b4d80db8a8d447d3c1110831c2a821a2bd2a186Robert Greenwalt    }
9104b4d80db8a8d447d3c1110831c2a821a2bd2a186Robert Greenwalt
9114b4d80db8a8d447d3c1110831c2a821a2bd2a186Robert Greenwalt    @Override
9124b4d80db8a8d447d3c1110831c2a821a2bd2a186Robert Greenwalt    public void unregisterForPcoData(Handler h) {
9134b4d80db8a8d447d3c1110831c2a821a2bd2a186Robert Greenwalt        mPcoDataRegistrants.remove(h);
9144b4d80db8a8d447d3c1110831c2a821a2bd2a186Robert Greenwalt    }
9150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville}
916