10825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/*
20825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Copyright (C) 2010 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.sip;
180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
190825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.content.Context;
200825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.net.LinkProperties;
210825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.AsyncResult;
220825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.Handler;
230825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.Message;
240825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.Registrant;
250825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.RegistrantList;
260825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.SystemProperties;
27ef1d4bff9bbf7d967dbcace73f08910e14e367d0Wink Savilleimport android.telephony.CellInfo;
280825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.telephony.CellLocation;
290825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.telephony.ServiceState;
300825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.telephony.SignalStrength;
31ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Savilleimport android.telephony.Rlog;
320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
330825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.Call;
340825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.CallStateException;
350825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.Connection;
36ff4e317d24f0d23bdc0f306d53ddc51f2f1ecf6aWink Savilleimport com.android.internal.telephony.dataconnection.DataConnection;
370825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.IccCard;
380825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.IccPhoneBookInterfaceManager;
390825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.IccSmsInterfaceManager;
400825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.MmiCode;
410825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.OperatorInfo;
420825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.PhoneBase;
430825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.PhoneConstants;
440825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.PhoneNotifier;
450825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.PhoneSubInfo;
460825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.TelephonyProperties;
470825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.UUSInfo;
48d720945f2be5ea5fe0faf67e67d9ea0e184eba67Alex Yakavenkaimport com.android.internal.telephony.uicc.IccFileHandler;
490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
500825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.util.ArrayList;
510825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.util.List;
520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
530825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleabstract class SipPhoneBase extends PhoneBase {
54cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    private static final String LOG_TAG = "SipPhoneBase";
550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    private RegistrantList mRingbackRegistrants = new RegistrantList();
5722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville    private PhoneConstants.State mState = PhoneConstants.State.IDLE;
580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
59ff4e317d24f0d23bdc0f306d53ddc51f2f1ecf6aWink Saville    public SipPhoneBase(String name, Context context, PhoneNotifier notifier) {
60ff4e317d24f0d23bdc0f306d53ddc51f2f1ecf6aWink Saville        super(name, notifier, context, new SipCommandInterface(context), false);
610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
63cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public abstract Call getForegroundCall();
650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
66cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public abstract Call getBackgroundCall();
680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
69cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public abstract Call getRingingCall();
710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
72cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public Connection dial(String dialString, UUSInfo uusInfo)
740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            throws CallStateException {
750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        // ignore UUSInfo
760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return dial(dialString);
770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    void migrateFrom(SipPhoneBase from) {
800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        migrate(mRingbackRegistrants, from.mRingbackRegistrants);
810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        migrate(mPreciseCallStateRegistrants, from.mPreciseCallStateRegistrants);
820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        migrate(mNewRingingConnectionRegistrants, from.mNewRingingConnectionRegistrants);
830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        migrate(mIncomingRingRegistrants, from.mIncomingRingRegistrants);
840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        migrate(mDisconnectRegistrants, from.mDisconnectRegistrants);
850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        migrate(mServiceStateRegistrants, from.mServiceStateRegistrants);
860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        migrate(mMmiCompleteRegistrants, from.mMmiCompleteRegistrants);
870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        migrate(mMmiRegistrants, from.mMmiRegistrants);
880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        migrate(mUnknownConnectionRegistrants, from.mUnknownConnectionRegistrants);
890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        migrate(mSuppServiceFailedRegistrants, from.mSuppServiceFailedRegistrants);
900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    static void migrate(RegistrantList to, RegistrantList from) {
930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        from.removeCleared();
940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        for (int i = 0, n = from.size(); i < n; i++) {
950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            to.add((Registrant) from.get(i));
960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Override
1000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForRingbackTone(Handler h, int what, Object obj) {
1010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mRingbackRegistrants.addUnique(h, what, obj);
1020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Override
1050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForRingbackTone(Handler h) {
1060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mRingbackRegistrants.remove(h);
1070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected void startRingbackTone() {
1100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        AsyncResult result = new AsyncResult(null, Boolean.TRUE, null);
1110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mRingbackRegistrants.notifyRegistrants(result);
1120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    protected void stopRingbackTone() {
1150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        AsyncResult result = new AsyncResult(null, Boolean.FALSE, null);
1160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mRingbackRegistrants.notifyRegistrants(result);
1170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
119cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
1200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public ServiceState getServiceState() {
1210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        // FIXME: we may need to provide this when data connectivity is lost
1220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        // or when server is down
1230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        ServiceState s = new ServiceState();
1240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        s.setState(ServiceState.STATE_IN_SERVICE);
1250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return s;
1260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
127ef1d4bff9bbf7d967dbcace73f08910e14e367d0Wink Saville
128cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
1290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public CellLocation getCellLocation() {
1300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return null;
1310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
133cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
1340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public PhoneConstants.State getState() {
13522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville        return mState;
1360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
138cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
1390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public int getPhoneType() {
1400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return PhoneConstants.PHONE_TYPE_SIP;
1410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
143cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
1440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public SignalStrength getSignalStrength() {
1450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return new SignalStrength();
1460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
148cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
1490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public boolean getMessageWaitingIndicator() {
1500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return false;
1510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
153cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
1540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public boolean getCallForwardingIndicator() {
1550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return false;
1560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
158cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
1590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public List<? extends MmiCode> getPendingMmiCodes() {
1600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return new ArrayList<MmiCode>(0);
1610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
163cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
1640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public PhoneConstants.DataState getDataConnectionState() {
1650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return PhoneConstants.DataState.DISCONNECTED;
1660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
168cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
1690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public PhoneConstants.DataState getDataConnectionState(String apnType) {
1700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return PhoneConstants.DataState.DISCONNECTED;
1710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
173cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
1740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public DataActivityState getDataActivityState() {
1750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return DataActivityState.NONE;
1760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
179cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville     * Notify any interested party of a Phone state change
180cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville     * {@link com.android.internal.telephony.PhoneConstants.State}
1810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
182cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    /* package */ void notifyPhoneStateChanged() {
1830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mNotifier.notifyPhoneState(this);
1840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
187cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville     * Notify registrants of a change in the call state. This notifies changes in
188cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville     * {@link com.android.internal.telephony.Call.State}. Use this when changes
189cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville     * in the precise call state are needed, else use notifyPhoneStateChanged.
1900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
191cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    /* package */ void notifyPreciseCallStateChanged() {
1920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        /* we'd love it if this was package-scoped*/
1930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        super.notifyPreciseCallStateChangedP();
1940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    void notifyNewRingingConnection(Connection c) {
1970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        super.notifyNewRingingConnectionP(c);
1980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    void notifyDisconnect(Connection cn) {
2010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mDisconnectRegistrants.notifyResult(cn);
2020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    void notifyUnknownConnection() {
2050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mUnknownConnectionRegistrants.notifyResult(this);
2060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    void notifySuppServiceFailed(SuppService code) {
2090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mSuppServiceFailedRegistrants.notifyResult(code);
2100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    void notifyServiceStateChanged(ServiceState ss) {
2130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        super.notifyServiceStateChangedP(ss);
2140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
216cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
2170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void notifyCallForwardingIndicator() {
2180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mNotifier.notifyCallForwardingChanged(this);
2190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public boolean canDial() {
2220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        int serviceState = getServiceState().getState();
223ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville        Rlog.v(LOG_TAG, "canDial(): serviceState = " + serviceState);
2240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        if (serviceState == ServiceState.STATE_POWER_OFF) return false;
2250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        String disableCall = SystemProperties.get(
2270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                TelephonyProperties.PROPERTY_DISABLE_CALL, "false");
228ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville        Rlog.v(LOG_TAG, "canDial(): disableCall = " + disableCall);
2290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        if (disableCall.equals("true")) return false;
2300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
231ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville        Rlog.v(LOG_TAG, "canDial(): ringingCall: " + getRingingCall().getState());
232ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville        Rlog.v(LOG_TAG, "canDial(): foregndCall: " + getForegroundCall().getState());
233ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville        Rlog.v(LOG_TAG, "canDial(): backgndCall: " + getBackgroundCall().getState());
2340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return !getRingingCall().isRinging()
2350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                && (!getForegroundCall().getState().isAlive()
2360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    || !getBackgroundCall().getState().isAlive());
2370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
239cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
240cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    public boolean handleInCallMmiCommands(String dialString) {
2410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return false;
2420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    boolean isInCall() {
2450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Call.State foregroundCallState = getForegroundCall().getState();
2460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Call.State backgroundCallState = getBackgroundCall().getState();
2470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Call.State ringingCallState = getRingingCall().getState();
2480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville       return (foregroundCallState.isAlive() || backgroundCallState.isAlive()
2500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            || ringingCallState.isAlive());
2510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
253cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
2540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public boolean handlePinMmi(String dialString) {
2550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return false;
2560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
258cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
2590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void sendUssdResponse(String ussdMessge) {
2600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
262cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
2630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void registerForSuppServiceNotification(
2640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            Handler h, int what, Object obj) {
2650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
267cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
2680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void unregisterForSuppServiceNotification(Handler h) {
2690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
271cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
2720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setRadioPower(boolean power) {
2730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
275cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
2760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public String getVoiceMailNumber() {
2770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return null;
2780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
280cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
2810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public String getVoiceMailAlphaTag() {
2820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return null;
2830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
285cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
2860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public String getDeviceId() {
2870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return null;
2880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
290cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
2910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public String getDeviceSvn() {
2920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return null;
2930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
295cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
2960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public String getImei() {
2970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return null;
2980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
300cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
3010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public String getEsn() {
302ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville        Rlog.e(LOG_TAG, "[SipPhone] getEsn() is a CDMA method");
3030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return "0";
3040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
306cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
3070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public String getMeid() {
308ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville        Rlog.e(LOG_TAG, "[SipPhone] getMeid() is a CDMA method");
3090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return "0";
3100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
312cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
3130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public String getSubscriberId() {
3140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return null;
3150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
317cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
3180e4abef0d7e978d4c3dea5199f451a1c69158d03Sungmin Choi    public String getGroupIdLevel1() {
3190e4abef0d7e978d4c3dea5199f451a1c69158d03Sungmin Choi        return null;
3200e4abef0d7e978d4c3dea5199f451a1c69158d03Sungmin Choi    }
3210e4abef0d7e978d4c3dea5199f451a1c69158d03Sungmin Choi
3220e4abef0d7e978d4c3dea5199f451a1c69158d03Sungmin Choi    @Override
3230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public String getIccSerialNumber() {
3240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return null;
3250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
327cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
3280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public String getLine1Number() {
3290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return null;
3300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
332cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
3330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public String getLine1AlphaTag() {
3340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return null;
3350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
337cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
3380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setLine1Number(String alphaTag, String number, Message onComplete) {
3390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        // FIXME: what to reply for SIP?
3400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        AsyncResult.forMessage(onComplete, null, null);
3410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        onComplete.sendToTarget();
3420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
344cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
3450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setVoiceMailNumber(String alphaTag, String voiceMailNumber,
3460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            Message onComplete) {
3470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        // FIXME: what to reply for SIP?
3480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        AsyncResult.forMessage(onComplete, null, null);
3490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        onComplete.sendToTarget();
3500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
352cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
3530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void getCallForwardingOption(int commandInterfaceCFReason, Message onComplete) {
3540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
356cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
3570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setCallForwardingOption(int commandInterfaceCFAction,
3580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            int commandInterfaceCFReason, String dialingNumber,
3590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            int timerSeconds, Message onComplete) {
3600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
362cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
3630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void getOutgoingCallerIdDisplay(Message onComplete) {
3640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        // FIXME: what to reply?
3650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        AsyncResult.forMessage(onComplete, null, null);
3660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        onComplete.sendToTarget();
3670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
369cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
3700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setOutgoingCallerIdDisplay(int commandInterfaceCLIRMode,
3710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                                           Message onComplete) {
3720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        // FIXME: what's this for SIP?
3730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        AsyncResult.forMessage(onComplete, null, null);
3740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        onComplete.sendToTarget();
3750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
377cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
3780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void getCallWaiting(Message onComplete) {
3790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        AsyncResult.forMessage(onComplete, null, null);
3800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        onComplete.sendToTarget();
3810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
383cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
3840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setCallWaiting(boolean enable, Message onComplete) {
385ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville        Rlog.e(LOG_TAG, "call waiting not supported");
3860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
388cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
3890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public boolean getIccRecordsLoaded() {
3900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return false;
3910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
393cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
3940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public IccCard getIccCard() {
3950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return null;
3960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
398cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
3990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void getAvailableNetworks(Message response) {
4000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
402cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
4030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setNetworkSelectionModeAutomatic(Message response) {
4040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
406cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
4070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void selectNetworkManually(
4080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            OperatorInfo network,
4090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            Message response) {
4100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
412cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
4130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void getNeighboringCids(Message response) {
4140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
416cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
4170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setOnPostDialCharacter(Handler h, int what, Object obj) {
4180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
420cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
4210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void getDataCallList(Message response) {
4220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
424ff4e317d24f0d23bdc0f306d53ddc51f2f1ecf6aWink Saville    public List<DataConnection> getCurrentDataConnectionList () {
4250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return null;
4260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
428cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
4290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void updateServiceLocation() {
4300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
432cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
4330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void enableLocationUpdates() {
4340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
436cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
4370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void disableLocationUpdates() {
4380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
440cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
4410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public boolean getDataRoamingEnabled() {
4420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return false;
4430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
445cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
4460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setDataRoamingEnabled(boolean enable) {
4470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
4490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public boolean enableDataConnectivity() {
4500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return false;
4510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
4530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public boolean disableDataConnectivity() {
4540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return false;
4550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
457cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
4580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public boolean isDataConnectivityPossible() {
4590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return false;
4600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
4620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    boolean updateCurrentCarrierInProvider() {
4630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return false;
4640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
4660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void saveClirSetting(int commandInterfaceCLIRMode) {
4670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
469cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
4700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public PhoneSubInfo getPhoneSubInfo(){
4710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return null;
4720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
474cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
4750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public IccPhoneBookInterfaceManager getIccPhoneBookInterfaceManager(){
4760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return null;
4770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
479cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
4800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public IccFileHandler getIccFileHandler(){
4810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return null;
4820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
484cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
4850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void activateCellBroadcastSms(int activate, Message response) {
486ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville        Rlog.e(LOG_TAG, "Error! This functionality is not implemented for SIP.");
4870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
489cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
4900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void getCellBroadcastSmsConfig(Message response) {
491ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville        Rlog.e(LOG_TAG, "Error! This functionality is not implemented for SIP.");
4920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
494cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
4950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setCellBroadcastSmsConfig(int[] configValuesArray, Message response){
496ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville        Rlog.e(LOG_TAG, "Error! This functionality is not implemented for SIP.");
4970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
4990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    //@Override
500cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
5010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public boolean needsOtaServiceProvisioning() {
5020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        // FIXME: what's this for SIP?
5030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return false;
5040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
5060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    //@Override
507cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
5080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public LinkProperties getLinkProperties(String apnType) {
5090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        // FIXME: what's this for SIP?
5100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return null;
5110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
5130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    void updatePhoneState() {
51422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville        PhoneConstants.State oldState = mState;
5150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
5160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        if (getRingingCall().isRinging()) {
51722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville            mState = PhoneConstants.State.RINGING;
5180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } else if (getForegroundCall().isIdle()
5190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                && getBackgroundCall().isIdle()) {
52022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville            mState = PhoneConstants.State.IDLE;
5210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } else {
52222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville            mState = PhoneConstants.State.OFFHOOK;
5230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
5240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
52522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville        if (mState != oldState) {
52622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville            Rlog.d(LOG_TAG, " ^^^ new phone state: " + mState);
5270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            notifyPhoneStateChanged();
5280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
5290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
530e0e2ebb5a50e580cbe6957dcafb3495a2d0a27f2Alex Yakavenka
531e0e2ebb5a50e580cbe6957dcafb3495a2d0a27f2Alex Yakavenka    @Override
532e0e2ebb5a50e580cbe6957dcafb3495a2d0a27f2Alex Yakavenka    protected void onUpdateIccAvailability() {
533e0e2ebb5a50e580cbe6957dcafb3495a2d0a27f2Alex Yakavenka    }
5340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville}
535