1c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela/*
2c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela * Copyright (C) 2014 The Android Open Source Project
3c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela *
4c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela * Licensed under the Apache License, Version 2.0 (the "License");
5c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela * you may not use this file except in compliance with the License.
6c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela * You may obtain a copy of the License at
7c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela *
8c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela *      http://www.apache.org/licenses/LICENSE-2.0
9c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela *
10c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela * Unless required by applicable law or agreed to in writing, software
11c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela * distributed under the License is distributed on an "AS IS" BASIS,
12c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela * See the License for the specific language governing permissions and
14c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela * limitations under the License.
15c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela */
16c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela
17c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuelapackage android.telephony;
18c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela
19c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuelaimport android.os.Bundle;
20c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuelaimport android.os.Parcel;
21c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuelaimport android.os.Parcelable;
22c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuelaimport android.telephony.Rlog;
23c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuelaimport android.telephony.DisconnectCause;
24c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuelaimport android.telephony.PreciseDisconnectCause;
25c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela
26c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela/**
27c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela * Contains precise call state and call fail causes generated by the
28c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela * framework and the RIL.
29c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela *
30c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela * The following call information is included in returned PreciseCallState:
31c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela *
32c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela * <ul>
33c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela *   <li>Ringing call state.
34c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela *   <li>Foreground call state.
35c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela *   <li>Background call state.
36c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela *   <li>Disconnect cause; generated by the framework.
37c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela *   <li>Precise disconnect cause; generated by the RIL.
38c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela * </ul>
39c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela *
40c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela * @hide
41c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela */
42c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuelapublic class PreciseCallState implements Parcelable {
43c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela
44c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    /** Call state is not valid (Not received a call state). */
45c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    public static final int PRECISE_CALL_STATE_NOT_VALID =      -1;
46c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    /** Call state: No activity. */
47c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    public static final int PRECISE_CALL_STATE_IDLE =           0;
48c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    /** Call state: Active. */
49c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    public static final int PRECISE_CALL_STATE_ACTIVE =         1;
50c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    /** Call state: On hold. */
51c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    public static final int PRECISE_CALL_STATE_HOLDING =        2;
52c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    /** Call state: Dialing. */
53c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    public static final int PRECISE_CALL_STATE_DIALING =        3;
54c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    /** Call state: Alerting. */
55c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    public static final int PRECISE_CALL_STATE_ALERTING =       4;
56c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    /** Call state: Incoming. */
57c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    public static final int PRECISE_CALL_STATE_INCOMING =       5;
58c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    /** Call state: Waiting. */
59c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    public static final int PRECISE_CALL_STATE_WAITING =        6;
60c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    /** Call state: Disconnected. */
61c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    public static final int PRECISE_CALL_STATE_DISCONNECTED =   7;
62c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    /** Call state: Disconnecting. */
63c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    public static final int PRECISE_CALL_STATE_DISCONNECTING =  8;
64c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela
65c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    private int mRingingCallState = PRECISE_CALL_STATE_NOT_VALID;
66c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    private int mForegroundCallState = PRECISE_CALL_STATE_NOT_VALID;
67c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    private int mBackgroundCallState = PRECISE_CALL_STATE_NOT_VALID;
68c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    private int mDisconnectCause = DisconnectCause.NOT_VALID;
69c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    private int mPreciseDisconnectCause = PreciseDisconnectCause.NOT_VALID;
70c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela
71c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    /**
72c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * Constructor
73c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     *
74c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @hide
75c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     */
76c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    public PreciseCallState(int ringingCall, int foregroundCall, int backgroundCall,
77c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela            int disconnectCause, int preciseDisconnectCause) {
78c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        mRingingCallState = ringingCall;
79c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        mForegroundCallState = foregroundCall;
80c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        mBackgroundCallState = backgroundCall;
81c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        mDisconnectCause = disconnectCause;
82c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        mPreciseDisconnectCause = preciseDisconnectCause;
83c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    }
84c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela
85c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    /**
86c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * Empty Constructor
87c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     *
88c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @hide
89c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     */
90c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    public PreciseCallState() {
91c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    }
92c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela
93c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    /**
94c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * Construct a PreciseCallState object from the given parcel.
95c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     */
96c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    private PreciseCallState(Parcel in) {
97c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        mRingingCallState = in.readInt();
98c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        mForegroundCallState = in.readInt();
99c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        mBackgroundCallState = in.readInt();
100c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        mDisconnectCause = in.readInt();
101c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        mPreciseDisconnectCause = in.readInt();
102c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    }
103c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela
104c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    /**
105c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * Get precise ringing call state
106c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     *
107c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseCallState#PRECISE_CALL_STATE_NOT_VALID
108c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseCallState#PRECISE_CALL_STATE_IDLE
109c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseCallState#PRECISE_CALL_STATE_ACTIVE
110c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseCallState#PRECISE_CALL_STATE_HOLDING
111c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseCallState#PRECISE_CALL_STATE_DIALING
112c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseCallState#PRECISE_CALL_STATE_ALERTING
113c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseCallState#PRECISE_CALL_STATE_INCOMING
114c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseCallState#PRECISE_CALL_STATE_WAITING
115c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseCallState#PRECISE_CALL_STATE_DISCONNECTED
116c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseCallState#PRECISE_CALL_STATE_DISCONNECTING
117c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     */
118c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    public int getRingingCallState() {
119c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        return mRingingCallState;
120c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    }
121c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela
122c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    /**
123c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * Get precise foreground call state
124c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     *
125c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseCallState#PRECISE_CALL_STATE_NOT_VALID
126c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseCallState#PRECISE_CALL_STATE_IDLE
127c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseCallState#PRECISE_CALL_STATE_ACTIVE
128c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseCallState#PRECISE_CALL_STATE_HOLDING
129c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseCallState#PRECISE_CALL_STATE_DIALING
130c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseCallState#PRECISE_CALL_STATE_ALERTING
131c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseCallState#PRECISE_CALL_STATE_INCOMING
132c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseCallState#PRECISE_CALL_STATE_WAITING
133c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseCallState#PRECISE_CALL_STATE_DISCONNECTED
134c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseCallState#PRECISE_CALL_STATE_DISCONNECTING
135c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     */
136c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    public int getForegroundCallState() {
137c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        return mForegroundCallState;
138c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    }
139c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela
140c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    /**
141c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * Get precise background call state
142c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     *
143c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseCallState#PRECISE_CALL_STATE_NOT_VALID
144c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseCallState#PRECISE_CALL_STATE_IDLE
145c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseCallState#PRECISE_CALL_STATE_ACTIVE
146c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseCallState#PRECISE_CALL_STATE_HOLDING
147c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseCallState#PRECISE_CALL_STATE_DIALING
148c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseCallState#PRECISE_CALL_STATE_ALERTING
149c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseCallState#PRECISE_CALL_STATE_INCOMING
150c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseCallState#PRECISE_CALL_STATE_WAITING
151c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseCallState#PRECISE_CALL_STATE_DISCONNECTED
152c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseCallState#PRECISE_CALL_STATE_DISCONNECTING
153c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     */
154c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    public int getBackgroundCallState() {
155c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        return mBackgroundCallState;
156c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    }
157c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela
158c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    /**
159c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * Get disconnect cause generated by the framework
160c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     *
161c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see DisconnectCause#NOT_VALID
162c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see DisconnectCause#NOT_DISCONNECTED
163c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see DisconnectCause#INCOMING_MISSED
164c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see DisconnectCause#NORMAL
165c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see DisconnectCause#LOCAL
166c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see DisconnectCause#BUSY
167c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see DisconnectCause#CONGESTION
168c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see DisconnectCause#MMI
169c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see DisconnectCause#INVALID_NUMBER
170c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see DisconnectCause#NUMBER_UNREACHABLE
171c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see DisconnectCause#SERVER_UNREACHABLE
172c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see DisconnectCause#INVALID_CREDENTIALS
173c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see DisconnectCause#OUT_OF_NETWORK
174c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see DisconnectCause#SERVER_ERROR
175c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see DisconnectCause#TIMED_OUT
176c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see DisconnectCause#LOST_SIGNAL
177c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see DisconnectCause#LIMIT_EXCEEDED
178c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see DisconnectCause#INCOMING_REJECTED
179c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see DisconnectCause#POWER_OFF
180c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see DisconnectCause#OUT_OF_SERVICE
181c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see DisconnectCause#ICC_ERROR
182c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see DisconnectCause#CALL_BARRED
183c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see DisconnectCause#FDN_BLOCKED
184c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see DisconnectCause#CS_RESTRICTED
185c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see DisconnectCause#CS_RESTRICTED_NORMAL
186c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see DisconnectCause#CS_RESTRICTED_EMERGENCY
187c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see DisconnectCause#UNOBTAINABLE_NUMBER
188c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see DisconnectCause#CDMA_LOCKED_UNTIL_POWER_CYCLE
189c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see DisconnectCause#CDMA_DROP
190c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see DisconnectCause#CDMA_INTERCEPT
191c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see DisconnectCause#CDMA_REORDER
192c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see DisconnectCause#CDMA_SO_REJECT
193c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see DisconnectCause#CDMA_RETRY_ORDER
194c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see DisconnectCause#CDMA_ACCESS_FAILURE
195c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see DisconnectCause#CDMA_PREEMPTED
196c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see DisconnectCause#CDMA_NOT_EMERGENCY
197c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see DisconnectCause#CDMA_ACCESS_BLOCKED
198c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see DisconnectCause#ERROR_UNSPECIFIED
199c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     */
200c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    public int getDisconnectCause() {
201c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        return mDisconnectCause;
202c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    }
203c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela
204c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    /**
205c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * Get disconnect cause generated by the RIL
206c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     *
207c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseDisconnectCause#NOT_VALID
208c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseDisconnectCause#NO_DISCONNECT_CAUSE_AVAILABLE
209c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseDisconnectCause#UNOBTAINABLE_NUMBER
210c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseDisconnectCause#NORMAL
211c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseDisconnectCause#BUSY
212c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseDisconnectCause#NUMBER_CHANGED
213c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseDisconnectCause#STATUS_ENQUIRY
214c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseDisconnectCause#NORMAL_UNSPECIFIED
215c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseDisconnectCause#NO_CIRCUIT_AVAIL
216c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseDisconnectCause#TEMPORARY_FAILURE
217c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseDisconnectCause#SWITCHING_CONGESTION
218c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseDisconnectCause#CHANNEL_NOT_AVAIL
219c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseDisconnectCause#QOS_NOT_AVAIL
220c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseDisconnectCause#BEARER_NOT_AVAIL
221c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseDisconnectCause#ACM_LIMIT_EXCEEDED
222c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseDisconnectCause#CALL_BARRED
223c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseDisconnectCause#FDN_BLOCKED
224c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseDisconnectCause#IMSI_UNKNOWN_IN_VLR
225c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseDisconnectCause#IMEI_NOT_ACCEPTED
226c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseDisconnectCause#CDMA_LOCKED_UNTIL_POWER_CYCLE
227c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseDisconnectCause#CDMA_DROP
228c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseDisconnectCause#CDMA_INTERCEPT
229c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseDisconnectCause#CDMA_REORDER
230c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseDisconnectCause#CDMA_SO_REJECT
231c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseDisconnectCause#CDMA_RETRY_ORDER
232c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseDisconnectCause#CDMA_ACCESS_FAILURE
233c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseDisconnectCause#CDMA_PREEMPTED
234c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseDisconnectCause#CDMA_NOT_EMERGENCY
235c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseDisconnectCause#CDMA_ACCESS_BLOCKED
236c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see PreciseDisconnectCause#ERROR_UNSPECIFIED
237c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     */
238c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    public int getPreciseDisconnectCause() {
239c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        return mPreciseDisconnectCause;
240c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    }
241c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela
242c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    @Override
243c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    public int describeContents() {
244c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        return 0;
245c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    }
246c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela
247c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    @Override
248c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    public void writeToParcel(Parcel out, int flags) {
249c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        out.writeInt(mRingingCallState);
250c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        out.writeInt(mForegroundCallState);
251c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        out.writeInt(mBackgroundCallState);
252c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        out.writeInt(mDisconnectCause);
253c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        out.writeInt(mPreciseDisconnectCause);
254c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    }
255c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela
256c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    public static final Parcelable.Creator<PreciseCallState> CREATOR
257c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela            = new Parcelable.Creator<PreciseCallState>() {
258c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela
259c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        public PreciseCallState createFromParcel(Parcel in) {
260c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela            return new PreciseCallState(in);
261c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        }
262c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela
263c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        public PreciseCallState[] newArray(int size) {
264c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela            return new PreciseCallState[size];
265c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        }
266c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    };
267c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela
268c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    @Override
269c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    public int hashCode() {
270c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        final int prime = 31;
271c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        int result = 1;
272c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        result = prime * result + mRingingCallState;
273c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        result = prime * result + mForegroundCallState;
274c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        result = prime * result + mBackgroundCallState;
275c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        result = prime * result + mDisconnectCause;
276c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        result = prime * result + mPreciseDisconnectCause;
277c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        return result;
278c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    }
279c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela
280c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    @Override
281c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    public boolean equals(Object obj) {
282c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        if (this == obj) {
283c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela            return true;
284c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        }
285c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        if (obj == null) {
286c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela            return false;
287c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        }
288c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        if (getClass() != obj.getClass()) {
289c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela            return false;
290c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        }
291c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        PreciseCallState other = (PreciseCallState) obj;
292c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        return (mRingingCallState != other.mRingingCallState &&
293c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela            mForegroundCallState != other.mForegroundCallState &&
294c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela            mBackgroundCallState != other.mBackgroundCallState &&
295c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela            mDisconnectCause != other.mDisconnectCause &&
296c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela            mPreciseDisconnectCause != other.mPreciseDisconnectCause);
297c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    }
298c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela
299c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    @Override
300c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    public String toString() {
301c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        StringBuffer sb = new StringBuffer();
302c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela
303c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        sb.append("Ringing call state: " + mRingingCallState);
304c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        sb.append(", Foreground call state: " + mForegroundCallState);
305c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        sb.append(", Background call state: " + mBackgroundCallState);
306c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        sb.append(", Disconnect cause: " + mDisconnectCause);
307c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        sb.append(", Precise disconnect cause: " + mPreciseDisconnectCause);
308c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela
309c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        return sb.toString();
310c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    }
311c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela}
312