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 736bbcbfd62c9aa5787e7c33936e2246ff05b59d58Tyler Gunn public Connection dial(String dialString, UUSInfo uusInfo, int videoState) 740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville throws CallStateException { 750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // ignore UUSInfo 766bbcbfd62c9aa5787e7c33936e2246ff05b59d58Tyler Gunn return dial(dialString, videoState); 770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville void migrateFrom(SipPhoneBase from) { 80e64a413b850aae224e2f56e7dfc6e0bcd667643eUma Maheswari Ramalingam super.migrateFrom(from); 810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville migrate(mRingbackRegistrants, from.mRingbackRegistrants); 820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void registerForRingbackTone(Handler h, int what, Object obj) { 860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRingbackRegistrants.addUnique(h, what, obj); 870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void unregisterForRingbackTone(Handler h) { 910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRingbackRegistrants.remove(h); 920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville protected void startRingbackTone() { 950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult result = new AsyncResult(null, Boolean.TRUE, null); 960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRingbackRegistrants.notifyRegistrants(result); 970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville protected void stopRingbackTone() { 1000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult result = new AsyncResult(null, Boolean.FALSE, null); 1010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRingbackRegistrants.notifyRegistrants(result); 1020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 104cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 1050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public ServiceState getServiceState() { 1060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // FIXME: we may need to provide this when data connectivity is lost 1070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // or when server is down 1080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ServiceState s = new ServiceState(); 1090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville s.setState(ServiceState.STATE_IN_SERVICE); 1100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return s; 1110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 112ef1d4bff9bbf7d967dbcace73f08910e14e367d0Wink Saville 113cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 1140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public CellLocation getCellLocation() { 1150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return null; 1160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 118cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 1190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public PhoneConstants.State getState() { 12022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville return mState; 1210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 123cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 1240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public int getPhoneType() { 1250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return PhoneConstants.PHONE_TYPE_SIP; 1260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 128cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 1290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public SignalStrength getSignalStrength() { 1300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return new SignalStrength(); 1310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 133cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 1340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public boolean getMessageWaitingIndicator() { 1350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return false; 1360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 138cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 1390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public boolean getCallForwardingIndicator() { 1400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return false; 1410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 143cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 1440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public List<? extends MmiCode> getPendingMmiCodes() { 1450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return new ArrayList<MmiCode>(0); 1460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 148cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 1490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public PhoneConstants.DataState getDataConnectionState() { 1500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return PhoneConstants.DataState.DISCONNECTED; 1510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 153cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 1540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public PhoneConstants.DataState getDataConnectionState(String apnType) { 1550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return PhoneConstants.DataState.DISCONNECTED; 1560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 158cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 1590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public DataActivityState getDataActivityState() { 1600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return DataActivityState.NONE; 1610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 164cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville * Notify any interested party of a Phone state change 165cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville * {@link com.android.internal.telephony.PhoneConstants.State} 1660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 167cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville /* package */ void notifyPhoneStateChanged() { 1680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mNotifier.notifyPhoneState(this); 1690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 172cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville * Notify registrants of a change in the call state. This notifies changes in 173cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville * {@link com.android.internal.telephony.Call.State}. Use this when changes 174cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville * in the precise call state are needed, else use notifyPhoneStateChanged. 1750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 176cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville /* package */ void notifyPreciseCallStateChanged() { 1770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /* we'd love it if this was package-scoped*/ 1780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville super.notifyPreciseCallStateChangedP(); 1790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville void notifyNewRingingConnection(Connection c) { 1820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville super.notifyNewRingingConnectionP(c); 1830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville void notifyDisconnect(Connection cn) { 1860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mDisconnectRegistrants.notifyResult(cn); 1870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville void notifyUnknownConnection() { 1900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mUnknownConnectionRegistrants.notifyResult(this); 1910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville void notifySuppServiceFailed(SuppService code) { 1940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSuppServiceFailedRegistrants.notifyResult(code); 1950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville void notifyServiceStateChanged(ServiceState ss) { 1980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville super.notifyServiceStateChangedP(ss); 1990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 201cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 2020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void notifyCallForwardingIndicator() { 2030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mNotifier.notifyCallForwardingChanged(this); 2040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public boolean canDial() { 2070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int serviceState = getServiceState().getState(); 208ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.v(LOG_TAG, "canDial(): serviceState = " + serviceState); 2090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (serviceState == ServiceState.STATE_POWER_OFF) return false; 2100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String disableCall = SystemProperties.get( 2120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville TelephonyProperties.PROPERTY_DISABLE_CALL, "false"); 213ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.v(LOG_TAG, "canDial(): disableCall = " + disableCall); 2140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (disableCall.equals("true")) return false; 2150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 216ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.v(LOG_TAG, "canDial(): ringingCall: " + getRingingCall().getState()); 217ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.v(LOG_TAG, "canDial(): foregndCall: " + getForegroundCall().getState()); 218ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.v(LOG_TAG, "canDial(): backgndCall: " + getBackgroundCall().getState()); 2190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return !getRingingCall().isRinging() 2200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville && (!getForegroundCall().getState().isAlive() 2210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville || !getBackgroundCall().getState().isAlive()); 2220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 224cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 225cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville public boolean handleInCallMmiCommands(String dialString) { 2260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return false; 2270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean isInCall() { 2300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Call.State foregroundCallState = getForegroundCall().getState(); 2310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Call.State backgroundCallState = getBackgroundCall().getState(); 2320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Call.State ringingCallState = getRingingCall().getState(); 2330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return (foregroundCallState.isAlive() || backgroundCallState.isAlive() 2350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville || ringingCallState.isAlive()); 2360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 238cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 2390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public boolean handlePinMmi(String dialString) { 2400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return false; 2410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 243cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 2440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void sendUssdResponse(String ussdMessge) { 2450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 247cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 2480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void registerForSuppServiceNotification( 2490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Handler h, int what, Object obj) { 2500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 252cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 2530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void unregisterForSuppServiceNotification(Handler h) { 2540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 256cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 2570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setRadioPower(boolean power) { 2580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 260cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 2610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public String getVoiceMailNumber() { 2620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return null; 2630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 265cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 2660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public String getVoiceMailAlphaTag() { 2670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return null; 2680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 270cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 2710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public String getDeviceId() { 2720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return null; 2730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 275cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 2760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public String getDeviceSvn() { 2770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return null; 2780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 280cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 2810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public String getImei() { 2820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return null; 2830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 285cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 2860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public String getEsn() { 287ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.e(LOG_TAG, "[SipPhone] getEsn() is a CDMA method"); 2880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return "0"; 2890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 291cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 2920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public String getMeid() { 293ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.e(LOG_TAG, "[SipPhone] getMeid() is a CDMA method"); 2940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return "0"; 2950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 297cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 2980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public String getSubscriberId() { 2990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return null; 3000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 302cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 3030e4abef0d7e978d4c3dea5199f451a1c69158d03Sungmin Choi public String getGroupIdLevel1() { 3040e4abef0d7e978d4c3dea5199f451a1c69158d03Sungmin Choi return null; 3050e4abef0d7e978d4c3dea5199f451a1c69158d03Sungmin Choi } 3060e4abef0d7e978d4c3dea5199f451a1c69158d03Sungmin Choi 3070e4abef0d7e978d4c3dea5199f451a1c69158d03Sungmin Choi @Override 3080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public String getIccSerialNumber() { 3090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return null; 3100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 312cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 3130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public String getLine1Number() { 3140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return null; 3150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 317cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 3180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public String getLine1AlphaTag() { 3190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return null; 3200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 322cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 3230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setLine1Number(String alphaTag, String number, Message onComplete) { 3240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // FIXME: what to reply for SIP? 3250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(onComplete, null, null); 3260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville onComplete.sendToTarget(); 3270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 329cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 3300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setVoiceMailNumber(String alphaTag, String voiceMailNumber, 3310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Message onComplete) { 3320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // FIXME: what to reply for SIP? 3330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(onComplete, null, null); 3340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville onComplete.sendToTarget(); 3350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 337cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 3380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getCallForwardingOption(int commandInterfaceCFReason, Message onComplete) { 3390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 341cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 3420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setCallForwardingOption(int commandInterfaceCFAction, 3430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int commandInterfaceCFReason, String dialingNumber, 3440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int timerSeconds, Message onComplete) { 3450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 347cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 3480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getOutgoingCallerIdDisplay(Message onComplete) { 3490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // FIXME: what to reply? 3500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(onComplete, null, null); 3510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville onComplete.sendToTarget(); 3520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 354cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 3550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setOutgoingCallerIdDisplay(int commandInterfaceCLIRMode, 3560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Message onComplete) { 3570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // FIXME: what's this for SIP? 3580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(onComplete, null, null); 3590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville onComplete.sendToTarget(); 3600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 362cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 3630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getCallWaiting(Message onComplete) { 3640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(onComplete, null, null); 3650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville onComplete.sendToTarget(); 3660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 368cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 3690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setCallWaiting(boolean enable, Message onComplete) { 370ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.e(LOG_TAG, "call waiting not supported"); 3710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 373cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 3740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public boolean getIccRecordsLoaded() { 3750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return false; 3760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 378cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 3790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public IccCard getIccCard() { 3800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return null; 3810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 383cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 3840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getAvailableNetworks(Message response) { 3850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 387cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 3880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setNetworkSelectionModeAutomatic(Message response) { 3890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 391cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 3920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void selectNetworkManually( 3930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville OperatorInfo network, 3940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Message response) { 3950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 397cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 3980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getNeighboringCids(Message response) { 3990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 401cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 4020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setOnPostDialCharacter(Handler h, int what, Object obj) { 4030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 405cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 4060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getDataCallList(Message response) { 4070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 409ff4e317d24f0d23bdc0f306d53ddc51f2f1ecf6aWink Saville public List<DataConnection> getCurrentDataConnectionList () { 4100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return null; 4110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 413cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 4140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void updateServiceLocation() { 4150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 417cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 4180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void enableLocationUpdates() { 4190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 421cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 4220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void disableLocationUpdates() { 4230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 425cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 4260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public boolean getDataRoamingEnabled() { 4270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return false; 4280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 430cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 4310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setDataRoamingEnabled(boolean enable) { 4320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4343a6fa6e964a0cb361f79302afe18b8d7f5f9ceefRobert Greenwalt @Override 4353a6fa6e964a0cb361f79302afe18b8d7f5f9ceefRobert Greenwalt public boolean getDataEnabled() { 4363a6fa6e964a0cb361f79302afe18b8d7f5f9ceefRobert Greenwalt return false; 4373a6fa6e964a0cb361f79302afe18b8d7f5f9ceefRobert Greenwalt } 4383a6fa6e964a0cb361f79302afe18b8d7f5f9ceefRobert Greenwalt 4393a6fa6e964a0cb361f79302afe18b8d7f5f9ceefRobert Greenwalt @Override 4403a6fa6e964a0cb361f79302afe18b8d7f5f9ceefRobert Greenwalt public void setDataEnabled(boolean enable) { 4413a6fa6e964a0cb361f79302afe18b8d7f5f9ceefRobert Greenwalt } 4423a6fa6e964a0cb361f79302afe18b8d7f5f9ceefRobert Greenwalt 4430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public boolean enableDataConnectivity() { 4440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return false; 4450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public boolean disableDataConnectivity() { 4480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return false; 4490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 451cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 4520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public boolean isDataConnectivityPossible() { 4530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return false; 4540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean updateCurrentCarrierInProvider() { 4570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return false; 4580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void saveClirSetting(int commandInterfaceCLIRMode) { 4610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 463cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 4640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public PhoneSubInfo getPhoneSubInfo(){ 4650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return null; 4660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 468cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 4690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public IccPhoneBookInterfaceManager getIccPhoneBookInterfaceManager(){ 4700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return null; 4710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 473cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 4740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public IccFileHandler getIccFileHandler(){ 4750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return null; 4760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 478cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 4790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void activateCellBroadcastSms(int activate, Message response) { 480ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.e(LOG_TAG, "Error! This functionality is not implemented for SIP."); 4810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 483cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 4840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getCellBroadcastSmsConfig(Message response) { 485ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.e(LOG_TAG, "Error! This functionality is not implemented for SIP."); 4860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 488cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 4890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setCellBroadcastSmsConfig(int[] configValuesArray, Message response){ 490ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.e(LOG_TAG, "Error! This functionality is not implemented for SIP."); 4910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //@Override 494cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 4950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public boolean needsOtaServiceProvisioning() { 4960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // FIXME: what's this for SIP? 4970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return false; 4980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //@Override 501cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 5020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public LinkProperties getLinkProperties(String apnType) { 5030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // FIXME: what's this for SIP? 5040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return null; 5050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville void updatePhoneState() { 50822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville PhoneConstants.State oldState = mState; 5090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (getRingingCall().isRinging()) { 51122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville mState = PhoneConstants.State.RINGING; 5120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (getForegroundCall().isIdle() 5130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville && getBackgroundCall().isIdle()) { 51422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville mState = PhoneConstants.State.IDLE; 5150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 51622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville mState = PhoneConstants.State.OFFHOOK; 5170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 51922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville if (mState != oldState) { 52022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville Rlog.d(LOG_TAG, " ^^^ new phone state: " + mState); 5210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notifyPhoneStateChanged(); 5220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 524e0e2ebb5a50e580cbe6957dcafb3495a2d0a27f2Alex Yakavenka 525e0e2ebb5a50e580cbe6957dcafb3495a2d0a27f2Alex Yakavenka @Override 526e0e2ebb5a50e580cbe6957dcafb3495a2d0a27f2Alex Yakavenka protected void onUpdateIccAvailability() { 527e0e2ebb5a50e580cbe6957dcafb3495a2d0a27f2Alex Yakavenka } 5280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville} 529