1ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang/* 2ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang * Copyright (C) 2010 The Android Open Source Project 3ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang * 4ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang * Licensed under the Apache License, Version 2.0 (the "License"); 5ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang * you may not use this file except in compliance with the License. 6ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang * You may obtain a copy of the License at 7ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang * 8ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang * http://www.apache.org/licenses/LICENSE-2.0 9ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang * 10ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang * Unless required by applicable law or agreed to in writing, software 11ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang * distributed under the License is distributed on an "AS IS" BASIS, 12ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang * See the License for the specific language governing permissions and 14ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang * limitations under the License. 15ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang */ 16ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 17ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wangpackage com.android.internal.telephony.sip; 18ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 19ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wangimport android.content.Context; 2037e65ebb7eb932e1a144b1cab262e11ca5fd109bRobert Greenwaltimport android.net.LinkProperties; 21ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wangimport android.os.AsyncResult; 22ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wangimport android.os.Handler; 23ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wangimport android.os.Message; 24ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wangimport android.os.Registrant; 25ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wangimport android.os.RegistrantList; 26ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wangimport android.os.SystemProperties; 27ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wangimport android.telephony.CellLocation; 28ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wangimport android.telephony.ServiceState; 29ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wangimport android.telephony.SignalStrength; 30ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wangimport android.util.Log; 31ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 32ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wangimport com.android.internal.telephony.Call; 33ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wangimport com.android.internal.telephony.CallStateException; 34ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wangimport com.android.internal.telephony.Connection; 35ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wangimport com.android.internal.telephony.DataConnection; 36ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wangimport com.android.internal.telephony.IccCard; 37ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wangimport com.android.internal.telephony.IccFileHandler; 38ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wangimport com.android.internal.telephony.IccPhoneBookInterfaceManager; 39ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wangimport com.android.internal.telephony.IccSmsInterfaceManager; 40ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wangimport com.android.internal.telephony.MmiCode; 413caa1bd1061df4029951e68d0a04d5e30928701fRobert Greenwaltimport com.android.internal.telephony.OperatorInfo; 42ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wangimport com.android.internal.telephony.Phone; 43ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wangimport com.android.internal.telephony.PhoneBase; 44ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wangimport com.android.internal.telephony.PhoneNotifier; 45ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wangimport com.android.internal.telephony.PhoneSubInfo; 46ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wangimport com.android.internal.telephony.TelephonyProperties; 4788e590fb370d80d863417aae9330c8c2218f3175Chung-yih Wangimport com.android.internal.telephony.UUSInfo; 48ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 49ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wangimport java.util.ArrayList; 50ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wangimport java.util.List; 51ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 52ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wangabstract class SipPhoneBase extends PhoneBase { 53aeba1bc0c333f145469fc17a10c0bbcebd6dc30bHung-ying Tyan private static final String LOG_TAG = "SipPhone"; 54ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 55aeba1bc0c333f145469fc17a10c0bbcebd6dc30bHung-ying Tyan private RegistrantList mRingbackRegistrants = new RegistrantList(); 56ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang private State state = State.IDLE; 57ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 58ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public SipPhoneBase(Context context, PhoneNotifier notifier) { 59ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang super(notifier, context, new SipCommandInterface(context), false); 60ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 61ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 62ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public abstract Call getForegroundCall(); 63ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 64ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public abstract Call getBackgroundCall(); 65ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 66ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public abstract Call getRingingCall(); 67ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 68ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public Connection dial(String dialString, UUSInfo uusInfo) 69ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang throws CallStateException { 70ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang // ignore UUSInfo 71ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang return dial(dialString); 72ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 73ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 74ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang void migrateFrom(SipPhoneBase from) { 75ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang migrate(mRingbackRegistrants, from.mRingbackRegistrants); 76ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang migrate(mPreciseCallStateRegistrants, from.mPreciseCallStateRegistrants); 77ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang migrate(mNewRingingConnectionRegistrants, from.mNewRingingConnectionRegistrants); 78ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang migrate(mIncomingRingRegistrants, from.mIncomingRingRegistrants); 79ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang migrate(mDisconnectRegistrants, from.mDisconnectRegistrants); 80ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang migrate(mServiceStateRegistrants, from.mServiceStateRegistrants); 81ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang migrate(mMmiCompleteRegistrants, from.mMmiCompleteRegistrants); 82ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang migrate(mMmiRegistrants, from.mMmiRegistrants); 83ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang migrate(mUnknownConnectionRegistrants, from.mUnknownConnectionRegistrants); 84ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang migrate(mSuppServiceFailedRegistrants, from.mSuppServiceFailedRegistrants); 85ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 86ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 87ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang static void migrate(RegistrantList to, RegistrantList from) { 88ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang from.removeCleared(); 89ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang for (int i = 0, n = from.size(); i < n; i++) { 90ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang to.add((Registrant) from.get(i)); 91ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 92ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 93ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 94ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang @Override 95ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public void registerForRingbackTone(Handler h, int what, Object obj) { 96ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang mRingbackRegistrants.addUnique(h, what, obj); 97ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 98ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 99ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang @Override 100ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public void unregisterForRingbackTone(Handler h) { 101ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang mRingbackRegistrants.remove(h); 102ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 103ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 104ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang protected void startRingbackTone() { 1055644b080741bb4fae103617ecbea7a62b0262a56Kenny Root AsyncResult result = new AsyncResult(null, Boolean.TRUE, null); 106ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang mRingbackRegistrants.notifyRegistrants(result); 107ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 108ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 109ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang protected void stopRingbackTone() { 1105644b080741bb4fae103617ecbea7a62b0262a56Kenny Root AsyncResult result = new AsyncResult(null, Boolean.FALSE, null); 111ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang mRingbackRegistrants.notifyRegistrants(result); 112ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 113ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 114ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public ServiceState getServiceState() { 115ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang // FIXME: we may need to provide this when data connectivity is lost 116ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang // or when server is down 117ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang ServiceState s = new ServiceState(); 118ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang s.setState(ServiceState.STATE_IN_SERVICE); 119ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang return s; 120ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 121ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 122ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public CellLocation getCellLocation() { 123aeba1bc0c333f145469fc17a10c0bbcebd6dc30bHung-ying Tyan return null; 124ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 125ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 126ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public State getState() { 127ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang return state; 128ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 129ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 130ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public int getPhoneType() { 1318744f879852a74885e1c56a65cd65a28b6a5fa7aHung-ying Tyan return Phone.PHONE_TYPE_SIP; 132ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 133ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 134ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public SignalStrength getSignalStrength() { 135ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang return new SignalStrength(); 136ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 137ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 138ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public boolean getMessageWaitingIndicator() { 139ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang return false; 140ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 141ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 142ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public boolean getCallForwardingIndicator() { 143ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang return false; 144ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 145ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 146ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public List<? extends MmiCode> getPendingMmiCodes() { 147ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang return new ArrayList<MmiCode>(0); 148ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 149ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 150ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public DataState getDataConnectionState() { 151ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang return DataState.DISCONNECTED; 152ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 153ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 154ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public DataState getDataConnectionState(String apnType) { 155ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang return DataState.DISCONNECTED; 156ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 157ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 158ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public DataActivityState getDataActivityState() { 159ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang return DataActivityState.NONE; 160ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 161ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 162ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang /** 163ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang * Notify any interested party of a Phone state change {@link Phone.State} 164ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang */ 165ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang void notifyPhoneStateChanged() { 166ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang mNotifier.notifyPhoneState(this); 167ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 168ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 169ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang /** 170ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang * Notify registrants of a change in the call state. This notifies changes in {@link Call.State} 171ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang * Use this when changes in the precise call state are needed, else use notifyPhoneStateChanged. 172ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang */ 173ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang void notifyPreciseCallStateChanged() { 174ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang /* we'd love it if this was package-scoped*/ 175ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang super.notifyPreciseCallStateChangedP(); 176ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 177ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 178ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang void notifyNewRingingConnection(Connection c) { 179ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang super.notifyNewRingingConnectionP(c); 180ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 181ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 182ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang void notifyDisconnect(Connection cn) { 183ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang mDisconnectRegistrants.notifyResult(cn); 184ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 185ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 186ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang void notifyUnknownConnection() { 187ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang mUnknownConnectionRegistrants.notifyResult(this); 188ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 189ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 190ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang void notifySuppServiceFailed(SuppService code) { 191ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang mSuppServiceFailedRegistrants.notifyResult(code); 192ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 193ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 194ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang void notifyServiceStateChanged(ServiceState ss) { 195ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang super.notifyServiceStateChangedP(ss); 196ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 197ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 198ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public void notifyCallForwardingIndicator() { 199ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang mNotifier.notifyCallForwardingChanged(this); 200ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 201ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 202ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public boolean canDial() { 203ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang int serviceState = getServiceState().getState(); 204ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang Log.v(LOG_TAG, "canDial(): serviceState = " + serviceState); 205ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang if (serviceState == ServiceState.STATE_POWER_OFF) return false; 206ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 207ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang String disableCall = SystemProperties.get( 208ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang TelephonyProperties.PROPERTY_DISABLE_CALL, "false"); 209ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang Log.v(LOG_TAG, "canDial(): disableCall = " + disableCall); 210ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang if (disableCall.equals("true")) return false; 211ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 212ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang Log.v(LOG_TAG, "canDial(): ringingCall: " + getRingingCall().getState()); 213ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang Log.v(LOG_TAG, "canDial(): foregndCall: " + getForegroundCall().getState()); 214ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang Log.v(LOG_TAG, "canDial(): backgndCall: " + getBackgroundCall().getState()); 215ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang return !getRingingCall().isRinging() 216ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang && (!getForegroundCall().getState().isAlive() 217ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang || !getBackgroundCall().getState().isAlive()); 218ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 219ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 220ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public boolean handleInCallMmiCommands(String dialString) 221ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang throws CallStateException { 222ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang return false; 223ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 224ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 225ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang boolean isInCall() { 226ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang Call.State foregroundCallState = getForegroundCall().getState(); 227ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang Call.State backgroundCallState = getBackgroundCall().getState(); 228ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang Call.State ringingCallState = getRingingCall().getState(); 229ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 230ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang return (foregroundCallState.isAlive() || backgroundCallState.isAlive() 231ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang || ringingCallState.isAlive()); 232ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 233ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 234ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public boolean handlePinMmi(String dialString) { 235ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang return false; 236ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 237ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 238ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public void sendUssdResponse(String ussdMessge) { 239ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 240ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 241ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public void registerForSuppServiceNotification( 242ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang Handler h, int what, Object obj) { 243ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 244ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 245ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public void unregisterForSuppServiceNotification(Handler h) { 246ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 247ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 248ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public void setRadioPower(boolean power) { 249ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 250ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 251ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public String getVoiceMailNumber() { 252ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang return null; 253ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 254ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 255ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public String getVoiceMailAlphaTag() { 256ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang return null; 257ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 258ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 259ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public String getDeviceId() { 260ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang return null; 261ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 262ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 263ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public String getDeviceSvn() { 264ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang return null; 265ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 266ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 2672ea7e443b27ff185104b8a8b5e7a08b5510125bdJohn Wang public String getImei() { 2682ea7e443b27ff185104b8a8b5e7a08b5510125bdJohn Wang return null; 2692ea7e443b27ff185104b8a8b5e7a08b5510125bdJohn Wang } 2702ea7e443b27ff185104b8a8b5e7a08b5510125bdJohn Wang 271ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public String getEsn() { 272ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang Log.e(LOG_TAG, "[SipPhone] getEsn() is a CDMA method"); 273ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang return "0"; 274ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 275ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 276ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public String getMeid() { 277ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang Log.e(LOG_TAG, "[SipPhone] getMeid() is a CDMA method"); 278ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang return "0"; 279ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 280ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 281ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public String getSubscriberId() { 282ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang return null; 283ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 284ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 285ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public String getIccSerialNumber() { 286ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang return null; 287ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 288ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 289ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public String getLine1Number() { 290ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang return null; 291ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 292ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 293ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public String getLine1AlphaTag() { 294ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang return null; 295ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 296ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 297ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public void setLine1Number(String alphaTag, String number, Message onComplete) { 298ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang // FIXME: what to reply for SIP? 299ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang AsyncResult.forMessage(onComplete, null, null); 300ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang onComplete.sendToTarget(); 301ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 302ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 303ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public void setVoiceMailNumber(String alphaTag, String voiceMailNumber, 304ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang Message onComplete) { 305ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang // FIXME: what to reply for SIP? 306ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang AsyncResult.forMessage(onComplete, null, null); 307ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang onComplete.sendToTarget(); 308ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 309ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 310ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public void getCallForwardingOption(int commandInterfaceCFReason, Message onComplete) { 311ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 312ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 313ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public void setCallForwardingOption(int commandInterfaceCFAction, 314ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang int commandInterfaceCFReason, String dialingNumber, 315ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang int timerSeconds, Message onComplete) { 316ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 317ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 318ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public void getOutgoingCallerIdDisplay(Message onComplete) { 319ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang // FIXME: what to reply? 320ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang AsyncResult.forMessage(onComplete, null, null); 321ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang onComplete.sendToTarget(); 322ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 323ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 324ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public void setOutgoingCallerIdDisplay(int commandInterfaceCLIRMode, 325ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang Message onComplete) { 326ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang // FIXME: what's this for SIP? 327ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang AsyncResult.forMessage(onComplete, null, null); 328ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang onComplete.sendToTarget(); 329ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 330ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 331ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public void getCallWaiting(Message onComplete) { 332ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang AsyncResult.forMessage(onComplete, null, null); 333ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang onComplete.sendToTarget(); 334ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 335ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 336ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public void setCallWaiting(boolean enable, Message onComplete) { 337ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang Log.e(LOG_TAG, "call waiting not supported"); 338ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 339ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 340ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public boolean getIccRecordsLoaded() { 341ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang return false; 342ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 343ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 344ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public IccCard getIccCard() { 345ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang return null; 346ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 347ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 348ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public void getAvailableNetworks(Message response) { 349ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 350ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 351ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public void setNetworkSelectionModeAutomatic(Message response) { 352ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 353ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 354ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public void selectNetworkManually( 3553caa1bd1061df4029951e68d0a04d5e30928701fRobert Greenwalt OperatorInfo network, 356ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang Message response) { 357ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 358ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 359ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public void getNeighboringCids(Message response) { 360ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 361ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 362ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public void setOnPostDialCharacter(Handler h, int what, Object obj) { 363ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 364ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 365ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public void getDataCallList(Message response) { 366ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 367ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 368ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public List<DataConnection> getCurrentDataConnectionList () { 369ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang return null; 370ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 371ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 372ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public void updateServiceLocation() { 373ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 374ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 375ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public void enableLocationUpdates() { 376ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 377ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 378ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public void disableLocationUpdates() { 379ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 380ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 381ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public boolean getDataRoamingEnabled() { 382ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang return false; 383ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 384ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 385ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public void setDataRoamingEnabled(boolean enable) { 386ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 387ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 388ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public boolean enableDataConnectivity() { 389ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang return false; 390ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 391ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 392ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public boolean disableDataConnectivity() { 393ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang return false; 394ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 395ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 396ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public boolean isDataConnectivityPossible() { 397ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang return false; 398ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 399ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 400ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang boolean updateCurrentCarrierInProvider() { 401ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang return false; 402ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 403ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 404ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public void saveClirSetting(int commandInterfaceCLIRMode) { 405ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 406ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 407ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public PhoneSubInfo getPhoneSubInfo(){ 408aeba1bc0c333f145469fc17a10c0bbcebd6dc30bHung-ying Tyan return null; 409ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 410ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 411ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public IccSmsInterfaceManager getIccSmsInterfaceManager(){ 412ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang return null; 413ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 414ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 415ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public IccPhoneBookInterfaceManager getIccPhoneBookInterfaceManager(){ 416ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang return null; 417ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 418ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 419ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public IccFileHandler getIccFileHandler(){ 420ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang return null; 421ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 422ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 423ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public void activateCellBroadcastSms(int activate, Message response) { 424ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang Log.e(LOG_TAG, "Error! This functionality is not implemented for SIP."); 425ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 426ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 427ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public void getCellBroadcastSmsConfig(Message response) { 428ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang Log.e(LOG_TAG, "Error! This functionality is not implemented for SIP."); 429ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 430ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 431ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang public void setCellBroadcastSmsConfig(int[] configValuesArray, Message response){ 432ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang Log.e(LOG_TAG, "Error! This functionality is not implemented for SIP."); 433ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 434ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 43588e590fb370d80d863417aae9330c8c2218f3175Chung-yih Wang //@Override 43688e590fb370d80d863417aae9330c8c2218f3175Chung-yih Wang public boolean needsOtaServiceProvisioning() { 43788e590fb370d80d863417aae9330c8c2218f3175Chung-yih Wang // FIXME: what's this for SIP? 43888e590fb370d80d863417aae9330c8c2218f3175Chung-yih Wang return false; 43988e590fb370d80d863417aae9330c8c2218f3175Chung-yih Wang } 44088e590fb370d80d863417aae9330c8c2218f3175Chung-yih Wang 44188e590fb370d80d863417aae9330c8c2218f3175Chung-yih Wang //@Override 44237e65ebb7eb932e1a144b1cab262e11ca5fd109bRobert Greenwalt public LinkProperties getLinkProperties(String apnType) { 44388e590fb370d80d863417aae9330c8c2218f3175Chung-yih Wang // FIXME: what's this for SIP? 44488e590fb370d80d863417aae9330c8c2218f3175Chung-yih Wang return null; 44588e590fb370d80d863417aae9330c8c2218f3175Chung-yih Wang } 44688e590fb370d80d863417aae9330c8c2218f3175Chung-yih Wang 447ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang void updatePhoneState() { 448ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang State oldState = state; 449ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 450ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang if (getRingingCall().isRinging()) { 451ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang state = State.RINGING; 452ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } else if (getForegroundCall().isIdle() 453ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang && getBackgroundCall().isIdle()) { 454ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang state = State.IDLE; 455ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } else { 456ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang state = State.OFFHOOK; 457ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 458ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang 459ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang if (state != oldState) { 460aeba1bc0c333f145469fc17a10c0bbcebd6dc30bHung-ying Tyan Log.d(LOG_TAG, " ^^^ new phone state: " + state); 461ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang notifyPhoneStateChanged(); 462ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 463ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang } 464ccd0b6953f5f77d1da5f540a3ba5ea71116e14f0Chung-yih Wang} 465