Connection.java revision b7b7a62112b79571adf74372c5f5366fd62d0031
10825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/*
20825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Copyright (C) 2006 The Android Open Source Project
30825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville *
40825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Licensed under the Apache License, Version 2.0 (the "License");
50825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * you may not use this file except in compliance with the License.
60825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * You may obtain a copy of the License at
70825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville *
80825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville *      http://www.apache.org/licenses/LICENSE-2.0
90825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville *
100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Unless required by applicable law or agreed to in writing, software
110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * distributed under the License is distributed on an "AS IS" BASIS,
120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * See the License for the specific language governing permissions and
140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * limitations under the License.
150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */
160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
170825495a331bb44df395a0cdb79fab85e68db5d5Wink Savillepackage com.android.internal.telephony;
180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1999c2e1d6749cfad2a8ca94a47857d8c3bfc09454Wink Savilleimport android.telephony.Rlog;
200825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.util.Log;
210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/**
230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@hide}
240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */
250825495a331bb44df395a0cdb79fab85e68db5d5Wink Savillepublic abstract class Connection {
260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    //Caller Name Display
2822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville    protected String mCnapName;
2922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville    protected int mCnapNamePresentation  = PhoneConstants.PRESENTATION_ALLOWED;
300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
31cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    private static String LOG_TAG = "Connection";
320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville    Object mUserData;
340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /* Instance Methods */
360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Gets address (e.g. phone number) associated with connection.
390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * TODO: distinguish reasons for unavailability
400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *
410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @return address or null if unavailable
420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public abstract String getAddress();
450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Gets CNAP name associated with connection.
480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @return cnap name or null if unavailable
490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public String getCnapName() {
5122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville        return mCnapName;
520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Get original dial string.
560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @return original dial string or null if unavailable
570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public String getOrigDialString(){
590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return null;
600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Gets CNAP presentation associated with connection.
640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @return cnap name or null if unavailable
650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public int getCnapNamePresentation() {
6822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville       return mCnapNamePresentation;
69cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    }
700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @return Call that owns this Connection, or null if none
730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public abstract Call getCall();
750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Connection create time in currentTimeMillis() format
780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Basically, set when object is created.
790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Effectively, when an incoming call starts ringing or an
800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * outgoing call starts dialing
810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public abstract long getCreateTime();
830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Connection connect time in currentTimeMillis() format.
860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * For outgoing calls: Begins at (DIALING|ALERTING) -> ACTIVE transition.
870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * For incoming calls: Begins at (INCOMING|WAITING) -> ACTIVE transition.
880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Returns 0 before then.
890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public abstract long getConnectTime();
910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Disconnect time in currentTimeMillis() format.
940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * The time when this Connection makes a transition into ENDED or FAIL.
950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Returns 0 before then.
960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public abstract long getDisconnectTime();
980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
1000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Returns the number of milliseconds the call has been connected,
1010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * or 0 if the call has never connected.
1020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * If the call is still connected, then returns the elapsed
1030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * time since connect.
1040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
1050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public abstract long getDurationMillis();
1060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
1080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * If this connection is HOLDING, return the number of milliseconds
1090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * that it has been on hold for (approximately).
1100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * If this connection is in any other state, return 0.
1110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
1120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public abstract long getHoldDurationMillis();
1140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
116b7b7a62112b79571adf74372c5f5366fd62d0031Anders Kristensen     * Returns call disconnect cause. Values are defined in
117b7b7a62112b79571adf74372c5f5366fd62d0031Anders Kristensen     * {@link android.telephony.DisconnectCause}. If the call is not yet
118b7b7a62112b79571adf74372c5f5366fd62d0031Anders Kristensen     * disconnected, NOT_DISCONNECTED is returned.
1190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
120b7b7a62112b79571adf74372c5f5366fd62d0031Anders Kristensen    public abstract int getDisconnectCause();
1210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
1230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Returns true of this connection originated elsewhere
1240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * ("MT" or mobile terminated; another party called this terminal)
1250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * or false if this call originated here (MO or mobile originated).
1260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
1270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public abstract boolean isIncoming();
1280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
1300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * If this Connection is connected, then it is associated with
1310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * a Call.
1320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *
1330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Returns getCall().getState() or Call.State.IDLE if not
1340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * connected
1350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
1360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public Call.State getState() {
1370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Call c;
1380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        c = getCall();
1400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        if (c == null) {
1420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            return Call.State.IDLE;
1430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } else {
1440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            return c.getState();
1450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
1490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * isAlive()
1500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *
1510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @return true if the connection isn't disconnected
1520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * (could be active, holding, ringing, dialing, etc)
1530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
1540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public boolean
1550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    isAlive() {
1560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return getState().isAlive();
1570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
1600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Returns true if Connection is connected and is INCOMING or WAITING
1610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
1620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public boolean
1630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    isRinging() {
1640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return getState().isRinging();
1650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
1680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *
1690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @return the userdata set in setUserData()
1700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
1710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public Object getUserData() {
17222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville        return mUserData;
1730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
1760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *
1770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @param userdata user can store an any userdata in the Connection object.
1780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
1790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void setUserData(Object userdata) {
18022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville        mUserData = userdata;
1810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
1840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Hangup individual Connection
1850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
1860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public abstract void hangup() throws CallStateException;
1870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
1890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Separate this call from its owner Call and assigns it to a new Call
1900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * (eg if it is currently part of a Conference call
1910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * TODO: Throw exception? Does GSM require error display on failure here?
1920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
1930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public abstract void separate() throws CallStateException;
1940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public enum PostDialState {
1960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        NOT_STARTED,    /* The post dial string playback hasn't
1970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                           been started, or this call is not yet
1980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                           connected, or this is an incoming call */
1990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        STARTED,        /* The post dial string playback has begun */
2000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        WAIT,           /* The post dial string playback is waiting for a
2010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                           call to proceedAfterWaitChar() */
2020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        WILD,           /* The post dial string playback is waiting for a
2030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                           call to proceedAfterWildChar() */
2040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        COMPLETE,       /* The post dial string playback is complete */
2050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        CANCELLED,       /* The post dial string playback was cancelled
2060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                           with cancelPostDial() */
2070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        PAUSE           /* The post dial string playback is pausing for a
2080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                           call to processNextPostDialChar*/
2090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void clearUserData(){
21222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville        mUserData = null;
2130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public abstract PostDialState getPostDialState();
2160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
2180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Returns the portion of the post dial string that has not
2190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * yet been dialed, or "" if none
2200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
2210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public abstract String getRemainingPostDialString();
2220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
2240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * See Phone.setOnPostDialWaitCharacter()
2250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
2260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public abstract void proceedAfterWaitChar();
2280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
2300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * See Phone.setOnPostDialWildCharacter()
2310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
2320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public abstract void proceedAfterWildChar(String str);
2330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
2340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Cancel any post
2350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
2360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public abstract void cancelPostDial();
2370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
2390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Returns the caller id presentation type for incoming and waiting calls
2400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @return one of PRESENTATION_*
2410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
2420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public abstract int getNumberPresentation();
2430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
2450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Returns the User to User Signaling (UUS) information associated with
2460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * incoming and waiting calls
2470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @return UUSInfo containing the UUS userdata.
2480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
2490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public abstract UUSInfo getUUSInfo();
2500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
2520742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela     * Returns the CallFail reason provided by the RIL with the result of
2530742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela     * RIL_REQUEST_LAST_CALL_FAIL_CAUSE
2540742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela     */
2550742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela    public abstract int getPreciseDisconnectCause();
2560742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela
2570742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela    /**
2580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Build a human representation of a connection instance, suitable for debugging.
2590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Don't log personal stuff unless in debug mode.
2600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @return a string representing the internal state of this connection.
2610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
2620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public String toString() {
2630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        StringBuilder str = new StringBuilder(128);
2640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
26599c2e1d6749cfad2a8ca94a47857d8c3bfc09454Wink Saville        if (Rlog.isLoggable(LOG_TAG, Log.DEBUG)) {
2660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            str.append("addr: " + getAddress())
2670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    .append(" pres.: " + getNumberPresentation())
2680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    .append(" dial: " + getOrigDialString())
2690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    .append(" postdial: " + getRemainingPostDialString())
2700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    .append(" cnap name: " + getCnapName())
2710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    .append("(" + getCnapNamePresentation() + ")");
2720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
2730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        str.append(" incoming: " + isIncoming())
2740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                .append(" state: " + getState())
2750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                .append(" post dial state: " + getPostDialState());
2760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return str.toString();
2770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville}
279