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