1f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville/*
2f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville * Copyright (c) 2013 The Android Open Source Project
3f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville *
4f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville * Licensed under the Apache License, Version 2.0 (the "License");
5f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville * you may not use this file except in compliance with the License.
6f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville * You may obtain a copy of the License at
7f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville *
8f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville *      http://www.apache.org/licenses/LICENSE-2.0
9f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville *
10f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville * Unless required by applicable law or agreed to in writing, software
11f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville * distributed under the License is distributed on an "AS IS" BASIS,
12f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville * See the License for the specific language governing permissions and
14f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville * limitations under the License.
15f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville */
16f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
17f8458ff9d97f8961d67c41ee107129ecba873f36Wink Savillepackage com.android.ims;
18f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
19f8458ff9d97f8961d67c41ee107129ecba873f36Wink Savilleimport android.os.Parcel;
20f8458ff9d97f8961d67c41ee107129ecba873f36Wink Savilleimport android.os.Parcelable;
21f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
22f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville/**
23f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville * This class enables an application to get details on why a method call failed.
24f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville *
25f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville * @hide
26f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville */
27f8458ff9d97f8961d67c41ee107129ecba873f36Wink Savillepublic class ImsReasonInfo implements Parcelable {
28f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    /**
29f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * Specific code of each types
30f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     */
31f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_UNSPECIFIED = 0;
32f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
33f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    /**
34f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * LOCAL
35f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     */
36f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // IMS -> Telephony
37f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // The passed argument is an invalid
38f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_LOCAL_ILLEGAL_ARGUMENT = 101;
39f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // The operation is invoked in invalid call state
40f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_LOCAL_ILLEGAL_STATE = 102;
41f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // IMS service internal error
42f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_LOCAL_INTERNAL_ERROR = 103;
43f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // IMS service goes down (service connection is lost)
44f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_LOCAL_IMS_SERVICE_DOWN = 106;
45f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // No pending incoming call exists
46f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_LOCAL_NO_PENDING_CALL = 107;
47f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
48f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // IMS -> Telephony
49f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // Service unavailable; by power off
50f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_LOCAL_POWER_OFF = 111;
51f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // Service unavailable; by low battery
52f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_LOCAL_LOW_BATTERY = 112;
53f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // Service unavailable; by out of service (data service state)
54f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_LOCAL_NETWORK_NO_SERVICE = 121;
55f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // Service unavailable; by no LTE coverage
56f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // (VoLTE is not supported even though IMS is registered)
57f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_LOCAL_NETWORK_NO_LTE_COVERAGE = 122;
58f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // Service unavailable; by located in roaming area
59f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_LOCAL_NETWORK_ROAMING = 123;
60f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // Service unavailable; by IP changed
61f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_LOCAL_NETWORK_IP_CHANGED = 124;
62f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // Service unavailable; other
63f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_LOCAL_SERVICE_UNAVAILABLE = 131;
64f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // Service unavailable; IMS connection is lost (IMS is not registered)
65f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_LOCAL_NOT_REGISTERED = 132;
66f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
67f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // IMS <-> Telephony
68f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // Max call exceeded
69f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_LOCAL_CALL_EXCEEDED = 141;
70f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // IMS <- Telephony
71f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // Call busy
72f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_LOCAL_CALL_BUSY = 142;
73f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // Call decline
74f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_LOCAL_CALL_DECLINE = 143;
75f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // IMS -> Telephony
76f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // SRVCC is in progress
77f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_LOCAL_CALL_VCC_ON_PROGRESSING = 144;
78f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // Resource reservation is failed (QoS precondition)
79f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_LOCAL_CALL_RESOURCE_RESERVATION_FAILED = 145;
80f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // Retry CS call; VoLTE service can't be provided by the network or remote end
81f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // Resolve the extra code(EXTRA_CODE_CALL_RETRY_*) if the below code is set
82f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_LOCAL_CALL_CS_RETRY_REQUIRED = 146;
83f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // Retry VoLTE call; VoLTE service can't be provided by the network temporarily
84f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_LOCAL_CALL_VOLTE_RETRY_REQUIRED = 147;
85f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // IMS call is already terminated (in TERMINATED state)
86f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_LOCAL_CALL_TERMINATED = 148;
87f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
88f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    /**
89f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * TIMEOUT (IMS -> Telephony)
90f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     */
91f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // 1xx waiting timer is expired after sending INVITE request (MO only)
92f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_TIMEOUT_1XX_WAITING = 201;
93f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // User no answer during call setup operation (MO/MT)
94f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // MO : 200 OK to INVITE request is not received,
95f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // MT : No action from user after alerting the call
96f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_TIMEOUT_NO_ANSWER = 202;
97f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // User no answer during call update operation (MO/MT)
98f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // MO : 200 OK to re-INVITE request is not received,
99f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // MT : No action from user after alerting the call
100f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_TIMEOUT_NO_ANSWER_CALL_UPDATE = 203;
101f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
102ddf570e8226bd21448b44b3327d4bcb2608f4d00Shriram Ganesh    //Call failures for FDN
103ddf570e8226bd21448b44b3327d4bcb2608f4d00Shriram Ganesh    public static final int CODE_FDN_BLOCKED = 241;
104ddf570e8226bd21448b44b3327d4bcb2608f4d00Shriram Ganesh
105f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    /**
106f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * STATUSCODE (SIP response code) (IMS -> Telephony)
107f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     */
108f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // 3xx responses
109f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // SIP request is redirected
110f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_SIP_REDIRECTED = 321;
111f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // 4xx responses
112f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // 400 : Bad Request
113f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_SIP_BAD_REQUEST = 331;
114f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // 403 : Forbidden
115f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_SIP_FORBIDDEN = 332;
116f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // 404 : Not Found
117f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_SIP_NOT_FOUND = 333;
118f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // 415 : Unsupported Media Type
119f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // 416 : Unsupported URI Scheme
120f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // 420 : Bad Extension
121f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_SIP_NOT_SUPPORTED = 334;
122f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // 408 : Request Timeout
123f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_SIP_REQUEST_TIMEOUT = 335;
124f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // 480 : Temporarily Unavailable
125f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_SIP_TEMPRARILY_UNAVAILABLE = 336;
126f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // 484 : Address Incomplete
127f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_SIP_BAD_ADDRESS = 337;
128f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // 486 : Busy Here
129f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // 600 : Busy Everywhere
130f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_SIP_BUSY = 338;
131f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // 487 : Request Terminated
132f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_SIP_REQUEST_CANCELLED = 339;
133f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // 406 : Not Acceptable
134f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // 488 : Not Acceptable Here
135f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // 606 : Not Acceptable
136f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_SIP_NOT_ACCEPTABLE = 340;
137f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // 410 : Gone
138f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // 604 : Does Not Exist Anywhere
139f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_SIP_NOT_REACHABLE = 341;
140f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // Others
141f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_SIP_CLIENT_ERROR = 342;
142f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // 5xx responses
143f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // 501 : Server Internal Error
144f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_SIP_SERVER_INTERNAL_ERROR = 351;
145f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // 503 : Service Unavailable
146f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_SIP_SERVICE_UNAVAILABLE = 352;
147f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // 504 : Server Time-out
148f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_SIP_SERVER_TIMEOUT = 353;
149f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // Others
150f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_SIP_SERVER_ERROR = 354;
151f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // 6xx responses
152f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // 603 : Decline
153f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_SIP_USER_REJECTED = 361;
154f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // Others
155f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_SIP_GLOBAL_ERROR = 362;
156f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
157f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    /**
158f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * MEDIA (IMS -> Telephony)
159f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     */
160f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // Media resource initialization failed
161f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_MEDIA_INIT_FAILED = 401;
162f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // RTP timeout (no audio / video traffic in the session)
163f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_MEDIA_NO_DATA = 402;
164f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // Media is not supported; so dropped the call
165f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_MEDIA_NOT_ACCEPTABLE = 403;
166f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // Unknown media related errors
167f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_MEDIA_UNSPECIFIED = 404;
168f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
169f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    /**
170f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * USER
171f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     */
172f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // Telephony -> IMS
173f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // User triggers the call end
174f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_USER_TERMINATED = 501;
175f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // No action while an incoming call is ringing
176f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_USER_NOANSWER = 502;
177f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // User ignores an incoming call
178f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_USER_IGNORE = 503;
179f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // User declines an incoming call
180f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_USER_DECLINE = 504;
18193c33d7d9042319ec59609309a4e5d0bff1f1151Omkar Kolangade    // Device declines/ends a call due to low battery
18293c33d7d9042319ec59609309a4e5d0bff1f1151Omkar Kolangade    public static final int CODE_LOW_BATTERY = 505;
18393c33d7d9042319ec59609309a4e5d0bff1f1151Omkar Kolangade    // Device declines call due to blacklisted call ID
18493c33d7d9042319ec59609309a4e5d0bff1f1151Omkar Kolangade    public static final int CODE_BLACKLISTED_CALL_ID = 506;
185f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // IMS -> Telephony
186f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // The call is terminated by the network or remote user
187f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_USER_TERMINATED_BY_REMOTE = 510;
188f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
189f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    /**
190f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * Extra codes for the specific code value
191f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * This value can be referred when the code is CODE_LOCAL_CALL_CS_RETRY_REQUIRED.
192f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     */
193f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // Try to connect CS call; normal
194f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int EXTRA_CODE_CALL_RETRY_NORMAL = 1;
195f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // Try to connect CS call without the notification to user
196f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int EXTRA_CODE_CALL_RETRY_SILENT_REDIAL = 2;
197f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // Try to connect CS call by the settings of the menu
198f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int EXTRA_CODE_CALL_RETRY_BY_SETTINGS = 3;
199f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
200f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    /**
201f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * UT
202f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     */
203f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_UT_NOT_SUPPORTED = 801;
204f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_UT_SERVICE_UNAVAILABLE = 802;
205f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_UT_OPERATION_NOT_ALLOWED = 803;
20661aac3aa0a65d0edd20342440b984707f22a0ba5Shriram Ganesh    public static final int CODE_UT_NETWORK_ERROR = 804;
207f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final int CODE_UT_CB_PASSWORD_MISMATCH = 821;
208f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
2091c18285c36a0cf202dcf737c96766638e1e56c5dUma Maheswari Ramalingam    /**
2101c18285c36a0cf202dcf737c96766638e1e56c5dUma Maheswari Ramalingam     * ECBM
2111c18285c36a0cf202dcf737c96766638e1e56c5dUma Maheswari Ramalingam     */
2121c18285c36a0cf202dcf737c96766638e1e56c5dUma Maheswari Ramalingam    public static final int CODE_ECBM_NOT_SUPPORTED = 901;
213f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
214827fcb7f8dfbf694e1838e1e3e4432ef4f45949fOmkar Kolangade    /**
215b54d218d8b1c765865d0efb4a40e631f8bfa02deRekha Kumar     * Ims Registration error code
216b54d218d8b1c765865d0efb4a40e631f8bfa02deRekha Kumar     */
217b54d218d8b1c765865d0efb4a40e631f8bfa02deRekha Kumar    public static final int CODE_REGISTRATION_ERROR = 1000;
218b54d218d8b1c765865d0efb4a40e631f8bfa02deRekha Kumar
219b54d218d8b1c765865d0efb4a40e631f8bfa02deRekha Kumar    /**
220b54d218d8b1c765865d0efb4a40e631f8bfa02deRekha Kumar     * CALL DROP error codes (Call could drop because of many reasons like Network not available,
221b54d218d8b1c765865d0efb4a40e631f8bfa02deRekha Kumar     *  handover, failed, etc)
222b54d218d8b1c765865d0efb4a40e631f8bfa02deRekha Kumar     */
223b54d218d8b1c765865d0efb4a40e631f8bfa02deRekha Kumar
224b54d218d8b1c765865d0efb4a40e631f8bfa02deRekha Kumar    /**
225b54d218d8b1c765865d0efb4a40e631f8bfa02deRekha Kumar     * CALL DROP error code for the case when a device is ePDG capable and when the user is on an
226b54d218d8b1c765865d0efb4a40e631f8bfa02deRekha Kumar     * active wifi call and at the edge of coverage and there is no qualified LTE network available
227b54d218d8b1c765865d0efb4a40e631f8bfa02deRekha Kumar     * to handover the call to. We get a handover NOT_TRIGERRED message from the modem. This error
228b54d218d8b1c765865d0efb4a40e631f8bfa02deRekha Kumar     * code is received as part of the handover message.
229b54d218d8b1c765865d0efb4a40e631f8bfa02deRekha Kumar     */
230b54d218d8b1c765865d0efb4a40e631f8bfa02deRekha Kumar    public static final int CODE_CALL_DROP_IWLAN_TO_LTE_UNAVAILABLE = 1100;
231b54d218d8b1c765865d0efb4a40e631f8bfa02deRekha Kumar
232b54d218d8b1c765865d0efb4a40e631f8bfa02deRekha Kumar    /**
233ddf570e8226bd21448b44b3327d4bcb2608f4d00Shriram Ganesh     * MT call has ended due to a release from the network
234ddf570e8226bd21448b44b3327d4bcb2608f4d00Shriram Ganesh     * because the call was answered elsewhere
235ddf570e8226bd21448b44b3327d4bcb2608f4d00Shriram Ganesh     */
236ddf570e8226bd21448b44b3327d4bcb2608f4d00Shriram Ganesh    public static final int CODE_ANSWERED_ELSEWHERE = 1014;
237ddf570e8226bd21448b44b3327d4bcb2608f4d00Shriram Ganesh
238ddf570e8226bd21448b44b3327d4bcb2608f4d00Shriram Ganesh    /**
239827fcb7f8dfbf694e1838e1e3e4432ef4f45949fOmkar Kolangade     * Network string error messages.
240827fcb7f8dfbf694e1838e1e3e4432ef4f45949fOmkar Kolangade     * mExtraMessage may have these values.
241827fcb7f8dfbf694e1838e1e3e4432ef4f45949fOmkar Kolangade     */
242827fcb7f8dfbf694e1838e1e3e4432ef4f45949fOmkar Kolangade    public static final String EXTRA_MSG_SERVICE_NOT_AUTHORIZED
243827fcb7f8dfbf694e1838e1e3e4432ef4f45949fOmkar Kolangade            = "Forbidden. Not Authorized for Service";
244827fcb7f8dfbf694e1838e1e3e4432ef4f45949fOmkar Kolangade
245f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // For main reason code
246f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public int mCode;
247f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // For the extra code value; it depends on the code value.
248f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public int mExtraCode;
249f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    // For the additional message of the reason info.
250f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public String mExtraMessage;
251f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public ImsReasonInfo() {
252f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville        mCode = CODE_UNSPECIFIED;
253f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville        mExtraCode = CODE_UNSPECIFIED;
254f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville        mExtraMessage = null;
255f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    }
256f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
257f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public ImsReasonInfo(Parcel in) {
258f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville        readFromParcel(in);
259f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    }
260f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
261f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public ImsReasonInfo(int code, int extraCode) {
262f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville        mCode = code;
263f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville        mExtraCode = extraCode;
264f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville        mExtraMessage = null;
265f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    }
266f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
267f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public ImsReasonInfo(int code, int extraCode, String extraMessage) {
268f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville        mCode = code;
269f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville        mExtraCode = extraCode;
270f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville        mExtraMessage = extraMessage;
271f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    }
272f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
273f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    /**
274f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     *
275f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     */
276f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public int getCode() {
277f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville        return mCode;
278f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    }
279f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
280f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    /**
281f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     *
282f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     */
283f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public int getExtraCode() {
284f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville        return mExtraCode;
285f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    }
286f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
287f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    /**
288f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     *
289f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     */
290f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public String getExtraMessage() {
291f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville        return mExtraMessage;
292f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    }
293f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
294f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    /**
295f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * Returns the string format of {@link ImsReasonInfo}
296f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     *
297f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     * @return the string format of {@link ImsReasonInfo}
298f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville     */
299f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public String toString() {
300b54d218d8b1c765865d0efb4a40e631f8bfa02deRekha Kumar        return "ImsReasonInfo :: {" + mCode + ", " + mExtraCode + ", " + mExtraMessage + "}";
301f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    }
302f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
303f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    @Override
304f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public int describeContents() {
305f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville        return 0;
306f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    }
307f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
308f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    @Override
309f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public void writeToParcel(Parcel out, int flags) {
310f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville        out.writeInt(mCode);
311f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville        out.writeInt(mExtraCode);
312f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville        out.writeString(mExtraMessage);
313f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    }
314f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
315f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    private void readFromParcel(Parcel in) {
316f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville        mCode = in.readInt();
317f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville        mExtraCode = in.readInt();
318f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville        mExtraMessage = in.readString();
319f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    }
320f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
321f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    public static final Creator<ImsReasonInfo> CREATOR = new Creator<ImsReasonInfo>() {
322f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville        @Override
323f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville        public ImsReasonInfo createFromParcel(Parcel in) {
324f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville            return new ImsReasonInfo(in);
325f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville        }
326f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville
327f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville        @Override
328f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville        public ImsReasonInfo[] newArray(int size) {
329f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville            return new ImsReasonInfo[size];
330f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville        }
331f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville    };
332f8458ff9d97f8961d67c41ee107129ecba873f36Wink Saville}
333