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