BaseCommands.java revision 1260f1c6c909f2940989b72afe1b91fd83845eaa
10825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/*
20825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Copyright (C) 2006 The Android Open Source Project
31260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa * Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
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 Saville
210825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.content.Context;
220825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.RegistrantList;
230825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.Registrant;
240825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.Handler;
250825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.AsyncResult;
260825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.telephony.TelephonyManager;
270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/**
290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@hide}
300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */
310825495a331bb44df395a0cdb79fab85e68db5d5Wink Savillepublic abstract class BaseCommands implements CommandsInterface {
320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    //***** Instance Variables
330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected Context mContext;
340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RadioState mState = RadioState.RADIO_UNAVAILABLE;
350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected Object mStateMonitor = new Object();
360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mRadioStateChangedRegistrants = new RegistrantList();
380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mOnRegistrants = new RegistrantList();
390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mAvailRegistrants = new RegistrantList();
400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mOffOrNotAvailRegistrants = new RegistrantList();
410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mNotAvailRegistrants = new RegistrantList();
420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mCallStateRegistrants = new RegistrantList();
430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mVoiceNetworkStateRegistrants = new RegistrantList();
440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mDataNetworkStateRegistrants = new RegistrantList();
450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mVoiceRadioTechChangedRegistrants = new RegistrantList();
461260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa    protected RegistrantList mImsNetworkStateChangedRegistrants = new RegistrantList();
470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mIccStatusChangedRegistrants = new RegistrantList();
480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mVoicePrivacyOnRegistrants = new RegistrantList();
490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mVoicePrivacyOffRegistrants = new RegistrantList();
500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected Registrant mUnsolOemHookRawRegistrant;
510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mOtaProvisionRegistrants = new RegistrantList();
520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mCallWaitingInfoRegistrants = new RegistrantList();
530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mDisplayInfoRegistrants = new RegistrantList();
540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mSignalInfoRegistrants = new RegistrantList();
550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mNumberInfoRegistrants = new RegistrantList();
560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mRedirNumInfoRegistrants = new RegistrantList();
570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mLineControlInfoRegistrants = new RegistrantList();
580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mT53ClirInfoRegistrants = new RegistrantList();
590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mT53AudCntrlInfoRegistrants = new RegistrantList();
600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mRingbackToneRegistrants = new RegistrantList();
610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mResendIncallMuteRegistrants = new RegistrantList();
620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mCdmaSubscriptionChangedRegistrants = new RegistrantList();
630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mCdmaPrlChangedRegistrants = new RegistrantList();
640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mExitEmergencyCallbackModeRegistrants = new RegistrantList();
650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mRilConnectedRegistrants = new RegistrantList();
660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected RegistrantList mIccRefreshRegistrants = new RegistrantList();
675fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville    protected RegistrantList mRilCellInfoListRegistrants = new RegistrantList();
680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected Registrant mGsmSmsRegistrant;
700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected Registrant mCdmaSmsRegistrant;
710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected Registrant mNITZTimeRegistrant;
720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected Registrant mSignalStrengthRegistrant;
730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected Registrant mUSSDRegistrant;
740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected Registrant mSmsOnSimRegistrant;
750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected Registrant mSmsStatusRegistrant;
760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected Registrant mSsnRegistrant;
770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected Registrant mCatSessionEndRegistrant;
780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected Registrant mCatProCmdRegistrant;
790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected Registrant mCatEventRegistrant;
800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected Registrant mCatCallSetUpRegistrant;
810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected Registrant mIccSmsFullRegistrant;
820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected Registrant mEmergencyCallbackModeRegistrant;
830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected Registrant mRingRegistrant;
840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected Registrant mRestrictedStateRegistrant;
850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected Registrant mGsmBroadcastSmsRegistrant;
860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    // Preferred network type received from PhoneFactory.
880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    // This is used when establishing a connection to the
890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    // vendor ril so it starts up in the correct mode.
900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected int mPreferredNetworkType;
910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    // CDMA subscription received from PhoneFactory
920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected int mCdmaSubscription;
930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    // Type of Phone, GSM or CDMA. Set by CDMAPhone or GSMPhone.
940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected int mPhoneType;
950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    // RIL Version
960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected int mRilVersion = -1;
970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public BaseCommands(Context context) {
990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mContext = context;  // May be null (if so we won't log statistics)
1000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    //***** CommandsInterface implementation
1030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
104cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
1050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public RadioState getRadioState() {
1060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mState;
1070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
109cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
1100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForRadioStateChanged(Handler h, int what, Object obj) {
1110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
1120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        synchronized (mStateMonitor) {
1140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mRadioStateChangedRegistrants.add(r);
1150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            r.notifyRegistrant();
1160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
119cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
1200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForRadioStateChanged(Handler h) {
1210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        synchronized (mStateMonitor) {
1220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mRadioStateChangedRegistrants.remove(h);
1230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1261260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa    public void registerForImsNetworkStateChanged(Handler h, int what, Object obj) {
1271260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa        Registrant r = new Registrant (h, what, obj);
1281260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa        mImsNetworkStateChangedRegistrants.add(r);
1291260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa    }
1301260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa
1311260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa    public void unregisterForImsNetworkStateChanged(Handler h) {
1321260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa        mImsNetworkStateChangedRegistrants.remove(h);
1331260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa    }
1341260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa
135cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
1360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForOn(Handler h, int what, Object obj) {
1370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
1380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        synchronized (mStateMonitor) {
1400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mOnRegistrants.add(r);
1410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            if (mState.isOn()) {
1430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                r.notifyRegistrant(new AsyncResult(null, null, null));
1440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            }
1450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
147cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
1480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForOn(Handler h) {
1490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        synchronized (mStateMonitor) {
1500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mOnRegistrants.remove(h);
1510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
155cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
1560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForAvailable(Handler h, int what, Object obj) {
1570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
1580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        synchronized (mStateMonitor) {
1600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mAvailRegistrants.add(r);
1610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            if (mState.isAvailable()) {
1630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                r.notifyRegistrant(new AsyncResult(null, null, null));
1640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            }
1650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
168cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
1690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForAvailable(Handler h) {
1700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        synchronized(mStateMonitor) {
1710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mAvailRegistrants.remove(h);
1720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
175cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
1760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForNotAvailable(Handler h, int what, Object obj) {
1770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
1780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        synchronized (mStateMonitor) {
1800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mNotAvailRegistrants.add(r);
1810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            if (!mState.isAvailable()) {
1830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                r.notifyRegistrant(new AsyncResult(null, null, null));
1840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            }
1850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
188cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
1890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForNotAvailable(Handler h) {
1900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        synchronized (mStateMonitor) {
1910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mNotAvailRegistrants.remove(h);
1920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
195cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
1960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForOffOrNotAvailable(Handler h, int what, Object obj) {
1970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
1980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        synchronized (mStateMonitor) {
2000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mOffOrNotAvailRegistrants.add(r);
2010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            if (mState == RadioState.RADIO_OFF || !mState.isAvailable()) {
2030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                r.notifyRegistrant(new AsyncResult(null, null, null));
2040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            }
2050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
2060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
207cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
2080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForOffOrNotAvailable(Handler h) {
2090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        synchronized(mStateMonitor) {
2100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mOffOrNotAvailRegistrants.remove(h);
2110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
2120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
214cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
2150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForCallStateChanged(Handler h, int what, Object obj) {
2160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
2170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mCallStateRegistrants.add(r);
2190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
221cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
2220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForCallStateChanged(Handler h) {
2230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mCallStateRegistrants.remove(h);
2240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
226cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
2270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForVoiceNetworkStateChanged(Handler h, int what, Object obj) {
2280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
2290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mVoiceNetworkStateRegistrants.add(r);
2310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
233cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
2340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForVoiceNetworkStateChanged(Handler h) {
2350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mVoiceNetworkStateRegistrants.remove(h);
2360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
238cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
2390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForDataNetworkStateChanged(Handler h, int what, Object obj) {
2400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
2410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mDataNetworkStateRegistrants.add(r);
2430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
245cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
2460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForDataNetworkStateChanged(Handler h) {
2470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mDataNetworkStateRegistrants.remove(h);
2480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
250cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
2510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForVoiceRadioTechChanged(Handler h, int what, Object obj) {
2520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
2530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mVoiceRadioTechChangedRegistrants.add(r);
2540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
256cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
2570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForVoiceRadioTechChanged(Handler h) {
2580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mVoiceRadioTechChangedRegistrants.remove(h);
2590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
261cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
2620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForIccStatusChanged(Handler h, int what, Object obj) {
2630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
2640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mIccStatusChangedRegistrants.add(r);
2650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
267cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
2680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForIccStatusChanged(Handler h) {
2690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mIccStatusChangedRegistrants.remove(h);
2700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
272cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
2730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setOnNewGsmSms(Handler h, int what, Object obj) {
2740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mGsmSmsRegistrant = new Registrant (h, what, obj);
2750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
277cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
2780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unSetOnNewGsmSms(Handler h) {
2790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mGsmSmsRegistrant.clear();
2800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
282cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
2830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setOnNewCdmaSms(Handler h, int what, Object obj) {
2840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mCdmaSmsRegistrant = new Registrant (h, what, obj);
2850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
287cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
2880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unSetOnNewCdmaSms(Handler h) {
2890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mCdmaSmsRegistrant.clear();
2900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
292cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
2930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setOnNewGsmBroadcastSms(Handler h, int what, Object obj) {
2940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mGsmBroadcastSmsRegistrant = new Registrant (h, what, obj);
2950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
297cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
2980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unSetOnNewGsmBroadcastSms(Handler h) {
2990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mGsmBroadcastSmsRegistrant.clear();
3000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
302cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
3030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setOnSmsOnSim(Handler h, int what, Object obj) {
3040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mSmsOnSimRegistrant = new Registrant (h, what, obj);
3050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
307cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
3080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unSetOnSmsOnSim(Handler h) {
3090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mSmsOnSimRegistrant.clear();
3100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
312cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
3130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setOnSmsStatus(Handler h, int what, Object obj) {
3140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mSmsStatusRegistrant = new Registrant (h, what, obj);
3150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
317cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
3180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unSetOnSmsStatus(Handler h) {
3190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mSmsStatusRegistrant.clear();
3200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
322cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
3230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setOnSignalStrengthUpdate(Handler h, int what, Object obj) {
3240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mSignalStrengthRegistrant = new Registrant (h, what, obj);
3250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
327cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
3280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unSetOnSignalStrengthUpdate(Handler h) {
3290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mSignalStrengthRegistrant.clear();
3300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
332cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
3330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setOnNITZTime(Handler h, int what, Object obj) {
3340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mNITZTimeRegistrant = new Registrant (h, what, obj);
3350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
337cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
3380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unSetOnNITZTime(Handler h) {
3390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mNITZTimeRegistrant.clear();
3400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
342cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
3430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setOnUSSD(Handler h, int what, Object obj) {
3440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mUSSDRegistrant = new Registrant (h, what, obj);
3450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
347cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
3480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unSetOnUSSD(Handler h) {
3490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mUSSDRegistrant.clear();
3500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
352cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
3530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setOnSuppServiceNotification(Handler h, int what, Object obj) {
3540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mSsnRegistrant = new Registrant (h, what, obj);
3550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
357cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
3580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unSetOnSuppServiceNotification(Handler h) {
3590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mSsnRegistrant.clear();
3600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
362cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
3630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setOnCatSessionEnd(Handler h, int what, Object obj) {
3640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mCatSessionEndRegistrant = new Registrant (h, what, obj);
3650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
367cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
3680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unSetOnCatSessionEnd(Handler h) {
3690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mCatSessionEndRegistrant.clear();
3700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
372cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
3730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setOnCatProactiveCmd(Handler h, int what, Object obj) {
3740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mCatProCmdRegistrant = new Registrant (h, what, obj);
3750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
377cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
3780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unSetOnCatProactiveCmd(Handler h) {
3790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mCatProCmdRegistrant.clear();
3800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
382cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
3830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setOnCatEvent(Handler h, int what, Object obj) {
3840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mCatEventRegistrant = new Registrant (h, what, obj);
3850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
387cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
3880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unSetOnCatEvent(Handler h) {
3890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mCatEventRegistrant.clear();
3900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
392cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
3930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setOnCatCallSetUp(Handler h, int what, Object obj) {
3940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mCatCallSetUpRegistrant = new Registrant (h, what, obj);
3950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
397cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
3980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unSetOnCatCallSetUp(Handler h) {
3990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mCatCallSetUpRegistrant.clear();
4000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
402cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
4030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setOnIccSmsFull(Handler h, int what, Object obj) {
4040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mIccSmsFullRegistrant = new Registrant (h, what, obj);
4050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
407cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
4080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unSetOnIccSmsFull(Handler h) {
4090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mIccSmsFullRegistrant.clear();
4100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
412cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
4130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForIccRefresh(Handler h, int what, Object obj) {
4140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
4150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mIccRefreshRegistrants.add(r);
4160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
417cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
4180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setOnIccRefresh(Handler h, int what, Object obj) {
4190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        registerForIccRefresh(h, what, obj);
4200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
422cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
4230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setEmergencyCallbackMode(Handler h, int what, Object obj) {
4240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mEmergencyCallbackModeRegistrant = new Registrant (h, what, obj);
4250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
427cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
4280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForIccRefresh(Handler h) {
4290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mIccRefreshRegistrants.remove(h);
4300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
431cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
4320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unsetOnIccRefresh(Handler h) {
4330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        unregisterForIccRefresh(h);
4340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
436cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
4370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setOnCallRing(Handler h, int what, Object obj) {
4380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mRingRegistrant = new Registrant (h, what, obj);
4390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
441cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
4420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unSetOnCallRing(Handler h) {
4430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mRingRegistrant.clear();
4440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
446cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
4470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForInCallVoicePrivacyOn(Handler h, int what, Object obj) {
4480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
4490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mVoicePrivacyOnRegistrants.add(r);
4500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
452cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
4530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForInCallVoicePrivacyOn(Handler h){
4540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mVoicePrivacyOnRegistrants.remove(h);
4550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
457cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
4580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForInCallVoicePrivacyOff(Handler h, int what, Object obj) {
4590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
4600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mVoicePrivacyOffRegistrants.add(r);
4610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
463cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
4640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForInCallVoicePrivacyOff(Handler h){
4650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mVoicePrivacyOffRegistrants.remove(h);
4660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
468cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
4690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setOnRestrictedStateChanged(Handler h, int what, Object obj) {
4700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mRestrictedStateRegistrant = new Registrant (h, what, obj);
4710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
473cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
4740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unSetOnRestrictedStateChanged(Handler h) {
4750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mRestrictedStateRegistrant.clear();
4760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
478cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
4790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForDisplayInfo(Handler h, int what, Object obj) {
4800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
4810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mDisplayInfoRegistrants.add(r);
4820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
484cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
4850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForDisplayInfo(Handler h) {
4860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mDisplayInfoRegistrants.remove(h);
4870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
489cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
4900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForCallWaitingInfo(Handler h, int what, Object obj) {
4910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
4920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mCallWaitingInfoRegistrants.add(r);
4930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
495cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
4960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForCallWaitingInfo(Handler h) {
4970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mCallWaitingInfoRegistrants.remove(h);
4980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
500cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
5010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForSignalInfo(Handler h, int what, Object obj) {
5020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
5030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mSignalInfoRegistrants.add(r);
5040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
5060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setOnUnsolOemHookRaw(Handler h, int what, Object obj) {
5070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mUnsolOemHookRawRegistrant = new Registrant (h, what, obj);
5080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
5100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unSetOnUnsolOemHookRaw(Handler h) {
5110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mUnsolOemHookRawRegistrant.clear();
5120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
514cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
5150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForSignalInfo(Handler h) {
5160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mSignalInfoRegistrants.remove(h);
5170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
519cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
5200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForCdmaOtaProvision(Handler h,int what, Object obj){
5210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
5220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mOtaProvisionRegistrants.add(r);
5230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
525cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
5260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForCdmaOtaProvision(Handler h){
5270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mOtaProvisionRegistrants.remove(h);
5280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
530cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
5310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForNumberInfo(Handler h,int what, Object obj) {
5320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
5330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mNumberInfoRegistrants.add(r);
5340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
536cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
5370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForNumberInfo(Handler h){
5380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mNumberInfoRegistrants.remove(h);
5390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
541cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville     @Override
542cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    public void registerForRedirectedNumberInfo(Handler h,int what, Object obj) {
5430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
5440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mRedirNumInfoRegistrants.add(r);
5450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
547cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
5480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForRedirectedNumberInfo(Handler h) {
5490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mRedirNumInfoRegistrants.remove(h);
5500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
552cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
5530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForLineControlInfo(Handler h, int what, Object obj) {
5540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
5550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mLineControlInfoRegistrants.add(r);
5560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
558cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
5590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForLineControlInfo(Handler h) {
5600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mLineControlInfoRegistrants.remove(h);
5610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
563cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
5640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerFoT53ClirlInfo(Handler h,int what, Object obj) {
5650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
5660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mT53ClirInfoRegistrants.add(r);
5670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
569cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
5700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForT53ClirInfo(Handler h) {
5710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mT53ClirInfoRegistrants.remove(h);
5720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
574cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
5750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForT53AudioControlInfo(Handler h,int what, Object obj) {
5760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
5770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mT53AudCntrlInfoRegistrants.add(r);
5780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
580cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
5810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForT53AudioControlInfo(Handler h) {
5820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mT53AudCntrlInfoRegistrants.remove(h);
5830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
585cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
5860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForRingbackTone(Handler h, int what, Object obj) {
5870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
5880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mRingbackToneRegistrants.add(r);
5890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
591cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
5920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForRingbackTone(Handler h) {
5930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mRingbackToneRegistrants.remove(h);
5940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
596cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
5970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForResendIncallMute(Handler h, int what, Object obj) {
5980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
5990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mResendIncallMuteRegistrants.add(r);
6000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
602cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
6030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForResendIncallMute(Handler h) {
6040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mResendIncallMuteRegistrants.remove(h);
6050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
6070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Override
6080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForCdmaSubscriptionChanged(Handler h, int what, Object obj) {
6090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
6100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mCdmaSubscriptionChangedRegistrants.add(r);
6110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
6130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Override
6140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForCdmaSubscriptionChanged(Handler h) {
6150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mCdmaSubscriptionChangedRegistrants.remove(h);
6160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
6180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Override
6190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForCdmaPrlChanged(Handler h, int what, Object obj) {
6200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
6210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mCdmaPrlChangedRegistrants.add(r);
6220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
6240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Override
6250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForCdmaPrlChanged(Handler h) {
6260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mCdmaPrlChangedRegistrants.remove(h);
6270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
6290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Override
6300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForExitEmergencyCallbackMode(Handler h, int what, Object obj) {
6310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
6320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mExitEmergencyCallbackModeRegistrants.add(r);
6330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
6350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Override
6360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForExitEmergencyCallbackMode(Handler h) {
6370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mExitEmergencyCallbackModeRegistrants.remove(h);
6380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
6400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
6410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * {@inheritDoc}
6420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
6430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Override
6440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForRilConnected(Handler h, int what, Object obj) {
6450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Registrant r = new Registrant (h, what, obj);
6460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mRilConnectedRegistrants.add(r);
6470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        if (mRilVersion != -1) {
6480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            r.notifyRegistrant(new AsyncResult(null, new Integer(mRilVersion), null));
6490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
6500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
6520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Override
6530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForRilConnected(Handler h) {
6540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mRilConnectedRegistrants.remove(h);
6550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
6570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
6580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * {@inheritDoc}
6590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
6600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Override
6610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setCurrentPreferredNetworkType() {
6620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
6640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    //***** Protected Methods
6650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
6660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Store new RadioState and send notification based on the changes
6670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *
6680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * This function is called only by RIL.java when receiving unsolicited
6690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * RIL_UNSOL_RESPONSE_RADIO_STATE_CHANGED
6700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *
6710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * RadioState has 3 values : RADIO_OFF, RADIO_UNAVAILABLE, RADIO_ON.
6720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *
6730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @param newState new RadioState decoded from RIL_UNSOL_RADIO_STATE_CHANGED
6740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
6750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected void setRadioState(RadioState newState) {
6760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        RadioState oldState;
6770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
6780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        synchronized (mStateMonitor) {
6790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            oldState = mState;
6800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mState = newState;
6810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
6820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            if (oldState == mState) {
6830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                // no state transition
6840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return;
6850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            }
6860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
6870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mRadioStateChangedRegistrants.notifyRegistrants();
6880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
6890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            if (mState.isAvailable() && !oldState.isAvailable()) {
6900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                mAvailRegistrants.notifyRegistrants();
6910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                onRadioAvailable();
6920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            }
6930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
6940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            if (!mState.isAvailable() && oldState.isAvailable()) {
6950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                mNotAvailRegistrants.notifyRegistrants();
6960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            }
6970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
6980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            if (mState.isOn() && !oldState.isOn()) {
6990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                mOnRegistrants.notifyRegistrants();
7000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            }
7010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
7020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            if ((!mState.isOn() || !mState.isAvailable())
7030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                && !((!oldState.isOn() || !oldState.isAvailable()))
7040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            ) {
7050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                mOffOrNotAvailRegistrants.notifyRegistrants();
7060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            }
7070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
7080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
7090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
7100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected void onRadioAvailable() {
7110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
7120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
7130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
7140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * {@inheritDoc}
7150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
7160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Override
7170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public int getLteOnCdmaMode() {
7180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return TelephonyManager.getLteOnCdmaModeStatic();
7190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
7200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
7215fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville    /**
7225fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville     * {@inheritDoc}
7235fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville     */
7245fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville    @Override
7255fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville    public void registerForCellInfoList(Handler h, int what, Object obj) {
7265fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville        Registrant r = new Registrant (h, what, obj);
7275fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville        mRilCellInfoListRegistrants.add(r);
7285fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville    }
7295fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville    @Override
7305fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville    public void unregisterForCellInfoList(Handler h) {
7315fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville        mRilCellInfoListRegistrants.remove(h);
7325fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville    }
7335fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville
7340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Override
7350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void testingEmergencyCall() {}
7361de1d3c6da7aa16d1a1b4a3f85484803788d2f8bWink Saville
7371de1d3c6da7aa16d1a1b4a3f85484803788d2f8bWink Saville    @Override
7381de1d3c6da7aa16d1a1b4a3f85484803788d2f8bWink Saville    public int getRilVersion() {
7391de1d3c6da7aa16d1a1b4a3f85484803788d2f8bWink Saville        return mRilVersion;
7401de1d3c6da7aa16d1a1b4a3f85484803788d2f8bWink Saville    }
7410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville}
742