ImsPhoneBase.java revision a8467dd0c524787104b1ccdddc5e8af10ba729ed
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.Registrant;
25a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport android.os.RegistrantList;
26a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport android.os.SystemProperties;
27a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport android.telephony.CellInfo;
28a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport android.telephony.CellLocation;
29a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport android.telephony.ServiceState;
30a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport android.telephony.SignalStrength;
31a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport android.telephony.Rlog;
32a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
33a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport com.android.internal.telephony.Call;
34a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport com.android.internal.telephony.CallStateException;
35a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport com.android.internal.telephony.Connection;
36a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport com.android.internal.telephony.dataconnection.DataConnection;
37a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport com.android.internal.telephony.IccCard;
38a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport com.android.internal.telephony.IccPhoneBookInterfaceManager;
39a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport com.android.internal.telephony.MmiCode;
40a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport com.android.internal.telephony.OperatorInfo;
41a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport com.android.internal.telephony.PhoneBase;
42a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport com.android.internal.telephony.PhoneConstants;
43a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport com.android.internal.telephony.PhoneNotifier;
44a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport com.android.internal.telephony.PhoneSubInfo;
45a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport com.android.internal.telephony.TelephonyProperties;
46a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport com.android.internal.telephony.UUSInfo;
47a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport com.android.internal.telephony.uicc.IccFileHandler;
48a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
49a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport java.util.ArrayList;
50a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport java.util.List;
51a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
52a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleabstract class ImsPhoneBase extends PhoneBase {
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();
57a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    private PhoneConstants.State mState = PhoneConstants.State.IDLE;
58a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
59a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public ImsPhoneBase(String name, Context context, PhoneNotifier notifier) {
60a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        super(name, notifier, context, new ImsPhoneCommandInterface(context), false);
61a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
62a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
63a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
64a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public Connection dial(String dialString, UUSInfo uusInfo)
65a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville            throws CallStateException {
66a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        // ignore UUSInfo
67a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        return dial(dialString);
68a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
69a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
70a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    void migrateFrom(ImsPhoneBase from) {
71a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        migrate(mRingbackRegistrants, from.mRingbackRegistrants);
72a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        migrate(mPreciseCallStateRegistrants, from.mPreciseCallStateRegistrants);
73a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        migrate(mNewRingingConnectionRegistrants, from.mNewRingingConnectionRegistrants);
74a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        migrate(mIncomingRingRegistrants, from.mIncomingRingRegistrants);
75a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        migrate(mDisconnectRegistrants, from.mDisconnectRegistrants);
76a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        migrate(mServiceStateRegistrants, from.mServiceStateRegistrants);
77a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        migrate(mMmiCompleteRegistrants, from.mMmiCompleteRegistrants);
78a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        migrate(mMmiRegistrants, from.mMmiRegistrants);
79a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        migrate(mUnknownConnectionRegistrants, from.mUnknownConnectionRegistrants);
80a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        migrate(mSuppServiceFailedRegistrants, from.mSuppServiceFailedRegistrants);
81a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
82a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
83a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    static void migrate(RegistrantList to, RegistrantList from) {
84a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        from.removeCleared();
85a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        for (int i = 0, n = from.size(); i < n; i++) {
86a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville            to.add((Registrant) from.get(i));
87a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        }
88a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
89a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
90a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
91a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public void registerForRingbackTone(Handler h, int what, Object obj) {
92a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        mRingbackRegistrants.addUnique(h, what, obj);
93a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
94a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
95a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
96a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public void unregisterForRingbackTone(Handler h) {
97a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        mRingbackRegistrants.remove(h);
98a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
99a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
100a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    protected void startRingbackTone() {
101a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        AsyncResult result = new AsyncResult(null, Boolean.TRUE, null);
102a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        mRingbackRegistrants.notifyRegistrants(result);
103a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
104a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
105a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    protected void stopRingbackTone() {
106a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        AsyncResult result = new AsyncResult(null, Boolean.FALSE, null);
107a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        mRingbackRegistrants.notifyRegistrants(result);
108a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
109a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
110a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
111a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public void registerForOnHoldTone(Handler h, int what, Object obj) {
112a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        mOnHoldRegistrants.addUnique(h, what, obj);
113a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
114a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
115a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
116a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public void unregisterForOnHoldTone(Handler h) {
117a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        mOnHoldRegistrants.remove(h);
118a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
119a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
120a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    protected void startOnHoldTone() {
121a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        AsyncResult result = new AsyncResult(null, Boolean.TRUE, null);
122a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        mOnHoldRegistrants.notifyRegistrants(result);
123a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
124a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
125a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    protected void stopOnHoldTone() {
126a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        AsyncResult result = new AsyncResult(null, Boolean.FALSE, null);
127a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        mOnHoldRegistrants.notifyRegistrants(result);
128a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
129a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
130a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
131a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public ServiceState getServiceState() {
132a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        // FIXME: we may need to provide this when data connectivity is lost
133a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        // or when server is down
134a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        ServiceState s = new ServiceState();
135a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        s.setState(ServiceState.STATE_IN_SERVICE);
136a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        return s;
137a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
138a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
139a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    /**
140a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville     * @return all available cell information or null if none.
141a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville     */
142a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
143a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public List<CellInfo> getAllCellInfo() {
144a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        return getServiceStateTracker().getAllCellInfo();
145a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
146a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
147a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
148a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public CellLocation getCellLocation() {
149a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        return null;
150a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
151a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
152a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
153a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public PhoneConstants.State getState() {
154a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        return mState;
155a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
156a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
157a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
158a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public int getPhoneType() {
159a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        return PhoneConstants.PHONE_TYPE_IMS;
160a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
161a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
162a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
163a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public SignalStrength getSignalStrength() {
164a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        return new SignalStrength();
165a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
166a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
167a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
168a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public boolean getMessageWaitingIndicator() {
169a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        return false;
170a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
171a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
172a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
173a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public boolean getCallForwardingIndicator() {
174a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        return false;
175a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
176a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
177a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
178a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public List<? extends MmiCode> getPendingMmiCodes() {
179a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        return new ArrayList<MmiCode>(0);
180a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
181a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
182a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
183a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public PhoneConstants.DataState getDataConnectionState() {
184a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        return PhoneConstants.DataState.DISCONNECTED;
185a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
186a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
187a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
188a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public PhoneConstants.DataState getDataConnectionState(String apnType) {
189a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        return PhoneConstants.DataState.DISCONNECTED;
190a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
191a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
192a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
193a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public DataActivityState getDataActivityState() {
194a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        return DataActivityState.NONE;
195a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
196a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
197a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    /**
198a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville     * Notify any interested party of a Phone state change
199a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville     * {@link com.android.internal.telephony.PhoneConstants.State}
200a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville     */
201a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    /* package */ void notifyPhoneStateChanged() {
202a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        mNotifier.notifyPhoneState(this);
203a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
204a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
205a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    /**
206a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville     * Notify registrants of a change in the call state. This notifies changes in
207a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville     * {@link com.android.internal.telephony.Call.State}. Use this when changes
208a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville     * in the precise call state are needed, else use notifyPhoneStateChanged.
209a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville     */
210a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    /* package */ void notifyPreciseCallStateChanged() {
211a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        /* we'd love it if this was package-scoped*/
212a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        super.notifyPreciseCallStateChangedP();
213a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
214a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
215a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    void notifyNewRingingConnection(Connection c) {
216a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        super.notifyNewRingingConnectionP(c);
217a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
218a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
219a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    void notifyDisconnect(Connection cn) {
220a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        mDisconnectRegistrants.notifyResult(cn);
221a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
222a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
223a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    void notifyUnknownConnection() {
224a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        mUnknownConnectionRegistrants.notifyResult(this);
225a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
226a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
227a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    void notifySuppServiceFailed(SuppService code) {
228a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        mSuppServiceFailedRegistrants.notifyResult(code);
229a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
230a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
231a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    void notifyServiceStateChanged(ServiceState ss) {
232a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        super.notifyServiceStateChangedP(ss);
233a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
234a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
235a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
236a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public void notifyCallForwardingIndicator() {
237a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        mNotifier.notifyCallForwardingChanged(this);
238a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
239a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
240a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public boolean canDial() {
241a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        int serviceState = getServiceState().getState();
242a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        Rlog.v(LOG_TAG, "canDial(): serviceState = " + serviceState);
243a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        if (serviceState == ServiceState.STATE_POWER_OFF) return false;
244a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
245a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        String disableCall = SystemProperties.get(
246a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville                TelephonyProperties.PROPERTY_DISABLE_CALL, "false");
247a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        Rlog.v(LOG_TAG, "canDial(): disableCall = " + disableCall);
248a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        if (disableCall.equals("true")) return false;
249a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
250a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        Rlog.v(LOG_TAG, "canDial(): ringingCall: " + getRingingCall().getState());
251a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        Rlog.v(LOG_TAG, "canDial(): foregndCall: " + getForegroundCall().getState());
252a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        Rlog.v(LOG_TAG, "canDial(): backgndCall: " + getBackgroundCall().getState());
253a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        return !getRingingCall().isRinging()
254a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville                && (!getForegroundCall().getState().isAlive()
255a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville                    || !getBackgroundCall().getState().isAlive());
256a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
257a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
258a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
259a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public boolean handleInCallMmiCommands(String dialString) {
260a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        return false;
261a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
262a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
263a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    boolean isInCall() {
264a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        Call.State foregroundCallState = getForegroundCall().getState();
265a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        Call.State backgroundCallState = getBackgroundCall().getState();
266a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        Call.State ringingCallState = getRingingCall().getState();
267a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
268a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville       return (foregroundCallState.isAlive() || backgroundCallState.isAlive()
269a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville               || ringingCallState.isAlive());
270a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
271a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
272a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
273a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public boolean handlePinMmi(String dialString) {
274a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        return false;
275a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
276a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
277a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
278a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public void sendUssdResponse(String ussdMessge) {
279a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
280a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
281a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
282a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public void registerForSuppServiceNotification(
283a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville            Handler h, int what, Object obj) {
284a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
285a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
286a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
287a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public void unregisterForSuppServiceNotification(Handler h) {
288a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
289a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
290a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
291a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public void setRadioPower(boolean power) {
292a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
293a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
294a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
295a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public String getVoiceMailNumber() {
296a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        return null;
297a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
298a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
299a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
300a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public String getVoiceMailAlphaTag() {
301a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        return null;
302a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
303a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
304a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
305a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public String getDeviceId() {
306a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        return null;
307a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
308a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
309a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
310a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public String getDeviceSvn() {
311a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        return null;
312a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
313a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
314a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
315a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public String getImei() {
316a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        return null;
317a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
318a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
319a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
320a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public String getEsn() {
321a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        Rlog.e(LOG_TAG, "[VoltePhone] getEsn() is a CDMA method");
322a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        return "0";
323a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
324a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
325a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
326a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public String getMeid() {
327a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        Rlog.e(LOG_TAG, "[VoltePhone] getMeid() is a CDMA method");
328a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        return "0";
329a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
330a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
331a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
332a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public String getSubscriberId() {
333a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        return null;
334a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
335a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
336a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
337a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public String getGroupIdLevel1() {
338a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        return null;
339a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
340a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
341a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
342a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public String getIccSerialNumber() {
343a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        return null;
344a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
345a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
346a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
347a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public String getLine1Number() {
348a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        return null;
349a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
350a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
351a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
352a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public String getLine1AlphaTag() {
353a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        return null;
354a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
355a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
356a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
357a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public void setLine1Number(String alphaTag, String number, Message onComplete) {
358a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        // FIXME: what to reply for Volte?
359a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        AsyncResult.forMessage(onComplete, null, null);
360a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        onComplete.sendToTarget();
361a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
362a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
363a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
364a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public void setVoiceMailNumber(String alphaTag, String voiceMailNumber,
365a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville            Message onComplete) {
366a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        // FIXME: what to reply for Volte?
367a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        AsyncResult.forMessage(onComplete, null, null);
368a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        onComplete.sendToTarget();
369a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
370a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
371a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
372a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public void getCallForwardingOption(int commandInterfaceCFReason, Message onComplete) {
373a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
374a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
375a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
376a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public void setCallForwardingOption(int commandInterfaceCFAction,
377a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville            int commandInterfaceCFReason, String dialingNumber,
378a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville            int timerSeconds, Message onComplete) {
379a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
380a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
381a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
382a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public void getOutgoingCallerIdDisplay(Message onComplete) {
383a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        // FIXME: what to reply?
384a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        AsyncResult.forMessage(onComplete, null, null);
385a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        onComplete.sendToTarget();
386a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
387a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
388a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
389a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public void setOutgoingCallerIdDisplay(int commandInterfaceCLIRMode,
390a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville            Message onComplete) {
391a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        // FIXME: what's this for Volte?
392a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        AsyncResult.forMessage(onComplete, null, null);
393a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        onComplete.sendToTarget();
394a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
395a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
396a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
397a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public void getCallWaiting(Message onComplete) {
398a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        AsyncResult.forMessage(onComplete, null, null);
399a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        onComplete.sendToTarget();
400a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
401a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
402a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
403a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public void setCallWaiting(boolean enable, Message onComplete) {
404a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        Rlog.e(LOG_TAG, "call waiting not supported");
405a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
406a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
407a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
408a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public boolean getIccRecordsLoaded() {
409a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        return false;
410a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
411a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
412a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
413a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public IccCard getIccCard() {
414a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        return null;
415a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
416a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
417a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
418a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public void getAvailableNetworks(Message response) {
419a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
420a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
421a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
422a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public void setNetworkSelectionModeAutomatic(Message response) {
423a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
424a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
425a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
426a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public void selectNetworkManually(
427a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville            OperatorInfo network,
428a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville            Message response) {
429a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
430a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
431a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
432a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public void getNeighboringCids(Message response) {
433a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
434a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
435a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
436a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public void getDataCallList(Message response) {
437a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
438a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
439a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public List<DataConnection> getCurrentDataConnectionList () {
440a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        return null;
441a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
442a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
443a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
444a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public void updateServiceLocation() {
445a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
446a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
447a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
448a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public void enableLocationUpdates() {
449a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
450a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
451a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
452a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public void disableLocationUpdates() {
453a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
454a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
455a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
456a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public boolean getDataRoamingEnabled() {
457a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        return false;
458a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
459a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
460a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
461a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public void setDataRoamingEnabled(boolean enable) {
462a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
463a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
464a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
465a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public boolean getDataEnabled() {
466a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        return false;
467a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
468a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
469a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
470a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public void setDataEnabled(boolean enable) {
471a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
472a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
473a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
474a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public boolean enableDataConnectivity() {
475a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        return false;
476a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
477a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
478a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public boolean disableDataConnectivity() {
479a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        return false;
480a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
481a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
482a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
483a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public boolean isDataConnectivityPossible() {
484a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        return false;
485a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
486a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
487a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    boolean updateCurrentCarrierInProvider() {
488a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        return false;
489a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
490a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
491a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public void saveClirSetting(int commandInterfaceCLIRMode) {
492a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
493a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
494a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
495a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public PhoneSubInfo getPhoneSubInfo(){
496a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        return null;
497a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
498a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
499a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
500a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public IccPhoneBookInterfaceManager getIccPhoneBookInterfaceManager(){
501a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        return null;
502a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
503a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
504a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
505a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public IccFileHandler getIccFileHandler(){
506a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        return null;
507a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
508a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
509a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
510a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public void activateCellBroadcastSms(int activate, Message response) {
511a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        Rlog.e(LOG_TAG, "Error! This functionality is not implemented for Volte.");
512a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
513a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
514a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
515a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public void getCellBroadcastSmsConfig(Message response) {
516a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        Rlog.e(LOG_TAG, "Error! This functionality is not implemented for Volte.");
517a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
518a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
519a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
520a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public void setCellBroadcastSmsConfig(int[] configValuesArray, Message response){
521a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        Rlog.e(LOG_TAG, "Error! This functionality is not implemented for Volte.");
522a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
523a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
524a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    //@Override
525a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
526a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public boolean needsOtaServiceProvisioning() {
527a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        // FIXME: what's this for Volte?
528a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        return false;
529a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
530a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
531a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    //@Override
532a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
533a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    public LinkProperties getLinkProperties(String apnType) {
534a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        // FIXME: what's this for Volte?
535a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        return null;
536a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
537a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
538a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    @Override
539a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    protected void onUpdateIccAvailability() {
540a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
541a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
542a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    void updatePhoneState() {
543a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        PhoneConstants.State oldState = mState;
544a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
545a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        if (getRingingCall().isRinging()) {
546a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville            mState = PhoneConstants.State.RINGING;
547a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        } else if (getForegroundCall().isIdle()
548a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville                && getBackgroundCall().isIdle()) {
549a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville            mState = PhoneConstants.State.IDLE;
550a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        } else {
551a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville            mState = PhoneConstants.State.OFFHOOK;
552a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        }
553a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville
554a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        if (mState != oldState) {
555a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville            Rlog.d(LOG_TAG, " ^^^ new phone state: " + mState);
556a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville            notifyPhoneStateChanged();
557a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville        }
558a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville    }
559a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville}
560