10825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/*
20825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Copyright (C) 2008 The Android Open Source Project
30825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville *
40825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Licensed under the Apache License, Version 2.0 (the "License");
50825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * you may not use this file except in compliance with the License.
60825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * You may obtain a copy of the License at
70825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville *
80825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville *      http://www.apache.org/licenses/LICENSE-2.0
90825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville *
100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Unless required by applicable law or agreed to in writing, software
110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * distributed under the License is distributed on an "AS IS" BASIS,
120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * See the License for the specific language governing permissions and
140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * limitations under the License.
150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */
160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
170825495a331bb44df395a0cdb79fab85e68db5d5Wink Savillepackage com.android.internal.telephony;
180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
200825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.app.ActivityManagerNative;
210825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.content.Context;
220825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.content.Intent;
230825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.net.LinkCapabilities;
240825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.net.LinkProperties;
250825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.AsyncResult;
260825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.Handler;
270825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.Message;
280825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.SystemProperties;
29cbbf6deee30d702e398939f4bb464f5e821f5e6cDianne Hackbornimport android.os.UserHandle;
30ef1d4bff9bbf7d967dbcace73f08910e14e367d0Wink Savilleimport android.telephony.CellInfo;
310825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.telephony.CellLocation;
320825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.telephony.ServiceState;
330825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.telephony.SignalStrength;
340825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.util.Log;
350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
360825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.cdma.CDMAPhone;
370825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.gsm.GSMPhone;
380825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.gsm.UsimServiceTable;
390825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.ims.IsimRecords;
400825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.test.SimulatedRadioControl;
410825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.CallManager;
420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
430825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.util.List;
440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
450825495a331bb44df395a0cdb79fab85e68db5d5Wink Savillepublic class PhoneProxy extends Handler implements Phone {
460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public final static Object lockForRadioTechnologyChange = new Object();
470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    private Phone mActivePhone;
490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    private CommandsInterface mCommandsInterface;
500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    private IccSmsInterfaceManagerProxy mIccSmsInterfaceManagerProxy;
510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    private IccPhoneBookInterfaceManagerProxy mIccPhoneBookInterfaceManagerProxy;
520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    private PhoneSubInfoProxy mPhoneSubInfoProxy;
53e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka    private IccCardProxy mIccCardProxy;
540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    private boolean mResetModemOnRadioTechnologyChange = false;
560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    private int mRilVersion;
580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    private static final int EVENT_VOICE_RADIO_TECH_CHANGED = 1;
600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    private static final int EVENT_RADIO_ON = 2;
610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    private static final int EVENT_REQUEST_VOICE_RADIO_TECH_DONE = 3;
620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    private static final int EVENT_RIL_CONNECTED = 4;
630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    private static final String LOG_TAG = "PHONE";
650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    //***** Class Methods
67e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka    public PhoneProxy(PhoneBase phone) {
680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone = phone;
690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mResetModemOnRadioTechnologyChange = SystemProperties.getBoolean(
700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                TelephonyProperties.PROPERTY_RESET_ON_RADIO_TECH_CHANGE, false);
710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mIccSmsInterfaceManagerProxy = new IccSmsInterfaceManagerProxy(
720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                phone.getIccSmsInterfaceManager());
730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mIccPhoneBookInterfaceManagerProxy = new IccPhoneBookInterfaceManagerProxy(
740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                phone.getIccPhoneBookInterfaceManager());
750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mPhoneSubInfoProxy = new PhoneSubInfoProxy(phone.getPhoneSubInfo());
760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mCommandsInterface = ((PhoneBase)mActivePhone).mCM;
770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mCommandsInterface.registerForRilConnected(this, EVENT_RIL_CONNECTED, null);
790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mCommandsInterface.registerForOn(this, EVENT_RADIO_ON, null);
800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mCommandsInterface.registerForVoiceRadioTechChanged(
810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                             this, EVENT_VOICE_RADIO_TECH_CHANGED, null);
82e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka        mIccCardProxy = new IccCardProxy(phone.getContext(), mCommandsInterface);
83e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka        if (phone.getPhoneType() == PhoneConstants.PHONE_TYPE_GSM) {
84e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka            // For the purpose of IccCardProxy we only care about the technology family
85e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka            mIccCardProxy.setVoiceRadioTech(ServiceState.RIL_RADIO_TECHNOLOGY_UMTS);
86e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka        } else if (phone.getPhoneType() == PhoneConstants.PHONE_TYPE_CDMA) {
87e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka            mIccCardProxy.setVoiceRadioTech(ServiceState.RIL_RADIO_TECHNOLOGY_1xRTT);
88e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka        }
890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Override
920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void handleMessage(Message msg) {
930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        AsyncResult ar = (AsyncResult) msg.obj;
940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        switch(msg.what) {
950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case EVENT_RADIO_ON:
960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            /* Proactively query voice radio technologies */
970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mCommandsInterface.getVoiceRadioTechnology(
980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    this.obtainMessage(EVENT_REQUEST_VOICE_RADIO_TECH_DONE));
990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            break;
1000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case EVENT_RIL_CONNECTED:
1020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            if (ar.exception == null && ar.result != null) {
1030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                mRilVersion = (Integer) ar.result;
1040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            } else {
1050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                logd("Unexpected exception on EVENT_RIL_CONNECTED");
1060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                mRilVersion = -1;
1070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            }
1080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            break;
1090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case EVENT_VOICE_RADIO_TECH_CHANGED:
1110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case EVENT_REQUEST_VOICE_RADIO_TECH_DONE:
1120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            if (ar.exception == null) {
1140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                if ((ar.result != null) && (((int[]) ar.result).length != 0)) {
1150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    int newVoiceTech = ((int[]) ar.result)[0];
1160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    updatePhoneObject(newVoiceTech);
1170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                } else {
1180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    loge("Voice Radio Technology event " + msg.what + " has no tech!");
1190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                }
1200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            } else {
1210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                loge("Voice Radio Technology event " + msg.what + " exception!" + ar.exception);
1220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            }
1230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            break;
1240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        default:
1260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            loge("Error! This handler was not registered for this message type. Message: "
1270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    + msg.what);
1280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            break;
1290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        super.handleMessage(msg);
1310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    private static void logd(String msg) {
1340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Log.d(LOG_TAG, "[PhoneProxy] " + msg);
1350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    private void logw(String msg) {
1380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Log.w(LOG_TAG, "[PhoneProxy] " + msg);
1390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    private void loge(String msg) {
1420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Log.e(LOG_TAG, "[PhoneProxy] " + msg);
1430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    private void updatePhoneObject(int newVoiceRadioTech) {
1460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        if (mActivePhone != null) {
1480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            if(mRilVersion == 6 && getLteOnCdmaMode() == PhoneConstants.LTE_ON_CDMA_TRUE) {
1490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                /*
1500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                 * On v6 RIL, when LTE_ON_CDMA is TRUE, always create CDMALTEPhone
1510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                 * irrespective of the voice radio tech reported.
1520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                 */
1530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                if (mActivePhone.getPhoneType() == PhoneConstants.PHONE_TYPE_CDMA) {
1540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    logd("LTE ON CDMA property is set. Use CDMA Phone" +
1550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                            " newVoiceRadioTech = " + newVoiceRadioTech +
1560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                            " Active Phone = " + mActivePhone.getPhoneName());
1570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    return;
1580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                } else {
1590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    logd("LTE ON CDMA property is set. Switch to CDMALTEPhone" +
1600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                            " newVoiceRadioTech = " + newVoiceRadioTech +
1610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                            " Active Phone = " + mActivePhone.getPhoneName());
1620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    newVoiceRadioTech = ServiceState.RIL_RADIO_TECHNOLOGY_1xRTT;
1630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                }
1640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            } else {
1650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                if ((ServiceState.isCdma(newVoiceRadioTech) &&
1660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                        mActivePhone.getPhoneType() == PhoneConstants.PHONE_TYPE_CDMA) ||
1670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                        (ServiceState.isGsm(newVoiceRadioTech) &&
1680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                                mActivePhone.getPhoneType() == PhoneConstants.PHONE_TYPE_GSM)) {
1690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    // Nothing changed. Keep phone as it is.
1700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    logd("Ignoring voice radio technology changed message." +
1710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                            " newVoiceRadioTech = " + newVoiceRadioTech +
1720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                            " Active Phone = " + mActivePhone.getPhoneName());
1730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    return;
1740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                }
1750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            }
1760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        if (newVoiceRadioTech == ServiceState.RIL_RADIO_TECHNOLOGY_UNKNOWN) {
1790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            // We need some voice phone object to be active always, so never
1800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            // delete the phone without anything to replace it with!
1810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            logd("Ignoring voice radio technology changed message. newVoiceRadioTech = Unknown."
1820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    + " Active Phone = " + mActivePhone.getPhoneName());
1830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            return;
1840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        boolean oldPowerState = false; // old power state to off
1870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        if (mResetModemOnRadioTechnologyChange) {
1880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            if (mCommandsInterface.getRadioState().isOn()) {
1890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                oldPowerState = true;
1900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                logd("Setting Radio Power to Off");
1910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                mCommandsInterface.setRadioPower(false, null);
1920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            }
1930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        deleteAndCreatePhone(newVoiceRadioTech);
1960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        if (mResetModemOnRadioTechnologyChange && oldPowerState) { // restore power state
1980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            logd("Resetting Radio");
1990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mCommandsInterface.setRadioPower(oldPowerState, null);
2000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
2010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        // Set the new interfaces in the proxy's
2030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mIccSmsInterfaceManagerProxy.setmIccSmsInterfaceManager(
2040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                mActivePhone.getIccSmsInterfaceManager());
2050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mIccPhoneBookInterfaceManagerProxy.setmIccPhoneBookInterfaceManager(mActivePhone
2060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                .getIccPhoneBookInterfaceManager());
2070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mPhoneSubInfoProxy.setmPhoneSubInfo(this.mActivePhone.getPhoneSubInfo());
2080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mCommandsInterface = ((PhoneBase)mActivePhone).mCM;
210e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka        mIccCardProxy.setVoiceRadioTech(newVoiceRadioTech);
2110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        // Send an Intent to the PhoneApp that we had a radio technology change
2130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Intent intent = new Intent(TelephonyIntents.ACTION_RADIO_TECHNOLOGY_CHANGED);
2140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        intent.addFlags(Intent.FLAG_RECEIVER_REPLACE_PENDING);
2150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        intent.putExtra(PhoneConstants.PHONE_NAME_KEY, mActivePhone.getPhoneName());
216cbbf6deee30d702e398939f4bb464f5e821f5e6cDianne Hackborn        ActivityManagerNative.broadcastStickyIntent(intent, null, UserHandle.USER_ALL);
2170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    private void deleteAndCreatePhone(int newVoiceRadioTech) {
2210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        String outgoingPhoneName = "Unknown";
2230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Phone oldPhone = mActivePhone;
2240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        if (oldPhone != null) {
2260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            outgoingPhoneName = ((PhoneBase) oldPhone).getPhoneName();
2270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
2280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        logd("Switching Voice Phone : " + outgoingPhoneName + " >>> "
2300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                + (ServiceState.isGsm(newVoiceRadioTech) ? "GSM" : "CDMA"));
2310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        if (oldPhone != null) {
2330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            CallManager.getInstance().unregisterPhone(oldPhone);
2340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            logd("Disposing old phone..");
2350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            oldPhone.dispose();
2360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
2370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        // Give the garbage collector a hint to start the garbage collection
2390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        // asap NOTE this has been disabled since radio technology change could
2400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        // happen during e.g. a multimedia playing and could slow the system.
2410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        // Tests needs to be done to see the effects of the GC call here when
2420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        // system is busy.
2430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        // System.gc();
2440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        if (ServiceState.isCdma(newVoiceRadioTech)) {
2460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mActivePhone = PhoneFactory.getCdmaPhone();
2470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } else if (ServiceState.isGsm(newVoiceRadioTech)) {
2480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mActivePhone = PhoneFactory.getGsmPhone();
2490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
2500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        if (oldPhone != null) {
2520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            oldPhone.removeReferences();
2530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
2540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        if(mActivePhone != null) {
2560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            CallManager.getInstance().registerPhone(mActivePhone);
2570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
2580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        oldPhone = null;
2600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public ServiceState getServiceState() {
2630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.getServiceState();
2640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public CellLocation getCellLocation() {
2670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.getCellLocation();
2680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
270ef1d4bff9bbf7d967dbcace73f08910e14e367d0Wink Saville    /**
271ef1d4bff9bbf7d967dbcace73f08910e14e367d0Wink Saville     * @return all available cell information or null if none.
272ef1d4bff9bbf7d967dbcace73f08910e14e367d0Wink Saville     */
273ef1d4bff9bbf7d967dbcace73f08910e14e367d0Wink Saville    @Override
274ef1d4bff9bbf7d967dbcace73f08910e14e367d0Wink Saville    public List<CellInfo> getAllCellInfo() {
275ef1d4bff9bbf7d967dbcace73f08910e14e367d0Wink Saville        return mActivePhone.getAllCellInfo();
276ef1d4bff9bbf7d967dbcace73f08910e14e367d0Wink Saville    }
277ef1d4bff9bbf7d967dbcace73f08910e14e367d0Wink Saville
2780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public PhoneConstants.DataState getDataConnectionState() {
2790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.getDataConnectionState(PhoneConstants.APN_TYPE_DEFAULT);
2800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public PhoneConstants.DataState getDataConnectionState(String apnType) {
2830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.getDataConnectionState(apnType);
2840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public DataActivityState getDataActivityState() {
2870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.getDataActivityState();
2880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public Context getContext() {
2910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.getContext();
2920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void disableDnsCheck(boolean b) {
2950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.disableDnsCheck(b);
2960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public boolean isDnsCheckDisabled() {
2990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.isDnsCheckDisabled();
3000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public PhoneConstants.State getState() {
3030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.getState();
3040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public String getPhoneName() {
3070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.getPhoneName();
3080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public int getPhoneType() {
3110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.getPhoneType();
3120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public String[] getActiveApnTypes() {
3150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.getActiveApnTypes();
3160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public String getActiveApnHost(String apnType) {
3190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.getActiveApnHost(apnType);
3200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public LinkProperties getLinkProperties(String apnType) {
3230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.getLinkProperties(apnType);
3240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public LinkCapabilities getLinkCapabilities(String apnType) {
3270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.getLinkCapabilities(apnType);
3280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public SignalStrength getSignalStrength() {
3310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.getSignalStrength();
3320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForUnknownConnection(Handler h, int what, Object obj) {
3350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.registerForUnknownConnection(h, what, obj);
3360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForUnknownConnection(Handler h) {
3390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.unregisterForUnknownConnection(h);
3400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForPreciseCallStateChanged(Handler h, int what, Object obj) {
3430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.registerForPreciseCallStateChanged(h, what, obj);
3440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForPreciseCallStateChanged(Handler h) {
3470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.unregisterForPreciseCallStateChanged(h);
3480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForNewRingingConnection(Handler h, int what, Object obj) {
3510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.registerForNewRingingConnection(h, what, obj);
3520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForNewRingingConnection(Handler h) {
3550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.unregisterForNewRingingConnection(h);
3560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForIncomingRing(Handler h, int what, Object obj) {
3590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.registerForIncomingRing(h, what, obj);
3600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForIncomingRing(Handler h) {
3630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.unregisterForIncomingRing(h);
3640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForDisconnect(Handler h, int what, Object obj) {
3670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.registerForDisconnect(h, what, obj);
3680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForDisconnect(Handler h) {
3710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.unregisterForDisconnect(h);
3720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForMmiInitiate(Handler h, int what, Object obj) {
3750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.registerForMmiInitiate(h, what, obj);
3760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForMmiInitiate(Handler h) {
3790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.unregisterForMmiInitiate(h);
3800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForMmiComplete(Handler h, int what, Object obj) {
3830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.registerForMmiComplete(h, what, obj);
3840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForMmiComplete(Handler h) {
3870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.unregisterForMmiComplete(h);
3880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public List<? extends MmiCode> getPendingMmiCodes() {
3910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.getPendingMmiCodes();
3920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void sendUssdResponse(String ussdMessge) {
3950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.sendUssdResponse(ussdMessge);
3960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForServiceStateChanged(Handler h, int what, Object obj) {
3990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.registerForServiceStateChanged(h, what, obj);
4000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
4020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForServiceStateChanged(Handler h) {
4030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.unregisterForServiceStateChanged(h);
4040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
4060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForSuppServiceNotification(Handler h, int what, Object obj) {
4070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.registerForSuppServiceNotification(h, what, obj);
4080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
4100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForSuppServiceNotification(Handler h) {
4110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.unregisterForSuppServiceNotification(h);
4120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
4140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForSuppServiceFailed(Handler h, int what, Object obj) {
4150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.registerForSuppServiceFailed(h, what, obj);
4160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
4180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForSuppServiceFailed(Handler h) {
4190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.unregisterForSuppServiceFailed(h);
4200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
4220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForInCallVoicePrivacyOn(Handler h, int what, Object obj){
4230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.registerForInCallVoicePrivacyOn(h,what,obj);
4240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
4260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForInCallVoicePrivacyOn(Handler h){
4270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.unregisterForInCallVoicePrivacyOn(h);
4280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
4300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForInCallVoicePrivacyOff(Handler h, int what, Object obj){
4310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.registerForInCallVoicePrivacyOff(h,what,obj);
4320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
4340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForInCallVoicePrivacyOff(Handler h){
4350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.unregisterForInCallVoicePrivacyOff(h);
4360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
4380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForCdmaOtaStatusChange(Handler h, int what, Object obj) {
4390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.registerForCdmaOtaStatusChange(h,what,obj);
4400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
4420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForCdmaOtaStatusChange(Handler h) {
4430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville         mActivePhone.unregisterForCdmaOtaStatusChange(h);
4440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
4460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForSubscriptionInfoReady(Handler h, int what, Object obj) {
4470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.registerForSubscriptionInfoReady(h, what, obj);
4480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
4500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForSubscriptionInfoReady(Handler h) {
4510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.unregisterForSubscriptionInfoReady(h);
4520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
4540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForEcmTimerReset(Handler h, int what, Object obj) {
4550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.registerForEcmTimerReset(h,what,obj);
4560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
4580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForEcmTimerReset(Handler h) {
4590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.unregisterForEcmTimerReset(h);
4600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
4620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForRingbackTone(Handler h, int what, Object obj) {
4630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.registerForRingbackTone(h,what,obj);
4640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
4660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForRingbackTone(Handler h) {
4670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.unregisterForRingbackTone(h);
4680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
4700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForResendIncallMute(Handler h, int what, Object obj) {
4710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.registerForResendIncallMute(h,what,obj);
4720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
4740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForResendIncallMute(Handler h) {
4750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.unregisterForResendIncallMute(h);
4760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
4780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public boolean getIccRecordsLoaded() {
479e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka        return mIccCardProxy.getIccRecordsLoaded();
4800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
4820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public IccCard getIccCard() {
483e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka        return mIccCardProxy;
4840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
4860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void acceptCall() throws CallStateException {
4870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.acceptCall();
4880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
4900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void rejectCall() throws CallStateException {
4910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.rejectCall();
4920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
4940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void switchHoldingAndActive() throws CallStateException {
4950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.switchHoldingAndActive();
4960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
4980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public boolean canConference() {
4990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.canConference();
5000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
5020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void conference() throws CallStateException {
5030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.conference();
5040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
5060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void enableEnhancedVoicePrivacy(boolean enable, Message onComplete) {
5070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.enableEnhancedVoicePrivacy(enable, onComplete);
5080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
5100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void getEnhancedVoicePrivacy(Message onComplete) {
5110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.getEnhancedVoicePrivacy(onComplete);
5120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
5140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public boolean canTransfer() {
5150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.canTransfer();
5160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
5180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void explicitCallTransfer() throws CallStateException {
5190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.explicitCallTransfer();
5200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
5220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void clearDisconnected() {
5230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.clearDisconnected();
5240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
5260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public Call getForegroundCall() {
5270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.getForegroundCall();
5280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
5300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public Call getBackgroundCall() {
5310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.getBackgroundCall();
5320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
5340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public Call getRingingCall() {
5350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.getRingingCall();
5360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
5380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public Connection dial(String dialString) throws CallStateException {
5390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.dial(dialString);
5400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
5420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public Connection dial(String dialString, UUSInfo uusInfo) throws CallStateException {
5430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.dial(dialString, uusInfo);
5440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
5460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public boolean handlePinMmi(String dialString) {
5470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.handlePinMmi(dialString);
5480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
5500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public boolean handleInCallMmiCommands(String command) throws CallStateException {
5510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.handleInCallMmiCommands(command);
5520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
5540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void sendDtmf(char c) {
5550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.sendDtmf(c);
5560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
5580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void startDtmf(char c) {
5590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.startDtmf(c);
5600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
5620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void stopDtmf() {
5630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.stopDtmf();
5640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
5660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setRadioPower(boolean power) {
5670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.setRadioPower(power);
5680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
5700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public boolean getMessageWaitingIndicator() {
5710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.getMessageWaitingIndicator();
5720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
5740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public boolean getCallForwardingIndicator() {
5750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.getCallForwardingIndicator();
5760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
5780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public String getLine1Number() {
5790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.getLine1Number();
5800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
5820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public String getCdmaMin() {
5830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.getCdmaMin();
5840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
5860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public boolean isMinInfoReady() {
5870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.isMinInfoReady();
5880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
5900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public String getCdmaPrlVersion() {
5910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.getCdmaPrlVersion();
5920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
5940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public String getLine1AlphaTag() {
5950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.getLine1AlphaTag();
5960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
5980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setLine1Number(String alphaTag, String number, Message onComplete) {
5990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.setLine1Number(alphaTag, number, onComplete);
6000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
6020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public String getVoiceMailNumber() {
6030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.getVoiceMailNumber();
6040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
6060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     /** @hide */
6070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public int getVoiceMessageCount(){
6080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.getVoiceMessageCount();
6090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
6110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public String getVoiceMailAlphaTag() {
6120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.getVoiceMailAlphaTag();
6130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
6150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setVoiceMailNumber(String alphaTag,String voiceMailNumber,
6160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            Message onComplete) {
6170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.setVoiceMailNumber(alphaTag, voiceMailNumber, onComplete);
6180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
6200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void getCallForwardingOption(int commandInterfaceCFReason,
6210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            Message onComplete) {
6220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.getCallForwardingOption(commandInterfaceCFReason,
6230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                onComplete);
6240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
6260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setCallForwardingOption(int commandInterfaceCFReason,
6270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            int commandInterfaceCFAction, String dialingNumber,
6280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            int timerSeconds, Message onComplete) {
6290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.setCallForwardingOption(commandInterfaceCFReason,
6300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            commandInterfaceCFAction, dialingNumber, timerSeconds, onComplete);
6310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
6330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void getOutgoingCallerIdDisplay(Message onComplete) {
6340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.getOutgoingCallerIdDisplay(onComplete);
6350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
6370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setOutgoingCallerIdDisplay(int commandInterfaceCLIRMode,
6380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            Message onComplete) {
6390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.setOutgoingCallerIdDisplay(commandInterfaceCLIRMode,
6400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                onComplete);
6410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
6430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void getCallWaiting(Message onComplete) {
6440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.getCallWaiting(onComplete);
6450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
6470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setCallWaiting(boolean enable, Message onComplete) {
6480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.setCallWaiting(enable, onComplete);
6490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
6510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void getAvailableNetworks(Message response) {
6520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.getAvailableNetworks(response);
6530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
6550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setNetworkSelectionModeAutomatic(Message response) {
6560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.setNetworkSelectionModeAutomatic(response);
6570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
6590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void selectNetworkManually(OperatorInfo network, Message response) {
6600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.selectNetworkManually(network, response);
6610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
6630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setPreferredNetworkType(int networkType, Message response) {
6640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.setPreferredNetworkType(networkType, response);
6650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
6670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void getPreferredNetworkType(Message response) {
6680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.getPreferredNetworkType(response);
6690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
6710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void getNeighboringCids(Message response) {
6720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.getNeighboringCids(response);
6730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
6750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setOnPostDialCharacter(Handler h, int what, Object obj) {
6760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.setOnPostDialCharacter(h, what, obj);
6770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
6790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setMute(boolean muted) {
6800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.setMute(muted);
6810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
6830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public boolean getMute() {
6840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.getMute();
6850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
6870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setEchoSuppressionEnabled(boolean enabled) {
6880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.setEchoSuppressionEnabled(enabled);
6890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
6910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void invokeOemRilRequestRaw(byte[] data, Message response) {
6920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.invokeOemRilRequestRaw(data, response);
6930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
6950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void invokeOemRilRequestStrings(String[] strings, Message response) {
6960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.invokeOemRilRequestStrings(strings, response);
6970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
6990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void getDataCallList(Message response) {
7000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.getDataCallList(response);
7010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
7020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
7030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void updateServiceLocation() {
7040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.updateServiceLocation();
7050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
7060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
7070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void enableLocationUpdates() {
7080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.enableLocationUpdates();
7090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
7100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
7110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void disableLocationUpdates() {
7120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.disableLocationUpdates();
7130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
7140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
7150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setUnitTestMode(boolean f) {
7160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.setUnitTestMode(f);
7170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
7180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
7190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public boolean getUnitTestMode() {
7200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.getUnitTestMode();
7210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
7220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
7230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setBandMode(int bandMode, Message response) {
7240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.setBandMode(bandMode, response);
7250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
7260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
7270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void queryAvailableBandMode(Message response) {
7280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.queryAvailableBandMode(response);
7290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
7300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
7310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public boolean getDataRoamingEnabled() {
7320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.getDataRoamingEnabled();
7330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
7340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
7350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setDataRoamingEnabled(boolean enable) {
7360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.setDataRoamingEnabled(enable);
7370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
7380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
7390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void queryCdmaRoamingPreference(Message response) {
7400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.queryCdmaRoamingPreference(response);
7410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
7420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
7430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setCdmaRoamingPreference(int cdmaRoamingType, Message response) {
7440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.setCdmaRoamingPreference(cdmaRoamingType, response);
7450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
7460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
7470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setCdmaSubscription(int cdmaSubscriptionType, Message response) {
7480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.setCdmaSubscription(cdmaSubscriptionType, response);
7490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
7500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
7510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public SimulatedRadioControl getSimulatedRadioControl() {
7520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.getSimulatedRadioControl();
7530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
7540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
7550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public int enableApnType(String type) {
7560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.enableApnType(type);
7570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
7580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
7590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public int disableApnType(String type) {
7600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.disableApnType(type);
7610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
7620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
7630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public boolean isDataConnectivityPossible() {
7640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.isDataConnectivityPossible(PhoneConstants.APN_TYPE_DEFAULT);
7650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
7660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
7670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public boolean isDataConnectivityPossible(String apnType) {
7680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.isDataConnectivityPossible(apnType);
7690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
7700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
7710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public String getDeviceId() {
7720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.getDeviceId();
7730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
7740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
7750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public String getDeviceSvn() {
7760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.getDeviceSvn();
7770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
7780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
7790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public String getSubscriberId() {
7800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.getSubscriberId();
7810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
7820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
7830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public String getIccSerialNumber() {
7840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.getIccSerialNumber();
7850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
7860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
7870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public String getEsn() {
7880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.getEsn();
7890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
7900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
7910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public String getMeid() {
7920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.getMeid();
7930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
7940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
7950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public String getMsisdn() {
7960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.getMsisdn();
7970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
7980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
7990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public String getImei() {
8000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.getImei();
8010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
8020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
8030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public PhoneSubInfo getPhoneSubInfo(){
8040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.getPhoneSubInfo();
8050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
8060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
8070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public IccSmsInterfaceManager getIccSmsInterfaceManager(){
8080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.getIccSmsInterfaceManager();
8090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
8100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
8110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public IccPhoneBookInterfaceManager getIccPhoneBookInterfaceManager(){
8120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.getIccPhoneBookInterfaceManager();
8130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
8140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
8150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setTTYMode(int ttyMode, Message onComplete) {
8160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.setTTYMode(ttyMode, onComplete);
8170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
8180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
8190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void queryTTYMode(Message onComplete) {
8200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.queryTTYMode(onComplete);
8210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
8220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
8230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void activateCellBroadcastSms(int activate, Message response) {
8240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.activateCellBroadcastSms(activate, response);
8250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
8260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
8270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void getCellBroadcastSmsConfig(Message response) {
8280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.getCellBroadcastSmsConfig(response);
8290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
8300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
8310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setCellBroadcastSmsConfig(int[] configValuesArray, Message response) {
8320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.setCellBroadcastSmsConfig(configValuesArray, response);
8330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
8340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
8350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void notifyDataActivity() {
8360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville         mActivePhone.notifyDataActivity();
8370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
8380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
8390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void getSmscAddress(Message result) {
8400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.getSmscAddress(result);
8410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
8420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
8430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setSmscAddress(String address, Message result) {
8440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.setSmscAddress(address, result);
8450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
8460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
8470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public int getCdmaEriIconIndex() {
8480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.getCdmaEriIconIndex();
8490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
8500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
8510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public String getCdmaEriText() {
8520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.getCdmaEriText();
8530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
8540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
8550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public int getCdmaEriIconMode() {
8560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.getCdmaEriIconMode();
8570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
8580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
8590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public Phone getActivePhone() {
8600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone;
8610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
8620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
8630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void sendBurstDtmf(String dtmfString, int on, int off, Message onComplete){
8640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.sendBurstDtmf(dtmfString, on, off, onComplete);
8650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
8660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
8670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void exitEmergencyCallbackMode(){
8680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.exitEmergencyCallbackMode();
8690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
8700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
8710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public boolean needsOtaServiceProvisioning(){
8720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.needsOtaServiceProvisioning();
8730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
8740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
8750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public boolean isOtaSpNumber(String dialStr){
8760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.isOtaSpNumber(dialStr);
8770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
8780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
8790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForCallWaiting(Handler h, int what, Object obj){
8800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.registerForCallWaiting(h,what,obj);
8810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
8820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
8830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForCallWaiting(Handler h){
8840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.unregisterForCallWaiting(h);
8850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
8860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
8870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForSignalInfo(Handler h, int what, Object obj) {
8880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.registerForSignalInfo(h,what,obj);
8890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
8900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
8910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForSignalInfo(Handler h) {
8920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.unregisterForSignalInfo(h);
8930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
8940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
8950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForDisplayInfo(Handler h, int what, Object obj) {
8960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.registerForDisplayInfo(h,what,obj);
8970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
8980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
8990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForDisplayInfo(Handler h) {
9000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.unregisterForDisplayInfo(h);
9010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
9020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
9030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForNumberInfo(Handler h, int what, Object obj) {
9040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.registerForNumberInfo(h, what, obj);
9050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
9060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
9070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForNumberInfo(Handler h) {
9080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.unregisterForNumberInfo(h);
9090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
9100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
9110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForRedirectedNumberInfo(Handler h, int what, Object obj) {
9120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.registerForRedirectedNumberInfo(h, what, obj);
9130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
9140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
9150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForRedirectedNumberInfo(Handler h) {
9160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.unregisterForRedirectedNumberInfo(h);
9170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
9180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
9190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForLineControlInfo(Handler h, int what, Object obj) {
9200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.registerForLineControlInfo( h, what, obj);
9210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
9220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
9230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForLineControlInfo(Handler h) {
9240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.unregisterForLineControlInfo(h);
9250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
9260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
9270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerFoT53ClirlInfo(Handler h, int what, Object obj) {
9280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.registerFoT53ClirlInfo(h, what, obj);
9290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
9300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
9310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForT53ClirInfo(Handler h) {
9320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.unregisterForT53ClirInfo(h);
9330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
9340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
9350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForT53AudioControlInfo(Handler h, int what, Object obj) {
9360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.registerForT53AudioControlInfo( h, what, obj);
9370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
9380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
9390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForT53AudioControlInfo(Handler h) {
9400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.unregisterForT53AudioControlInfo(h);
9410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
9420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
9430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setOnEcbModeExitResponse(Handler h, int what, Object obj){
9440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.setOnEcbModeExitResponse(h,what,obj);
9450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
9460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
9470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unsetOnEcbModeExitResponse(Handler h){
9480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.unsetOnEcbModeExitResponse(h);
9490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
9500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
9510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public boolean isCspPlmnEnabled() {
9520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.isCspPlmnEnabled();
9530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
9540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
9550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public IsimRecords getIsimRecords() {
9560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.getIsimRecords();
9570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
9580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
9590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void requestIsimAuthentication(String nonce, Message response) {
9600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.requestIsimAuthentication(nonce, response);
9610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
9620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
9630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
9640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * {@inheritDoc}
9650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
9660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Override
9670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public int getLteOnCdmaMode() {
9680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.getLteOnCdmaMode();
9690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
9700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
9710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Override
9720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setVoiceMessageWaiting(int line, int countWaiting) {
9730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone.setVoiceMessageWaiting(line, countWaiting);
9740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
9750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
9760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Override
9770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public UsimServiceTable getUsimServiceTable() {
9780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mActivePhone.getUsimServiceTable();
9790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
9800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
9810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void dispose() {
9820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mCommandsInterface.unregisterForOn(this);
9830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mCommandsInterface.unregisterForVoiceRadioTechChanged(this);
9840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mCommandsInterface.unregisterForRilConnected(this);
9850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
9860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
9870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void removeReferences() {
9880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mActivePhone = null;
9890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mCommandsInterface = null;
9900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
9910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville}
992