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