Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 53f70140 authored by Anders Kristensen's avatar Anders Kristensen Committed by Gerrit Code Review
Browse files

Merge "Remove duplicate call disconnect codes."

parents d6381a0b b7b7a621
Loading
Loading
Loading
Loading
+4 −42
Original line number Diff line number Diff line
@@ -30,46 +30,6 @@ public abstract class Connection {

    private static String LOG_TAG = "Connection";

    public enum DisconnectCause {
        NOT_DISCONNECTED,               /* has not yet disconnected */
        INCOMING_MISSED,                /* an incoming call that was missed and never answered */
        NORMAL,                         /* normal; remote */
        LOCAL,                          /* normal; local hangup */
        BUSY,                           /* outgoing call to busy line */
        CONGESTION,                     /* outgoing call to congested network */
        MMI,                            /* not presently used; dial() returns null */
        INVALID_NUMBER,                 /* invalid dial string */
        NUMBER_UNREACHABLE,             /* cannot reach the peer */
        SERVER_UNREACHABLE,             /* cannot reach the server */
        INVALID_CREDENTIALS,            /* invalid credentials */
        OUT_OF_NETWORK,                 /* calling from out of network is not allowed */
        SERVER_ERROR,                   /* server error */
        TIMED_OUT,                      /* client timed out */
        LOST_SIGNAL,
        LIMIT_EXCEEDED,                 /* eg GSM ACM limit exceeded */
        INCOMING_REJECTED,              /* an incoming call that was rejected */
        POWER_OFF,                      /* radio is turned off explicitly */
        OUT_OF_SERVICE,                 /* out of service */
        ICC_ERROR,                      /* No ICC, ICC locked, or other ICC error */
        CALL_BARRED,                    /* call was blocked by call barring */
        FDN_BLOCKED,                    /* call was blocked by fixed dial number */
        CS_RESTRICTED,                  /* call was blocked by restricted all voice access */
        CS_RESTRICTED_NORMAL,           /* call was blocked by restricted normal voice access */
        CS_RESTRICTED_EMERGENCY,        /* call was blocked by restricted emergency voice access */
        UNOBTAINABLE_NUMBER,            /* Unassigned number (3GPP TS 24.008 table 10.5.123) */
        CDMA_LOCKED_UNTIL_POWER_CYCLE,  /* MS is locked until next power cycle */
        CDMA_DROP,
        CDMA_INTERCEPT,                 /* INTERCEPT order received, MS state idle entered */
        CDMA_REORDER,                   /* MS has been redirected, call is cancelled */
        CDMA_SO_REJECT,                 /* service option rejection */
        CDMA_RETRY_ORDER,               /* requested service is rejected, retry delay is set */
        CDMA_ACCESS_FAILURE,
        CDMA_PREEMPTED,
        CDMA_NOT_EMERGENCY,              /* not an emergency call */
        CDMA_ACCESS_BLOCKED,            /* Access Blocked by CDMA network */
        ERROR_UNSPECIFIED
    }

    Object mUserData;

    /* Instance Methods */
@@ -153,9 +113,11 @@ public abstract class Connection {
    public abstract long getHoldDurationMillis();

    /**
     * Returns "NOT_DISCONNECTED" if not yet disconnected.
     * Returns call disconnect cause. Values are defined in
     * {@link android.telephony.DisconnectCause}. If the call is not yet
     * disconnected, NOT_DISCONNECTED is returned.
     */
    public abstract DisconnectCause getDisconnectCause();
    public abstract int getDisconnectCause();

    /**
     * Returns true of this connection originated elsewhere
+2 −168
Original line number Diff line number Diff line
@@ -201,9 +201,9 @@ public class DefaultPhoneNotifier implements PhoneNotifier {
        }
    }

    public void notifyDisconnectCause(Connection.DisconnectCause cause, int preciseCause) {
    public void notifyDisconnectCause(int cause, int preciseCause) {
        try {
            mRegistry.notifyDisconnectCause(convertDisconnectCause(cause), preciseCause);
            mRegistry.notifyDisconnectCause(cause, preciseCause);
        } catch (RemoteException ex) {
            // system process is dead
        }
@@ -373,170 +373,4 @@ public class DefaultPhoneNotifier implements PhoneNotifier {
                return Call.State.IDLE;
        }
    }

    /**
     * Convert the {@link DisconnectCause} enum into the DisconnectCause.*
     * constants for the public API.
     */
    public static int convertDisconnectCause(Connection.DisconnectCause cause) {
        switch (cause) {
            case NOT_DISCONNECTED:
                return DisconnectCause.NOT_DISCONNECTED;
            case INCOMING_MISSED:
                return DisconnectCause.INCOMING_MISSED;
            case NORMAL:
                return DisconnectCause.NORMAL;
            case LOCAL:
                return DisconnectCause.LOCAL;
            case BUSY:
                return DisconnectCause.BUSY;
            case CONGESTION:
                return DisconnectCause.CONGESTION;
            case MMI:
                return DisconnectCause.MMI;
            case INVALID_NUMBER:
                return DisconnectCause.INVALID_NUMBER;
            case NUMBER_UNREACHABLE:
                return DisconnectCause.NUMBER_UNREACHABLE;
            case SERVER_UNREACHABLE:
                return DisconnectCause.SERVER_UNREACHABLE;
            case INVALID_CREDENTIALS:
                return DisconnectCause.INVALID_CREDENTIALS;
            case OUT_OF_NETWORK:
                return DisconnectCause.OUT_OF_NETWORK;
            case SERVER_ERROR:
                return DisconnectCause.SERVER_ERROR;
            case TIMED_OUT:
                return DisconnectCause.TIMED_OUT;
            case LOST_SIGNAL:
                return DisconnectCause.LOST_SIGNAL;
            case LIMIT_EXCEEDED:
                return DisconnectCause.LIMIT_EXCEEDED;
            case INCOMING_REJECTED:
                return DisconnectCause.INCOMING_REJECTED;
            case POWER_OFF:
                return DisconnectCause.POWER_OFF;
            case OUT_OF_SERVICE:
                return DisconnectCause.OUT_OF_SERVICE;
            case ICC_ERROR:
                return DisconnectCause.ICC_ERROR;
            case CALL_BARRED:
                return DisconnectCause.CALL_BARRED;
            case FDN_BLOCKED:
                return DisconnectCause.FDN_BLOCKED;
            case CS_RESTRICTED:
                return DisconnectCause.CS_RESTRICTED;
            case CS_RESTRICTED_NORMAL:
                return DisconnectCause.CS_RESTRICTED_NORMAL;
            case CS_RESTRICTED_EMERGENCY:
                return DisconnectCause.CS_RESTRICTED_EMERGENCY;
            case UNOBTAINABLE_NUMBER:
                return DisconnectCause.UNOBTAINABLE_NUMBER;
            case CDMA_LOCKED_UNTIL_POWER_CYCLE:
                return DisconnectCause.CDMA_LOCKED_UNTIL_POWER_CYCLE;
            case CDMA_DROP:
                return DisconnectCause.CDMA_DROP;
            case CDMA_INTERCEPT:
                return DisconnectCause.CDMA_INTERCEPT;
            case CDMA_REORDER:
                return DisconnectCause.CDMA_REORDER;
            case CDMA_SO_REJECT:
                return DisconnectCause.CDMA_SO_REJECT;
            case CDMA_RETRY_ORDER:
                return DisconnectCause.CDMA_RETRY_ORDER;
            case CDMA_ACCESS_FAILURE:
                return DisconnectCause.CDMA_ACCESS_FAILURE;
            case CDMA_PREEMPTED:
                return DisconnectCause.CDMA_PREEMPTED;
            case CDMA_NOT_EMERGENCY:
                return DisconnectCause.CDMA_NOT_EMERGENCY;
            case CDMA_ACCESS_BLOCKED:
                return DisconnectCause.CDMA_ACCESS_BLOCKED;
            default:
                return DisconnectCause.ERROR_UNSPECIFIED;
        }
    }

    /**
     * Convert the DisconnectCause.* constants into the {@link DisconnectCause}
     * enum for the public API.
     */
    public static Connection.DisconnectCause convertDisconnectCause(int disconnectCause) {
        switch (disconnectCause) {
            case DisconnectCause.NOT_DISCONNECTED:
                return Connection.DisconnectCause.NOT_DISCONNECTED;
            case DisconnectCause.INCOMING_MISSED:
                return Connection.DisconnectCause.INCOMING_MISSED;
            case DisconnectCause.NORMAL:
                return Connection.DisconnectCause.NORMAL;
            case DisconnectCause.LOCAL:
                return Connection.DisconnectCause.LOCAL;
            case DisconnectCause.BUSY:
                return Connection.DisconnectCause.BUSY;
            case DisconnectCause.CONGESTION:
                return Connection.DisconnectCause.CONGESTION;
            case DisconnectCause.MMI:
                return Connection.DisconnectCause.MMI;
            case DisconnectCause.INVALID_NUMBER:
                return Connection.DisconnectCause.INVALID_NUMBER;
            case DisconnectCause.NUMBER_UNREACHABLE:
                return Connection.DisconnectCause.NUMBER_UNREACHABLE;
            case DisconnectCause.SERVER_UNREACHABLE:
                return Connection.DisconnectCause.SERVER_UNREACHABLE;
            case DisconnectCause.INVALID_CREDENTIALS:
                return Connection.DisconnectCause.INVALID_CREDENTIALS;
            case DisconnectCause.OUT_OF_NETWORK:
                return Connection.DisconnectCause.OUT_OF_NETWORK;
            case DisconnectCause.SERVER_ERROR:
                return Connection.DisconnectCause.SERVER_ERROR;
            case DisconnectCause.TIMED_OUT:
                return Connection.DisconnectCause.TIMED_OUT;
            case DisconnectCause.LOST_SIGNAL:
                return Connection.DisconnectCause.LOST_SIGNAL;
            case DisconnectCause.LIMIT_EXCEEDED:
                return Connection.DisconnectCause.LIMIT_EXCEEDED;
            case DisconnectCause.INCOMING_REJECTED:
                return Connection.DisconnectCause.INCOMING_REJECTED;
            case DisconnectCause.POWER_OFF:
                return Connection.DisconnectCause.POWER_OFF;
            case DisconnectCause.OUT_OF_SERVICE:
                return Connection.DisconnectCause.OUT_OF_SERVICE;
            case DisconnectCause.ICC_ERROR:
                return Connection.DisconnectCause.ICC_ERROR;
            case DisconnectCause.CALL_BARRED:
                return Connection.DisconnectCause.CALL_BARRED;
            case DisconnectCause.FDN_BLOCKED:
                return Connection.DisconnectCause.FDN_BLOCKED;
            case DisconnectCause.CS_RESTRICTED:
                return Connection.DisconnectCause.CS_RESTRICTED;
            case DisconnectCause.CS_RESTRICTED_NORMAL:
                return Connection.DisconnectCause.CS_RESTRICTED_NORMAL;
            case DisconnectCause.CS_RESTRICTED_EMERGENCY:
                return Connection.DisconnectCause.CS_RESTRICTED_EMERGENCY;
            case DisconnectCause.UNOBTAINABLE_NUMBER:
                return Connection.DisconnectCause.UNOBTAINABLE_NUMBER;
            case DisconnectCause.CDMA_LOCKED_UNTIL_POWER_CYCLE:
                return Connection.DisconnectCause.CDMA_LOCKED_UNTIL_POWER_CYCLE;
            case DisconnectCause.CDMA_DROP:
                return Connection.DisconnectCause.CDMA_DROP;
            case DisconnectCause.CDMA_INTERCEPT:
                return Connection.DisconnectCause.CDMA_INTERCEPT;
            case DisconnectCause.CDMA_REORDER:
                return Connection.DisconnectCause.CDMA_REORDER;
            case DisconnectCause.CDMA_SO_REJECT:
                return Connection.DisconnectCause.CDMA_SO_REJECT;
            case DisconnectCause.CDMA_RETRY_ORDER:
                return Connection.DisconnectCause.CDMA_RETRY_ORDER;
            case DisconnectCause.CDMA_ACCESS_FAILURE:
                return Connection.DisconnectCause.CDMA_ACCESS_FAILURE;
            case DisconnectCause.CDMA_PREEMPTED:
                return Connection.DisconnectCause.CDMA_PREEMPTED;
            case DisconnectCause.CDMA_NOT_EMERGENCY:
                return Connection.DisconnectCause.CDMA_NOT_EMERGENCY;
            case DisconnectCause.CDMA_ACCESS_BLOCKED:
                return Connection.DisconnectCause.CDMA_ACCESS_BLOCKED;
            default:
                return Connection.DisconnectCause.ERROR_UNSPECIFIED;
        }
    }
}
+1 −1
Original line number Diff line number Diff line
@@ -51,7 +51,7 @@ public interface PhoneNotifier {

    public void notifyPreciseCallState(Phone sender);

    public void notifyDisconnectCause(Connection.DisconnectCause cause, int preciseCause);
    public void notifyDisconnectCause(int cause, int preciseCause);

    public void notifyPreciseDataConnectionFailed(Phone sender, String reason, String apnType,
            String apn, String failCause);
+10 −9
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import android.os.Handler;
import android.os.Message;
import android.os.Registrant;
import android.os.RegistrantList;
import android.telephony.DisconnectCause;
import android.telephony.PhoneNumberUtils;
import android.telephony.ServiceState;
import android.telephony.Rlog;
@@ -115,7 +116,7 @@ public final class CdmaCallTracker extends CallTracker {
                    // Since by now we are unregistered, we won't notify
                    // PhoneApp that the call is gone. Do that here
                    Rlog.d(LOG_TAG, "dispose: call connnection onDisconnect, cause LOST_SIGNAL");
                    c.onDisconnect(Connection.DisconnectCause.LOST_SIGNAL);
                    c.onDisconnect(DisconnectCause.LOST_SIGNAL);
                }
            } catch (CallStateException ex) {
                Rlog.e(LOG_TAG, "dispose: unexpected error on hangup", ex);
@@ -126,7 +127,7 @@ public final class CdmaCallTracker extends CallTracker {
            if(mPendingMO != null) {
                hangup(mPendingMO);
                Rlog.d(LOG_TAG, "dispose: call mPendingMO.onDsiconnect, cause LOST_SIGNAL");
                mPendingMO.onDisconnect(Connection.DisconnectCause.LOST_SIGNAL);
                mPendingMO.onDisconnect(DisconnectCause.LOST_SIGNAL);
            }
        } catch (CallStateException ex) {
            Rlog.e(LOG_TAG, "dispose: unexpected error on hangup", ex);
@@ -219,7 +220,7 @@ public final class CdmaCallTracker extends CallTracker {
        if (mPendingMO.mAddress == null || mPendingMO.mAddress.length() == 0
            || mPendingMO.mAddress.indexOf(PhoneNumberUtils.WILD) >= 0) {
            // Phone number is invalid
            mPendingMO.mCause = Connection.DisconnectCause.INVALID_NUMBER;
            mPendingMO.mCause = DisconnectCause.INVALID_NUMBER;

            // handlePollCalls() will notice this call not present
            // and will mark it as dropped.
@@ -665,11 +666,11 @@ public final class CdmaCallTracker extends CallTracker {

            if (conn.isIncoming() && conn.getConnectTime() == 0) {
                // Missed or rejected call
                Connection.DisconnectCause cause;
                if (conn.mCause == Connection.DisconnectCause.LOCAL) {
                    cause = Connection.DisconnectCause.INCOMING_REJECTED;
                int cause;
                if (conn.mCause == DisconnectCause.LOCAL) {
                    cause = DisconnectCause.INCOMING_REJECTED;
                } else {
                    cause = Connection.DisconnectCause.INCOMING_MISSED;
                    cause = DisconnectCause.INCOMING_MISSED;
                }

                if (Phone.DEBUG_PHONE) {
@@ -678,8 +679,8 @@ public final class CdmaCallTracker extends CallTracker {
                }
                mDroppedDuringPoll.remove(i);
                hasAnyCallDisconnected |= conn.onDisconnect(cause);
            } else if (conn.mCause == Connection.DisconnectCause.LOCAL
                    || conn.mCause == Connection.DisconnectCause.INVALID_NUMBER) {
            } else if (conn.mCause == DisconnectCause.LOCAL
                    || conn.mCause == DisconnectCause.INVALID_NUMBER) {
                mDroppedDuringPoll.remove(i);
                hasAnyCallDisconnected |= conn.onDisconnect(conn.mCause);
            }
+14 −6
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import android.os.Message;
import android.os.PowerManager;
import android.os.Registrant;
import android.os.SystemClock;
import android.telephony.DisconnectCause;
import android.telephony.Rlog;
import android.text.TextUtils;

@@ -75,7 +76,7 @@ public class CdmaConnection extends Connection {

    int mNextPostDialChar;       // index into postDialString

    DisconnectCause mCause = DisconnectCause.NOT_DISCONNECTED;
    int mCause = DisconnectCause.NOT_DISCONNECTED;
    PostDialState mPostDialState = PostDialState.NOT_STARTED;
    int mNumberPresentation = PhoneConstants.PRESENTATION_ALLOWED;
    int mPreciseCause = 0;
@@ -276,7 +277,7 @@ public class CdmaConnection extends Connection {
    }

    @Override
    public DisconnectCause getDisconnectCause() {
    public int getDisconnectCause() {
        return mCause;
    }

@@ -371,8 +372,12 @@ public class CdmaConnection extends Connection {
        mPreciseCause = 0;
    }

    DisconnectCause
    disconnectCauseFromCode(int causeCode) {
    /**
     * Maps RIL call disconnect code to {@link DisconnectCause}.
     * @param causeCode RIL disconnect code
     * @return the corresponding value from {@link DisconnectCause}
     */
    int disconnectCauseFromCode(int causeCode) {
        /**
         * See 22.001 Annex F.4 for mapping of cause codes
         * to local tones
@@ -441,9 +446,12 @@ public class CdmaConnection extends Connection {
        onDisconnect(disconnectCauseFromCode(causeCode));
    }

    /** Called when the radio indicates the connection has been disconnected */
    /**
     * Called when the radio indicates the connection has been disconnected.
     * @param cause call disconnect cause; values are defined in {@link DisconnectCause}
     */
    /*package*/ boolean
    onDisconnect(DisconnectCause cause) {
    onDisconnect(int cause) {
        boolean changed = false;

        mCause = cause;
Loading