1a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville/* 2a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville * Copyright (C) 2013 The Android Open Source Project 3a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville * 4a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville * Licensed under the Apache License, Version 2.0 (the "License"); 5a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville * you may not use this file except in compliance with the License. 6a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville * You may obtain a copy of the License at 7a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville * 8a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville * http://www.apache.org/licenses/LICENSE-2.0 9a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville * 10a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville * Unless required by applicable law or agreed to in writing, software 11a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville * distributed under the License is distributed on an "AS IS" BASIS, 12a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville * See the License for the specific language governing permissions and 14a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville * limitations under the License. 15a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville */ 16a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 17a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savillepackage com.android.internal.telephony.imsphone; 18a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 19a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport android.content.Context; 20a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport android.net.LinkProperties; 21a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport android.os.AsyncResult; 22a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport android.os.Handler; 23a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport android.os.Message; 24a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport android.os.RegistrantList; 25a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport android.os.SystemProperties; 268b38cd985149b459969dd2ac9e8013d852dc6760Sooraj Sasindranimport android.os.WorkSource; 27a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport android.telephony.CellInfo; 28a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport android.telephony.CellLocation; 2984de7198887db7ba56c5cfd1d653033e7b4631a9yinxuimport android.telephony.NetworkScanRequest; 3099e00ea846baea00e54d9d8c61b457a22a282cb7Jack Yuimport android.telephony.Rlog; 31a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport android.telephony.ServiceState; 32a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport android.telephony.SignalStrength; 33ad03bd3454a9dd0e8edb61b8794f07d8a26f8187Tyler Gunnimport android.util.Pair; 34a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 35fb4330692d332ee8ee4614a9500ae39efbe138d8Tyler Gunnimport com.android.internal.annotations.VisibleForTesting; 36a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport com.android.internal.telephony.Call; 37a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport com.android.internal.telephony.Connection; 38a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport com.android.internal.telephony.IccCard; 39a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport com.android.internal.telephony.IccPhoneBookInterfaceManager; 40a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport com.android.internal.telephony.MmiCode; 41a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport com.android.internal.telephony.OperatorInfo; 425d0d72d9b7dc34c93303f6732541bbb74fed53daEtan Cohenimport com.android.internal.telephony.Phone; 43a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport com.android.internal.telephony.PhoneConstants; 44a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport com.android.internal.telephony.PhoneNotifier; 45a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport com.android.internal.telephony.TelephonyProperties; 4699e00ea846baea00e54d9d8c61b457a22a282cb7Jack Yuimport com.android.internal.telephony.dataconnection.DataConnection; 47a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport com.android.internal.telephony.uicc.IccFileHandler; 48a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 49a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport java.util.ArrayList; 50a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport java.util.List; 51a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 521a87ab3d7170d618f048c4f5af8c7504a587aaa5Jack Yuabstract class ImsPhoneBase extends Phone { 53a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville private static final String LOG_TAG = "ImsPhoneBase"; 54a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 55a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville private RegistrantList mRingbackRegistrants = new RegistrantList(); 56a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville private RegistrantList mOnHoldRegistrants = new RegistrantList(); 576d91e295add44a5b7e611cb51401a20b3caa6571Pavel Zhamaitsiak private RegistrantList mTtyModeReceivedRegistrants = new RegistrantList(); 58a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville private PhoneConstants.State mState = PhoneConstants.State.IDLE; 59a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 60ffb90b77322fa64adbe79b976f1c16f3c9441753Amit Mahajan public ImsPhoneBase(String name, Context context, PhoneNotifier notifier, 61ffb90b77322fa64adbe79b976f1c16f3c9441753Amit Mahajan boolean unitTestMode) { 62ffb90b77322fa64adbe79b976f1c16f3c9441753Amit Mahajan super(name, notifier, context, new ImsPhoneCommandInterface(context), unitTestMode); 63a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 64a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 65a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 661a87ab3d7170d618f048c4f5af8c7504a587aaa5Jack Yu public void migrateFrom(Phone from) { 67e64a413b850aae224e2f56e7dfc6e0bcd667643eUma Maheswari Ramalingam super.migrateFrom(from); 68e64a413b850aae224e2f56e7dfc6e0bcd667643eUma Maheswari Ramalingam migrate(mRingbackRegistrants, ((ImsPhoneBase)from).mRingbackRegistrants); 69a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 70a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 71a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 72a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public void registerForRingbackTone(Handler h, int what, Object obj) { 73a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville mRingbackRegistrants.addUnique(h, what, obj); 74a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 75a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 76a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 77a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public void unregisterForRingbackTone(Handler h) { 78a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville mRingbackRegistrants.remove(h); 79a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 80a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 81c2b66d57e16623dffc2fe6d02ded4f24c014b6c8Amit Mahajan @Override 82c2b66d57e16623dffc2fe6d02ded4f24c014b6c8Amit Mahajan public void startRingbackTone() { 83a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville AsyncResult result = new AsyncResult(null, Boolean.TRUE, null); 84a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville mRingbackRegistrants.notifyRegistrants(result); 85a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 86a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 87c2b66d57e16623dffc2fe6d02ded4f24c014b6c8Amit Mahajan @Override 88c2b66d57e16623dffc2fe6d02ded4f24c014b6c8Amit Mahajan public void stopRingbackTone() { 89a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville AsyncResult result = new AsyncResult(null, Boolean.FALSE, null); 90a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville mRingbackRegistrants.notifyRegistrants(result); 91a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 92a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 93a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 94a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public void registerForOnHoldTone(Handler h, int what, Object obj) { 95a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville mOnHoldRegistrants.addUnique(h, what, obj); 96a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 97a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 98a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 99a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public void unregisterForOnHoldTone(Handler h) { 100a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville mOnHoldRegistrants.remove(h); 101a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 102a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 103ad03bd3454a9dd0e8edb61b8794f07d8a26f8187Tyler Gunn /** 104ad03bd3454a9dd0e8edb61b8794f07d8a26f8187Tyler Gunn * Signals all registrants that the remote hold tone should be started for a connection. 105ad03bd3454a9dd0e8edb61b8794f07d8a26f8187Tyler Gunn * 106ad03bd3454a9dd0e8edb61b8794f07d8a26f8187Tyler Gunn * @param cn The connection. 107ad03bd3454a9dd0e8edb61b8794f07d8a26f8187Tyler Gunn */ 108fb4330692d332ee8ee4614a9500ae39efbe138d8Tyler Gunn @VisibleForTesting 109fb4330692d332ee8ee4614a9500ae39efbe138d8Tyler Gunn public void startOnHoldTone(Connection cn) { 110ad03bd3454a9dd0e8edb61b8794f07d8a26f8187Tyler Gunn Pair<Connection, Boolean> result = new Pair<Connection, Boolean>(cn, Boolean.TRUE); 111ad03bd3454a9dd0e8edb61b8794f07d8a26f8187Tyler Gunn mOnHoldRegistrants.notifyRegistrants(new AsyncResult(null, result, null)); 112a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 113a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 114ad03bd3454a9dd0e8edb61b8794f07d8a26f8187Tyler Gunn /** 115ad03bd3454a9dd0e8edb61b8794f07d8a26f8187Tyler Gunn * Signals all registrants that the remote hold tone should be stopped for a connection. 116ad03bd3454a9dd0e8edb61b8794f07d8a26f8187Tyler Gunn * 117ad03bd3454a9dd0e8edb61b8794f07d8a26f8187Tyler Gunn * @param cn The connection. 118ad03bd3454a9dd0e8edb61b8794f07d8a26f8187Tyler Gunn */ 119ad03bd3454a9dd0e8edb61b8794f07d8a26f8187Tyler Gunn protected void stopOnHoldTone(Connection cn) { 120ad03bd3454a9dd0e8edb61b8794f07d8a26f8187Tyler Gunn Pair<Connection, Boolean> result = new Pair<Connection, Boolean>(cn, Boolean.FALSE); 121ad03bd3454a9dd0e8edb61b8794f07d8a26f8187Tyler Gunn mOnHoldRegistrants.notifyRegistrants(new AsyncResult(null, result, null)); 122a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 123a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 124a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 1256d91e295add44a5b7e611cb51401a20b3caa6571Pavel Zhamaitsiak public void registerForTtyModeReceived(Handler h, int what, Object obj){ 1266d91e295add44a5b7e611cb51401a20b3caa6571Pavel Zhamaitsiak mTtyModeReceivedRegistrants.addUnique(h, what, obj); 1276d91e295add44a5b7e611cb51401a20b3caa6571Pavel Zhamaitsiak } 1286d91e295add44a5b7e611cb51401a20b3caa6571Pavel Zhamaitsiak 1296d91e295add44a5b7e611cb51401a20b3caa6571Pavel Zhamaitsiak @Override 1306d91e295add44a5b7e611cb51401a20b3caa6571Pavel Zhamaitsiak public void unregisterForTtyModeReceived(Handler h) { 1316d91e295add44a5b7e611cb51401a20b3caa6571Pavel Zhamaitsiak mTtyModeReceivedRegistrants.remove(h); 1326d91e295add44a5b7e611cb51401a20b3caa6571Pavel Zhamaitsiak } 1336d91e295add44a5b7e611cb51401a20b3caa6571Pavel Zhamaitsiak 1346d91e295add44a5b7e611cb51401a20b3caa6571Pavel Zhamaitsiak public void onTtyModeReceived(int mode) { 1356d91e295add44a5b7e611cb51401a20b3caa6571Pavel Zhamaitsiak AsyncResult result = new AsyncResult(null, Integer.valueOf(mode), null); 1366d91e295add44a5b7e611cb51401a20b3caa6571Pavel Zhamaitsiak mTtyModeReceivedRegistrants.notifyRegistrants(result); 1376d91e295add44a5b7e611cb51401a20b3caa6571Pavel Zhamaitsiak } 1386d91e295add44a5b7e611cb51401a20b3caa6571Pavel Zhamaitsiak 1396d91e295add44a5b7e611cb51401a20b3caa6571Pavel Zhamaitsiak @Override 140a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public ServiceState getServiceState() { 141a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville // FIXME: we may need to provide this when data connectivity is lost 142a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville // or when server is down 143a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville ServiceState s = new ServiceState(); 144410298cb95b110609193941807aff6c9676d2304Jack Yu s.setVoiceRegState(ServiceState.STATE_IN_SERVICE); 145a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville return s; 146a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 147a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 148a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville /** 149a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville * @return all available cell information or null if none. 150a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville */ 151a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 1528b38cd985149b459969dd2ac9e8013d852dc6760Sooraj Sasindran public List<CellInfo> getAllCellInfo(WorkSource workSource) { 1538b38cd985149b459969dd2ac9e8013d852dc6760Sooraj Sasindran return getServiceStateTracker().getAllCellInfo(workSource); 154a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 155a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 156a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 1578b38cd985149b459969dd2ac9e8013d852dc6760Sooraj Sasindran public CellLocation getCellLocation(WorkSource workSource) { 158a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville return null; 159a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 160a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 161a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 162a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public PhoneConstants.State getState() { 163a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville return mState; 164a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 165a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 166a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 167a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public int getPhoneType() { 168a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville return PhoneConstants.PHONE_TYPE_IMS; 169a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 170a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 171a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 172a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public SignalStrength getSignalStrength() { 173a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville return new SignalStrength(); 174a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 175a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 176a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 177a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public boolean getMessageWaitingIndicator() { 178a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville return false; 179a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 180a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 181a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 182a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public boolean getCallForwardingIndicator() { 183a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville return false; 184a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 185a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 186a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 187a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public List<? extends MmiCode> getPendingMmiCodes() { 188a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville return new ArrayList<MmiCode>(0); 189a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 190a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 191a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 192a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public PhoneConstants.DataState getDataConnectionState() { 193a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville return PhoneConstants.DataState.DISCONNECTED; 194a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 195a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 196a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 197a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public PhoneConstants.DataState getDataConnectionState(String apnType) { 198a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville return PhoneConstants.DataState.DISCONNECTED; 199a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 200a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 201a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 202a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public DataActivityState getDataActivityState() { 203a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville return DataActivityState.NONE; 204a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 205a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 206a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville /** 207a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville * Notify any interested party of a Phone state change 208a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville * {@link com.android.internal.telephony.PhoneConstants.State} 209a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville */ 21075ba09a17a669f4906268088a769836aa87d8241fionaxu public void notifyPhoneStateChanged() { 211a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville mNotifier.notifyPhoneState(this); 212a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 213a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 214a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville /** 215a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville * Notify registrants of a change in the call state. This notifies changes in 216a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville * {@link com.android.internal.telephony.Call.State}. Use this when changes 217a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville * in the precise call state are needed, else use notifyPhoneStateChanged. 218a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville */ 21975ba09a17a669f4906268088a769836aa87d8241fionaxu public void notifyPreciseCallStateChanged() { 220a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville /* we'd love it if this was package-scoped*/ 221a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville super.notifyPreciseCallStateChangedP(); 222a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 223a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 224f9b150b221db15e88b97a0b9c0971ca3c71c0313fionaxu public void notifyDisconnect(Connection cn) { 225a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville mDisconnectRegistrants.notifyResult(cn); 226222bd9d64068a23f5470561655ca4dbd2359eeceJayachandran C 227222bd9d64068a23f5470561655ca4dbd2359eeceJayachandran C mNotifier.notifyDisconnectCause(cn.getDisconnectCause(), cn.getPreciseDisconnectCause()); 228a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 229a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 230a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville void notifyUnknownConnection() { 231a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville mUnknownConnectionRegistrants.notifyResult(this); 232a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 233a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 23406cc9bcfe7f90e03b40c45060ae5727b7a0398feTyler Gunn public void notifySuppServiceFailed(SuppService code) { 235a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville mSuppServiceFailedRegistrants.notifyResult(code); 236a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 237a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 238a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville void notifyServiceStateChanged(ServiceState ss) { 239a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville super.notifyServiceStateChangedP(ss); 240a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 241a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 242a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 243a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public void notifyCallForwardingIndicator() { 244a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville mNotifier.notifyCallForwardingChanged(this); 245a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 246a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 247a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public boolean canDial() { 248a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville int serviceState = getServiceState().getState(); 249a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville Rlog.v(LOG_TAG, "canDial(): serviceState = " + serviceState); 250a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville if (serviceState == ServiceState.STATE_POWER_OFF) return false; 251a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 252a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville String disableCall = SystemProperties.get( 253a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville TelephonyProperties.PROPERTY_DISABLE_CALL, "false"); 254a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville Rlog.v(LOG_TAG, "canDial(): disableCall = " + disableCall); 255a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville if (disableCall.equals("true")) return false; 256a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 257a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville Rlog.v(LOG_TAG, "canDial(): ringingCall: " + getRingingCall().getState()); 258a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville Rlog.v(LOG_TAG, "canDial(): foregndCall: " + getForegroundCall().getState()); 259a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville Rlog.v(LOG_TAG, "canDial(): backgndCall: " + getBackgroundCall().getState()); 260a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville return !getRingingCall().isRinging() 261a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville && (!getForegroundCall().getState().isAlive() 262a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville || !getBackgroundCall().getState().isAlive()); 263a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 264a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 265a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 266a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public boolean handleInCallMmiCommands(String dialString) { 267a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville return false; 268a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 269a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 270a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville boolean isInCall() { 271a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville Call.State foregroundCallState = getForegroundCall().getState(); 272a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville Call.State backgroundCallState = getBackgroundCall().getState(); 273a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville Call.State ringingCallState = getRingingCall().getState(); 274a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 275a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville return (foregroundCallState.isAlive() || backgroundCallState.isAlive() 276a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville || ringingCallState.isAlive()); 277a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 278a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 279a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 280a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public boolean handlePinMmi(String dialString) { 281a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville return false; 282a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 283a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 284a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 285a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public void sendUssdResponse(String ussdMessge) { 286a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 287a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 288a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 289a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public void registerForSuppServiceNotification( 290a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville Handler h, int what, Object obj) { 291a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 292a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 293a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 294a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public void unregisterForSuppServiceNotification(Handler h) { 295a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 296a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 297a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 298a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public void setRadioPower(boolean power) { 299a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 300a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 301a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 302a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public String getVoiceMailNumber() { 303a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville return null; 304a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 305a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 306a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 307a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public String getVoiceMailAlphaTag() { 308a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville return null; 309a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 310a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 311a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 312a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public String getDeviceId() { 313a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville return null; 314a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 315a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 316a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 317a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public String getDeviceSvn() { 318a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville return null; 319a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 320a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 321a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 322a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public String getImei() { 323a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville return null; 324a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 325a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 326a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 327a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public String getEsn() { 328a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville Rlog.e(LOG_TAG, "[VoltePhone] getEsn() is a CDMA method"); 329a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville return "0"; 330a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 331a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 332a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 333a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public String getMeid() { 334a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville Rlog.e(LOG_TAG, "[VoltePhone] getMeid() is a CDMA method"); 335a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville return "0"; 336a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 337a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 338a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 339a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public String getSubscriberId() { 340a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville return null; 341a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 342a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 343a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 344a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public String getGroupIdLevel1() { 345a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville return null; 346a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 347a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 348a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 3497234bd8664dbec97858f3f635eaa01c77d2f2881Junda Liu public String getGroupIdLevel2() { 3507234bd8664dbec97858f3f635eaa01c77d2f2881Junda Liu return null; 3517234bd8664dbec97858f3f635eaa01c77d2f2881Junda Liu } 3527234bd8664dbec97858f3f635eaa01c77d2f2881Junda Liu 3537234bd8664dbec97858f3f635eaa01c77d2f2881Junda Liu @Override 354a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public String getIccSerialNumber() { 355a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville return null; 356a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 357a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 358a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 359a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public String getLine1Number() { 360a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville return null; 361a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 362a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 363a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 364a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public String getLine1AlphaTag() { 365a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville return null; 366a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 367a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 368a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 3695866914ae9798adebcb84cd710bca660b797bff0Amit Mahajan public boolean setLine1Number(String alphaTag, String number, Message onComplete) { 370a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville // FIXME: what to reply for Volte? 3715866914ae9798adebcb84cd710bca660b797bff0Amit Mahajan return false; 372a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 373a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 374a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 375a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public void setVoiceMailNumber(String alphaTag, String voiceMailNumber, 376a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville Message onComplete) { 377a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville // FIXME: what to reply for Volte? 378a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville AsyncResult.forMessage(onComplete, null, null); 379a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville onComplete.sendToTarget(); 380a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 381a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 382a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 383a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public void getCallForwardingOption(int commandInterfaceCFReason, Message onComplete) { 384a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 385a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 386a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 387a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public void setCallForwardingOption(int commandInterfaceCFAction, 388a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville int commandInterfaceCFReason, String dialingNumber, 389a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville int timerSeconds, Message onComplete) { 390a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 391a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 392a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 393a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public void getOutgoingCallerIdDisplay(Message onComplete) { 394a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville // FIXME: what to reply? 395a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville AsyncResult.forMessage(onComplete, null, null); 396a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville onComplete.sendToTarget(); 397a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 398a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 399a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 400a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public void setOutgoingCallerIdDisplay(int commandInterfaceCLIRMode, 401a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville Message onComplete) { 402a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville // FIXME: what's this for Volte? 403a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville AsyncResult.forMessage(onComplete, null, null); 404a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville onComplete.sendToTarget(); 405a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 406a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 407a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 408a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public void getCallWaiting(Message onComplete) { 409a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville AsyncResult.forMessage(onComplete, null, null); 410a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville onComplete.sendToTarget(); 411a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 412a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 413a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 414a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public void setCallWaiting(boolean enable, Message onComplete) { 415a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville Rlog.e(LOG_TAG, "call waiting not supported"); 416a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 417a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 418a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 419a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public boolean getIccRecordsLoaded() { 420a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville return false; 421a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 422a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 423a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 424a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public IccCard getIccCard() { 425a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville return null; 426a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 427a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 428a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 429a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public void getAvailableNetworks(Message response) { 430a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 431a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 432a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 43384de7198887db7ba56c5cfd1d653033e7b4631a9yinxu public void startNetworkScan(NetworkScanRequest nsr, Message response) { 434ffcdbea80c50d4911d52f61611722e446af72b66yinxu } 435ffcdbea80c50d4911d52f61611722e446af72b66yinxu 436ffcdbea80c50d4911d52f61611722e446af72b66yinxu @Override 437ffcdbea80c50d4911d52f61611722e446af72b66yinxu public void stopNetworkScan(Message response) { 438ffcdbea80c50d4911d52f61611722e446af72b66yinxu } 439ffcdbea80c50d4911d52f61611722e446af72b66yinxu 440ffcdbea80c50d4911d52f61611722e446af72b66yinxu @Override 441a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public void setNetworkSelectionModeAutomatic(Message response) { 442a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 443a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 444a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 445ec15371b29d1016c33ba0f866f5ae6fb4ae3dbdeShishir Agrawal public void selectNetworkManually(OperatorInfo network, boolean persistSelection, 446a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville Message response) { 447a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 448a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 449a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public List<DataConnection> getCurrentDataConnectionList () { 450a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville return null; 451a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 452a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 453a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 454a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public void updateServiceLocation() { 455a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 456a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 457a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 458a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public void enableLocationUpdates() { 459a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 460a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 461a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 462a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public void disableLocationUpdates() { 463a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 464a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 465a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 466a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public boolean getDataRoamingEnabled() { 467a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville return false; 468a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 469a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 470a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 471a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public void setDataRoamingEnabled(boolean enable) { 472a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 473a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 474a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 475a64092befe003884c4c8951438ab311ce8f92824Malcolm Chen public boolean isUserDataEnabled() { 476a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville return false; 477a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 478a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 479a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 480a64092befe003884c4c8951438ab311ce8f92824Malcolm Chen public boolean isDataEnabled() { 481a64092befe003884c4c8951438ab311ce8f92824Malcolm Chen return false; 482a64092befe003884c4c8951438ab311ce8f92824Malcolm Chen } 483a64092befe003884c4c8951438ab311ce8f92824Malcolm Chen 484a64092befe003884c4c8951438ab311ce8f92824Malcolm Chen @Override 485a64092befe003884c4c8951438ab311ce8f92824Malcolm Chen public void setUserDataEnabled(boolean enable) { 486a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 487a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 488a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 489a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public boolean enableDataConnectivity() { 490a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville return false; 491a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 492a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 493a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public boolean disableDataConnectivity() { 494a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville return false; 495a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 496a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 497a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 49899e00ea846baea00e54d9d8c61b457a22a282cb7Jack Yu public boolean isDataAllowed() { 499a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville return false; 500a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 501a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 502a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 503a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public IccPhoneBookInterfaceManager getIccPhoneBookInterfaceManager(){ 504a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville return null; 505a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 506a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 507a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 508a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public IccFileHandler getIccFileHandler(){ 509a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville return null; 510a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 511a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 512a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 513a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public void activateCellBroadcastSms(int activate, Message response) { 514a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville Rlog.e(LOG_TAG, "Error! This functionality is not implemented for Volte."); 515a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 516a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 517a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 518a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public void getCellBroadcastSmsConfig(Message response) { 519a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville Rlog.e(LOG_TAG, "Error! This functionality is not implemented for Volte."); 520a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 521a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 522a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 523a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public void setCellBroadcastSmsConfig(int[] configValuesArray, Message response){ 524a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville Rlog.e(LOG_TAG, "Error! This functionality is not implemented for Volte."); 525a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 526a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 527a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville //@Override 528a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 529a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public boolean needsOtaServiceProvisioning() { 530a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville // FIXME: what's this for Volte? 531a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville return false; 532a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 533a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 534a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville //@Override 535a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 536a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public LinkProperties getLinkProperties(String apnType) { 537a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville // FIXME: what's this for Volte? 538a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville return null; 539a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 540a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 541a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 54277ba51be604dbfc88edb50117c42fda70ef10638Karen Zhang public void getCallBarring(String facility, String password, Message onComplete, 54377ba51be604dbfc88edb50117c42fda70ef10638Karen Zhang int serviceClass) { 54477ba51be604dbfc88edb50117c42fda70ef10638Karen Zhang } 54577ba51be604dbfc88edb50117c42fda70ef10638Karen Zhang 54677ba51be604dbfc88edb50117c42fda70ef10638Karen Zhang @Override 54777ba51be604dbfc88edb50117c42fda70ef10638Karen Zhang public void setCallBarring(String facility, boolean lockState, String password, 54877ba51be604dbfc88edb50117c42fda70ef10638Karen Zhang Message onComplete, int serviceClass) { 54977ba51be604dbfc88edb50117c42fda70ef10638Karen Zhang } 55077ba51be604dbfc88edb50117c42fda70ef10638Karen Zhang 55177ba51be604dbfc88edb50117c42fda70ef10638Karen Zhang @Override 552a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville protected void onUpdateIccAvailability() { 553a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 554a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 555a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville void updatePhoneState() { 556a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville PhoneConstants.State oldState = mState; 557a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 558a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville if (getRingingCall().isRinging()) { 559a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville mState = PhoneConstants.State.RINGING; 560a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } else if (getForegroundCall().isIdle() 561a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville && getBackgroundCall().isIdle()) { 562a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville mState = PhoneConstants.State.IDLE; 563a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } else { 564a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville mState = PhoneConstants.State.OFFHOOK; 565a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 566a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 567a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville if (mState != oldState) { 568a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville Rlog.d(LOG_TAG, " ^^^ new phone state: " + mState); 569a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville notifyPhoneStateChanged(); 570a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 571a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 572a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville} 573