Alan Viverette | 3da604b | 2020-06-10 18:34:39 +0000 | [diff] [blame] | 1 | /* |
| 2 | * Copyright (C) 2018 The Android Open Source Project |
| 3 | * |
| 4 | * Licensed under the Apache License, Version 2.0 (the "License"); |
| 5 | * you may not use this file except in compliance with the License. |
| 6 | * You may obtain a copy of the License at |
| 7 | * |
| 8 | * http://www.apache.org/licenses/LICENSE-2.0 |
| 9 | * |
| 10 | * Unless required by applicable law or agreed to in writing, software |
| 11 | * distributed under the License is distributed on an "AS IS" BASIS, |
| 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 13 | * See the License for the specific language governing permissions and |
| 14 | * limitations under the License |
| 15 | */ |
| 16 | |
| 17 | package android.telephony.ims; |
| 18 | |
| 19 | import android.annotation.IntDef; |
| 20 | import android.annotation.NonNull; |
| 21 | import android.annotation.Nullable; |
| 22 | import android.annotation.SystemApi; |
| 23 | import android.compat.annotation.UnsupportedAppUsage; |
| 24 | import android.os.Build; |
| 25 | import android.os.Parcel; |
| 26 | import android.os.Parcelable; |
| 27 | |
| 28 | import java.lang.annotation.Retention; |
| 29 | import java.lang.annotation.RetentionPolicy; |
| 30 | |
| 31 | /** |
| 32 | * Provides details on why an IMS call failed. Applications can use the methods in this class to |
| 33 | * get local or network fault behind an IMS services failure. For example, if the code is |
| 34 | * CODE_CALL_BARRED, then the call was blocked by network call barring configuration and it is not |
| 35 | * the device's bug and the user can retry the call when network lift the barring. |
| 36 | * Typical use case includes call backs when IMS call state changed with this class as a param |
| 37 | * containing details on why IMS call changed state/failed. |
| 38 | */ |
| 39 | public final class ImsReasonInfo implements Parcelable { |
| 40 | |
| 41 | /** |
| 42 | * The Reason is unspecified. |
| 43 | */ |
| 44 | public static final int CODE_UNSPECIFIED = 0; |
| 45 | |
| 46 | |
| 47 | // LOCAL |
| 48 | |
| 49 | // IMS -> Telephony |
| 50 | /** |
| 51 | * The passed argument is invalid. |
| 52 | */ |
| 53 | public static final int CODE_LOCAL_ILLEGAL_ARGUMENT = 101; |
| 54 | /** |
| 55 | * The operation was invoked while in an invalid call state. |
| 56 | */ |
| 57 | public static final int CODE_LOCAL_ILLEGAL_STATE = 102; |
| 58 | /** |
| 59 | * IMS service internal error |
| 60 | */ |
| 61 | public static final int CODE_LOCAL_INTERNAL_ERROR = 103; |
| 62 | /** |
| 63 | * ImsService has crashed (service connection is lost). |
| 64 | */ |
| 65 | public static final int CODE_LOCAL_IMS_SERVICE_DOWN = 106; |
| 66 | /** |
| 67 | * No pending incoming call exists |
| 68 | */ |
| 69 | public static final int CODE_LOCAL_NO_PENDING_CALL = 107; |
| 70 | /** |
| 71 | * IMS Call ended during conference merge process |
| 72 | */ |
| 73 | public static final int CODE_LOCAL_ENDED_BY_CONFERENCE_MERGE = 108; |
| 74 | |
| 75 | // IMS -> Telephony |
| 76 | /** |
| 77 | * Service unavailable; radio power off |
| 78 | */ |
| 79 | public static final int CODE_LOCAL_POWER_OFF = 111; |
| 80 | /** |
| 81 | * Service unavailable; low battery |
| 82 | */ |
| 83 | public static final int CODE_LOCAL_LOW_BATTERY = 112; |
| 84 | /** |
| 85 | * Service unavailable; out of service (data service state) |
| 86 | */ |
| 87 | public static final int CODE_LOCAL_NETWORK_NO_SERVICE = 121; |
| 88 | /** |
| 89 | * Service unavailable; no LTE coverage |
| 90 | * (VoLTE is not supported even though IMS is registered) |
| 91 | */ |
| 92 | public static final int CODE_LOCAL_NETWORK_NO_LTE_COVERAGE = 122; |
| 93 | /** |
| 94 | * Service unavailable; located in roaming area |
| 95 | */ |
| 96 | public static final int CODE_LOCAL_NETWORK_ROAMING = 123; |
| 97 | /** |
| 98 | * Service unavailable; IP changed |
| 99 | */ |
| 100 | public static final int CODE_LOCAL_NETWORK_IP_CHANGED = 124; |
| 101 | /** |
| 102 | * Service unavailable; for an unspecified reason |
| 103 | */ |
| 104 | public static final int CODE_LOCAL_SERVICE_UNAVAILABLE = 131; |
| 105 | /** |
| 106 | * Service unavailable; IMS is not registered |
| 107 | */ |
| 108 | public static final int CODE_LOCAL_NOT_REGISTERED = 132; |
| 109 | |
| 110 | // IMS <-> Telephony |
| 111 | /** |
| 112 | * Maximum number of simultaneous calls exceeded |
| 113 | */ |
| 114 | public static final int CODE_LOCAL_CALL_EXCEEDED = 141; |
| 115 | // IMS <- Telephony |
| 116 | /** |
| 117 | * The call is busy. |
| 118 | */ |
| 119 | public static final int CODE_LOCAL_CALL_BUSY = 142; |
| 120 | /** |
| 121 | * The Call has been declined locally on this device. |
| 122 | */ |
| 123 | public static final int CODE_LOCAL_CALL_DECLINE = 143; |
| 124 | // IMS -> Telephony |
| 125 | /** |
| 126 | * Can not complete call; an SRVCC is in progress. |
| 127 | */ |
| 128 | public static final int CODE_LOCAL_CALL_VCC_ON_PROGRESSING = 144; |
| 129 | /** |
| 130 | * Can not complete call; resource reservation is failed (QoS precondition) |
| 131 | */ |
| 132 | public static final int CODE_LOCAL_CALL_RESOURCE_RESERVATION_FAILED = 145; |
| 133 | /** |
| 134 | * VoLTE service can't be provided by the network or remote end, retry the call. |
| 135 | * Resolve the extra code provided in (EXTRA_CODE_CALL_RETRY_*) if the below code is set |
| 136 | */ |
| 137 | public static final int CODE_LOCAL_CALL_CS_RETRY_REQUIRED = 146; |
| 138 | /** |
| 139 | * VoLTE service can't be provided by the network temporarily, retry the call. |
| 140 | */ |
| 141 | public static final int CODE_LOCAL_CALL_VOLTE_RETRY_REQUIRED = 147; |
| 142 | /** |
| 143 | * IMS call is already terminated (in TERMINATED state). |
| 144 | */ |
| 145 | public static final int CODE_LOCAL_CALL_TERMINATED = 148; |
| 146 | /** |
| 147 | * Call was disconnected because a handover is not feasible due to network conditions. |
| 148 | */ |
| 149 | public static final int CODE_LOCAL_HO_NOT_FEASIBLE = 149; |
| 150 | /** |
| 151 | * This device does not support IMS. |
| 152 | * @hide |
| 153 | */ |
| 154 | public static final int CODE_LOCAL_IMS_NOT_SUPPORTED_ON_DEVICE = 150; |
| 155 | |
| 156 | /* |
| 157 | * TIMEOUT (IMS -> Telephony) |
| 158 | */ |
| 159 | /** |
| 160 | * 1xx waiting timer is expired after sending INVITE request (MO calls only) |
| 161 | */ |
| 162 | public static final int CODE_TIMEOUT_1XX_WAITING = 201; |
| 163 | /** |
| 164 | * User didn't answer during call setup operation (MO/MT) |
| 165 | * MO : 200 OK to INVITE request is not received, |
| 166 | * MT : No action from user after alerting the call |
| 167 | */ |
| 168 | public static final int CODE_TIMEOUT_NO_ANSWER = 202; |
| 169 | /** |
| 170 | * User no answer during call update operation (MO/MT) |
| 171 | * MO : 200 OK to re-INVITE request is not received, |
| 172 | * MT : No action from user after alerting the call |
| 173 | */ |
| 174 | public static final int CODE_TIMEOUT_NO_ANSWER_CALL_UPDATE = 203; |
| 175 | |
| 176 | /** |
| 177 | * The call was blocked by call barring configuration. |
| 178 | */ |
| 179 | public static final int CODE_CALL_BARRED = 240; |
| 180 | |
| 181 | /** |
| 182 | * The operation is restricted to fixed dialing numbers only. |
| 183 | */ |
| 184 | public static final int CODE_FDN_BLOCKED = 241; |
| 185 | |
| 186 | /** |
| 187 | * Network rejected the emergency call request because IMEI was used as identification |
| 188 | * and this capability is not supported by the network. |
| 189 | */ |
| 190 | public static final int CODE_IMEI_NOT_ACCEPTED = 243; |
| 191 | |
| 192 | //STK CC errors |
| 193 | /** |
| 194 | * Stk Call Control modified DIAL request to USSD request. |
| 195 | */ |
| 196 | public static final int CODE_DIAL_MODIFIED_TO_USSD = 244; |
| 197 | /** |
| 198 | * Stk Call Control modified DIAL request to SS request. |
| 199 | */ |
| 200 | public static final int CODE_DIAL_MODIFIED_TO_SS = 245; |
| 201 | /** |
| 202 | * Stk Call Control modified DIAL request to DIAL with modified data. |
| 203 | */ |
| 204 | public static final int CODE_DIAL_MODIFIED_TO_DIAL = 246; |
| 205 | /** |
| 206 | * Stk Call Control modified DIAL request to Video DIAL request. |
| 207 | */ |
| 208 | public static final int CODE_DIAL_MODIFIED_TO_DIAL_VIDEO = 247; |
| 209 | /** |
| 210 | * Stk Call Control modified Video DIAL request to DIAL request. |
| 211 | */ |
| 212 | public static final int CODE_DIAL_VIDEO_MODIFIED_TO_DIAL = 248; |
| 213 | /** |
| 214 | * Stk Call Control modified Video DIAL request to Video DIAL request. |
| 215 | */ |
| 216 | public static final int CODE_DIAL_VIDEO_MODIFIED_TO_DIAL_VIDEO = 249; |
| 217 | /** |
| 218 | * Stk Call Control modified Video DIAL request to SS request. |
| 219 | */ |
| 220 | public static final int CODE_DIAL_VIDEO_MODIFIED_TO_SS = 250; |
| 221 | /** |
| 222 | * Stk Call Control modified Video DIAL request to USSD request. |
| 223 | */ |
| 224 | public static final int CODE_DIAL_VIDEO_MODIFIED_TO_USSD = 251; |
| 225 | |
| 226 | /* |
| 227 | * STATUSCODE (SIP response code) (IMS -> Telephony) |
| 228 | */ |
| 229 | // 3xx responses |
| 230 | /** |
| 231 | * SIP 3xx response: SIP request is redirected |
| 232 | */ |
| 233 | public static final int CODE_SIP_REDIRECTED = 321; |
| 234 | // 4xx responses |
| 235 | /** |
| 236 | * Sip 400 response : Bad Request |
| 237 | */ |
| 238 | public static final int CODE_SIP_BAD_REQUEST = 331; |
| 239 | /** |
| 240 | * Sip 403 response : Forbidden |
| 241 | */ |
| 242 | public static final int CODE_SIP_FORBIDDEN = 332; |
| 243 | /** |
| 244 | * Sip 404 response : Not Found |
| 245 | */ |
| 246 | public static final int CODE_SIP_NOT_FOUND = 333; |
| 247 | /** |
| 248 | * Not supported, because of one of the following: |
| 249 | * SIP response 415 : Unsupported Media Type, |
| 250 | * SIP response 416 : Unsupported URI Scheme, |
| 251 | * SIP response 420 : Bad Extension |
| 252 | */ |
| 253 | public static final int CODE_SIP_NOT_SUPPORTED = 334; |
| 254 | /** |
| 255 | * SIP response 408 : Request Timeout. |
| 256 | */ |
| 257 | public static final int CODE_SIP_REQUEST_TIMEOUT = 335; |
| 258 | /** |
| 259 | * SIP response 480 : Temporarily Unavailable |
| 260 | */ |
| 261 | public static final int CODE_SIP_TEMPRARILY_UNAVAILABLE = 336; |
| 262 | /** |
| 263 | * SIP response 484 : Address Incomplete |
| 264 | */ |
| 265 | public static final int CODE_SIP_BAD_ADDRESS = 337; |
| 266 | /** |
| 267 | * Returned a busy response, may be one of the following: |
| 268 | * SIP response 486 : Busy Here, |
| 269 | * SIP response 600 : Busy Everywhere |
| 270 | */ |
| 271 | public static final int CODE_SIP_BUSY = 338; |
| 272 | /** |
| 273 | * SIP response 487 : Request Terminated |
| 274 | */ |
| 275 | public static final int CODE_SIP_REQUEST_CANCELLED = 339; |
| 276 | /** |
| 277 | * Received a not acceptable response, will be one of the following: |
| 278 | * SIP response 406 : Not Acceptable |
| 279 | * SIP response 488 : Not Acceptable Here |
| 280 | * SIP response 606 : Not Acceptable |
| 281 | */ |
| 282 | public static final int CODE_SIP_NOT_ACCEPTABLE = 340; |
| 283 | /** |
| 284 | * Received a not acceptable response, will be one of the following: |
| 285 | * SIP response 410 : Gone |
| 286 | * SIP response 604 : Does Not Exist Anywhere |
| 287 | */ |
| 288 | public static final int CODE_SIP_NOT_REACHABLE = 341; |
| 289 | /** |
| 290 | * Received another unspecified error SIP response from the client. |
| 291 | */ |
| 292 | public static final int CODE_SIP_CLIENT_ERROR = 342; |
| 293 | /** |
| 294 | * SIP response 481: Transaction Does Not Exist |
| 295 | */ |
| 296 | public static final int CODE_SIP_TRANSACTION_DOES_NOT_EXIST = 343; |
| 297 | // 5xx responses |
| 298 | /** |
| 299 | * SIP response 501 : Server Internal Error |
| 300 | */ |
| 301 | public static final int CODE_SIP_SERVER_INTERNAL_ERROR = 351; |
| 302 | /** |
| 303 | * SIP response 503 : Service Unavailable |
| 304 | */ |
| 305 | public static final int CODE_SIP_SERVICE_UNAVAILABLE = 352; |
| 306 | /** |
| 307 | * SIP response 504 : Server Time-out |
| 308 | */ |
| 309 | public static final int CODE_SIP_SERVER_TIMEOUT = 353; |
| 310 | /** |
| 311 | * Received an unspecified SIP server error response. |
| 312 | */ |
| 313 | public static final int CODE_SIP_SERVER_ERROR = 354; |
| 314 | // 6xx responses |
| 315 | /** |
| 316 | * 603 : Decline |
| 317 | */ |
| 318 | public static final int CODE_SIP_USER_REJECTED = 361; |
| 319 | /** |
| 320 | * Unspecified 6xx error. |
| 321 | */ |
| 322 | public static final int CODE_SIP_GLOBAL_ERROR = 362; |
| 323 | |
| 324 | /** |
| 325 | * Emergency call failed in the modem with a temporary fail cause and should be redialed on this |
| 326 | * slot. |
| 327 | */ |
| 328 | public static final int CODE_EMERGENCY_TEMP_FAILURE = 363; |
| 329 | /** |
| 330 | * Emergency call failed in the modem with a permanent fail cause and should not be redialed on |
| 331 | * this slot. If there are any other slots available for emergency calling, try those. |
| 332 | */ |
| 333 | public static final int CODE_EMERGENCY_PERM_FAILURE = 364; |
| 334 | |
| 335 | /** |
| 336 | * Call failure code during hangup/reject if user marked the call as unwanted. |
| 337 | * |
| 338 | * Android Telephony will receive information whether ROBO call feature is supported by the |
| 339 | * network from modem and propagate the same to AOSP as new ImsCallProfile members. OEMs can |
| 340 | * check this information and provide an option to the user to mark the call as unwanted. |
| 341 | */ |
| 342 | public static final int CODE_SIP_USER_MARKED_UNWANTED = 365; |
| 343 | |
| 344 | /** |
| 345 | * SIP Response : 405 |
| 346 | * Method not allowed for the address in the Request URI |
| 347 | */ |
| 348 | public static final int CODE_SIP_METHOD_NOT_ALLOWED = 366; |
| 349 | |
| 350 | /** |
| 351 | * SIP Response : 407 |
| 352 | * The request requires user authentication |
| 353 | */ |
| 354 | public static final int CODE_SIP_PROXY_AUTHENTICATION_REQUIRED = 367; |
| 355 | |
| 356 | /** |
| 357 | * SIP Response : 413 |
| 358 | * Request body too large |
| 359 | */ |
| 360 | public static final int CODE_SIP_REQUEST_ENTITY_TOO_LARGE = 368; |
| 361 | |
| 362 | /** |
| 363 | * SIP Response : 414 |
| 364 | * Request-URI too large |
| 365 | */ |
| 366 | public static final int CODE_SIP_REQUEST_URI_TOO_LARGE = 369; |
| 367 | |
| 368 | /** |
| 369 | * SIP Response : 421 |
| 370 | * Specific extension is required, which is not present in the HEADER |
| 371 | */ |
| 372 | public static final int CODE_SIP_EXTENSION_REQUIRED = 370; |
| 373 | |
| 374 | /** |
| 375 | * SIP Response : 422 |
| 376 | * The session expiration field too small |
| 377 | */ |
| 378 | public static final int CODE_SIP_INTERVAL_TOO_BRIEF = 371; |
| 379 | |
| 380 | /** |
| 381 | * SIP Response : 481 |
| 382 | * Request received by the server does not match any dialog or transaction |
| 383 | */ |
| 384 | public static final int CODE_SIP_CALL_OR_TRANS_DOES_NOT_EXIST = 372; |
| 385 | |
| 386 | /** |
| 387 | * SIP Response : 482 |
| 388 | * Server has detected a loop |
| 389 | */ |
| 390 | public static final int CODE_SIP_LOOP_DETECTED = 373; |
| 391 | |
| 392 | /** |
| 393 | * SIP Response : 483 |
| 394 | * Max-Forwards value reached |
| 395 | */ |
| 396 | public static final int CODE_SIP_TOO_MANY_HOPS = 374; |
| 397 | |
| 398 | /** |
| 399 | * SIP Response : 485 |
| 400 | * Request-URI is ambiguous |
| 401 | * |
| 402 | */ |
| 403 | public static final int CODE_SIP_AMBIGUOUS = 376; |
| 404 | |
| 405 | /** |
| 406 | * SIP Response : 491 |
| 407 | * Server has pending request for same dialog |
| 408 | */ |
| 409 | public static final int CODE_SIP_REQUEST_PENDING = 377; |
| 410 | |
| 411 | /** |
| 412 | * SIP Response : 493 |
| 413 | * The request cannot be decrypted by recipient |
| 414 | */ |
| 415 | public static final int CODE_SIP_UNDECIPHERABLE = 378; |
| 416 | |
| 417 | /** |
| 418 | * MEDIA (IMS -> Telephony) |
| 419 | */ |
| 420 | /** |
| 421 | * Media resource initialization failed |
| 422 | */ |
| 423 | public static final int CODE_MEDIA_INIT_FAILED = 401; |
| 424 | /** |
| 425 | * RTP timeout (no audio / video traffic in the session) |
| 426 | */ |
| 427 | public static final int CODE_MEDIA_NO_DATA = 402; |
| 428 | /** |
| 429 | * Media is not supported; so dropped the call |
| 430 | */ |
| 431 | public static final int CODE_MEDIA_NOT_ACCEPTABLE = 403; |
| 432 | /** |
| 433 | * Unspecified media related error. |
| 434 | */ |
| 435 | public static final int CODE_MEDIA_UNSPECIFIED = 404; |
| 436 | |
| 437 | /* |
| 438 | * USER |
| 439 | */ |
| 440 | // Telephony -> IMS |
| 441 | /** |
| 442 | * User triggers the call to be terminated. |
| 443 | */ |
| 444 | public static final int CODE_USER_TERMINATED = 501; |
| 445 | /** |
| 446 | * No action was taken while an incoming call was ringing. |
| 447 | */ |
| 448 | public static final int CODE_USER_NOANSWER = 502; |
| 449 | /** |
| 450 | * User ignored an incoming call. |
| 451 | */ |
| 452 | public static final int CODE_USER_IGNORE = 503; |
| 453 | /** |
| 454 | * User declined an incoming call. |
| 455 | */ |
| 456 | public static final int CODE_USER_DECLINE = 504; |
| 457 | /** |
| 458 | * Device declined/ended a call due to a low battery condition. |
| 459 | */ |
| 460 | public static final int CODE_LOW_BATTERY = 505; |
| 461 | /** |
| 462 | * Device declined a call due to a blacklisted caller ID. |
| 463 | */ |
| 464 | public static final int CODE_BLACKLISTED_CALL_ID = 506; |
| 465 | // IMS -> Telephony |
| 466 | /** |
| 467 | * The call has been terminated by the network or remote user. |
| 468 | */ |
| 469 | public static final int CODE_USER_TERMINATED_BY_REMOTE = 510; |
| 470 | /** |
| 471 | * Upgrade Downgrade request rejected by |
| 472 | * Remote user if the request is MO initiated |
| 473 | * Local user if the request is MT initiated |
| 474 | */ |
| 475 | public static final int CODE_USER_REJECTED_SESSION_MODIFICATION = 511; |
| 476 | |
| 477 | /** |
| 478 | * Upgrade Downgrade request cancelled by the user who initiated it |
| 479 | */ |
| 480 | public static final int CODE_USER_CANCELLED_SESSION_MODIFICATION = 512; |
| 481 | |
| 482 | /** |
| 483 | * UPGRADE DOWNGRADE operation failed |
| 484 | * This can happen due to failure from SIP/RTP/SDP generation or a Call end is |
| 485 | * triggered/received while Reinvite is in progress. |
| 486 | */ |
| 487 | public static final int CODE_SESSION_MODIFICATION_FAILED = 1517; |
| 488 | |
| 489 | /* |
| 490 | * UT |
| 491 | */ |
| 492 | /** |
| 493 | * UT is currently not supported on this device. |
| 494 | */ |
| 495 | public static final int CODE_UT_NOT_SUPPORTED = 801; |
| 496 | /** |
| 497 | * UT services are currently not available on this device. |
| 498 | */ |
| 499 | public static final int CODE_UT_SERVICE_UNAVAILABLE = 802; |
| 500 | /** |
| 501 | * The requested UT operation is not allowed. |
| 502 | */ |
| 503 | public static final int CODE_UT_OPERATION_NOT_ALLOWED = 803; |
| 504 | /** |
| 505 | * The UT request resulted in a network error. |
| 506 | */ |
| 507 | public static final int CODE_UT_NETWORK_ERROR = 804; |
| 508 | /** |
| 509 | * The password entered for UT operations does not match the stored password. |
| 510 | */ |
| 511 | public static final int CODE_UT_CB_PASSWORD_MISMATCH = 821; |
| 512 | //STK CC errors |
| 513 | /** |
| 514 | * Sim Toolkit Call Control modified the UT operation to a dial command. |
| 515 | */ |
| 516 | public static final int CODE_UT_SS_MODIFIED_TO_DIAL = 822; |
| 517 | /** |
| 518 | * Sim Toolkit Call Control modified the UT operation to a USSD command. |
| 519 | */ |
| 520 | public static final int CODE_UT_SS_MODIFIED_TO_USSD = 823; |
| 521 | /** |
| 522 | * Sim Toolkit Call Control modified the UT operation to another supplementary service command. |
| 523 | */ |
| 524 | public static final int CODE_UT_SS_MODIFIED_TO_SS = 824; |
| 525 | /** |
| 526 | * Sim Toolkit Call Control modified the UT operation to a video call dial command. |
| 527 | */ |
| 528 | public static final int CODE_UT_SS_MODIFIED_TO_DIAL_VIDEO = 825; |
| 529 | |
| 530 | /**@hide*/ |
| 531 | @IntDef(value = { |
| 532 | CODE_UT_NOT_SUPPORTED, |
| 533 | CODE_UT_SERVICE_UNAVAILABLE, |
| 534 | CODE_UT_OPERATION_NOT_ALLOWED, |
| 535 | CODE_UT_NETWORK_ERROR, |
| 536 | CODE_UT_CB_PASSWORD_MISMATCH, |
| 537 | CODE_UT_SS_MODIFIED_TO_DIAL, |
| 538 | CODE_UT_SS_MODIFIED_TO_USSD, |
| 539 | CODE_UT_SS_MODIFIED_TO_SS, |
| 540 | CODE_UT_SS_MODIFIED_TO_DIAL_VIDEO |
| 541 | }, prefix = "CODE_UT_") |
| 542 | @Retention(RetentionPolicy.SOURCE) |
| 543 | public @interface UtReason {} |
| 544 | |
| 545 | /** |
| 546 | * Emergency callback mode is not supported. |
| 547 | */ |
| 548 | public static final int CODE_ECBM_NOT_SUPPORTED = 901; |
| 549 | |
| 550 | /** |
| 551 | * Fail code used to indicate that Multi-endpoint is not supported by the IMS framework. |
| 552 | */ |
| 553 | public static final int CODE_MULTIENDPOINT_NOT_SUPPORTED = 902; |
| 554 | |
| 555 | /** |
| 556 | * IMS Registration error code |
| 557 | */ |
| 558 | public static final int CODE_REGISTRATION_ERROR = 1000; |
| 559 | |
| 560 | /* |
| 561 | * CALL DROP error codes (Call could drop because of many reasons like Network not available, |
| 562 | * handover, failed, etc) |
| 563 | */ |
| 564 | /** |
| 565 | * MT call has ended due to a release from the network because the call was answered elsewhere. |
| 566 | */ |
| 567 | public static final int CODE_ANSWERED_ELSEWHERE = 1014; |
| 568 | |
| 569 | /** |
| 570 | * For MultiEndpoint - Call Pull request has failed. |
| 571 | */ |
| 572 | public static final int CODE_CALL_PULL_OUT_OF_SYNC = 1015; |
| 573 | |
| 574 | /** |
| 575 | * For MultiEndpoint - Call has been pulled from primary to secondary. |
| 576 | */ |
| 577 | public static final int CODE_CALL_END_CAUSE_CALL_PULL = 1016; |
| 578 | |
| 579 | /** |
| 580 | * CALL DROP error code for the case when a device is ePDG capable and when the user is on an |
| 581 | * active wifi call and at the edge of coverage and there is no qualified LTE network available |
| 582 | * to handover the call to. We get a handover NOT_TRIGERRED message from the modem. This error |
| 583 | * code is received as part of the handover message. |
| 584 | */ |
| 585 | public static final int CODE_CALL_DROP_IWLAN_TO_LTE_UNAVAILABLE = 1100; |
| 586 | |
| 587 | /** |
| 588 | * For MultiEndPoint - Call was rejected elsewhere |
| 589 | */ |
| 590 | public static final int CODE_REJECTED_ELSEWHERE = 1017; |
| 591 | |
| 592 | /** |
| 593 | * Supplementary services (HOLD/RESUME) failure error codes. |
| 594 | * Values for Supplemetary services failure - Failed, Cancelled and Re-Invite collision. |
| 595 | */ |
| 596 | |
| 597 | /** |
| 598 | * Supplementary Services (HOLD/RESUME) - the command failed. |
| 599 | */ |
| 600 | public static final int CODE_SUPP_SVC_FAILED = 1201; |
| 601 | /** |
| 602 | * Supplementary Services (HOLD/RESUME) - the command was cancelled. |
| 603 | */ |
| 604 | public static final int CODE_SUPP_SVC_CANCELLED = 1202; |
| 605 | /** |
| 606 | * Supplementary Services (HOLD/RESUME) - the command resulted in a re-invite collision. |
| 607 | */ |
| 608 | public static final int CODE_SUPP_SVC_REINVITE_COLLISION = 1203; |
| 609 | |
| 610 | /** |
| 611 | * DPD Procedure received no response or send failed. |
| 612 | */ |
| 613 | public static final int CODE_IWLAN_DPD_FAILURE = 1300; |
| 614 | |
| 615 | /** |
| 616 | * Establishment of the ePDG Tunnel Failed. |
| 617 | */ |
| 618 | public static final int CODE_EPDG_TUNNEL_ESTABLISH_FAILURE = 1400; |
| 619 | |
| 620 | /** |
| 621 | * Re-keying of the ePDG Tunnel Failed; may not always result in teardown. |
| 622 | */ |
| 623 | public static final int CODE_EPDG_TUNNEL_REKEY_FAILURE = 1401; |
| 624 | |
| 625 | /** |
| 626 | * Connection to the packet gateway is lost. |
| 627 | */ |
| 628 | public static final int CODE_EPDG_TUNNEL_LOST_CONNECTION = 1402; |
| 629 | |
| 630 | /** |
| 631 | * The maximum number of calls allowed has been reached. Used in a multi-endpoint scenario |
| 632 | * where the number of calls across all connected devices has reached the maximum. |
| 633 | */ |
| 634 | public static final int CODE_MAXIMUM_NUMBER_OF_CALLS_REACHED = 1403; |
| 635 | |
| 636 | /** |
| 637 | * Similar to {@link #CODE_LOCAL_CALL_DECLINE}, except indicates that a remote device has |
| 638 | * declined the call. Used in a multi-endpoint scenario where a remote device declined an |
| 639 | * incoming call. |
| 640 | */ |
| 641 | public static final int CODE_REMOTE_CALL_DECLINE = 1404; |
| 642 | |
| 643 | /** |
| 644 | * Indicates the call was disconnected due to the user reaching their data limit. |
| 645 | */ |
| 646 | public static final int CODE_DATA_LIMIT_REACHED = 1405; |
| 647 | |
| 648 | /** |
| 649 | * Indicates the call was disconnected due to the user disabling cellular data. |
| 650 | */ |
| 651 | public static final int CODE_DATA_DISABLED = 1406; |
| 652 | |
| 653 | /** |
| 654 | * Indicates a call was disconnected due to loss of wifi signal. |
| 655 | */ |
| 656 | public static final int CODE_WIFI_LOST = 1407; |
| 657 | |
| 658 | /** |
| 659 | * Indicates the registration attempt on IWLAN failed due to IKEv2 authetication failure |
| 660 | * during tunnel establishment. |
| 661 | */ |
| 662 | public static final int CODE_IKEV2_AUTH_FAILURE = 1408; |
| 663 | |
| 664 | /** The call cannot be established because RADIO is OFF */ |
| 665 | public static final int CODE_RADIO_OFF = 1500; |
| 666 | |
| 667 | /** The call cannot be established because of no valid SIM */ |
| 668 | public static final int CODE_NO_VALID_SIM = 1501; |
| 669 | |
| 670 | /** The failure is due internal error at modem */ |
| 671 | public static final int CODE_RADIO_INTERNAL_ERROR = 1502; |
| 672 | |
| 673 | /** The failure is due to UE timer expired while waiting for a response from network */ |
| 674 | public static final int CODE_NETWORK_RESP_TIMEOUT = 1503; |
| 675 | |
| 676 | /** The failure is due to explicit reject from network */ |
| 677 | public static final int CODE_NETWORK_REJECT = 1504; |
| 678 | |
| 679 | /** The failure is due to radio access failure. ex. RACH failure */ |
| 680 | public static final int CODE_RADIO_ACCESS_FAILURE = 1505; |
| 681 | |
| 682 | /** Call/IMS registration failed/dropped because of a RLF */ |
| 683 | public static final int CODE_RADIO_LINK_FAILURE = 1506; |
| 684 | |
| 685 | /** Call/IMS registration failed/dropped because of radio link lost */ |
| 686 | public static final int CODE_RADIO_LINK_LOST = 1507; |
| 687 | |
| 688 | /** The call Call/IMS registration failed because of a radio uplink issue */ |
| 689 | public static final int CODE_RADIO_UPLINK_FAILURE = 1508; |
| 690 | |
| 691 | /** Call failed because of a RRC connection setup failure */ |
| 692 | public static final int CODE_RADIO_SETUP_FAILURE = 1509; |
| 693 | |
| 694 | /** Call failed/dropped because of RRC connection release from NW */ |
| 695 | public static final int CODE_RADIO_RELEASE_NORMAL = 1510; |
| 696 | |
| 697 | /** Call failed/dropped because of RRC abnormally released by modem/network */ |
| 698 | public static final int CODE_RADIO_RELEASE_ABNORMAL = 1511; |
| 699 | |
| 700 | /** Call failed because of access class barring */ |
| 701 | public static final int CODE_ACCESS_CLASS_BLOCKED = 1512; |
| 702 | |
| 703 | /** Call/IMS registration is failed/dropped because of a network detach */ |
| 704 | public static final int CODE_NETWORK_DETACH = 1513; |
| 705 | |
| 706 | /** |
| 707 | * Call failed due to SIP code 380 (Alternative Service response) while dialing an "undetected |
| 708 | * emergency number". This scenario is important in some regions where the carrier network will |
| 709 | * identify other non-emergency help numbers (e.g. mountain rescue) when attempting to dial. |
| 710 | */ |
| 711 | public static final int CODE_SIP_ALTERNATE_EMERGENCY_CALL = 1514; |
| 712 | |
| 713 | /** |
| 714 | * Call failed because of unobtainable number |
| 715 | * @hide |
| 716 | */ |
| 717 | public static final int CODE_UNOBTAINABLE_NUMBER = 1515; |
| 718 | |
| 719 | /** |
| 720 | * Call failed because WiFi call could not complete and circuit switch silent redial |
| 721 | * is not allowed while roaming on another network. |
| 722 | */ |
| 723 | public static final int CODE_NO_CSFB_IN_CS_ROAM = 1516; |
| 724 | |
| 725 | /** |
| 726 | * The rejection cause is not known. |
| 727 | * <p> |
| 728 | * Used with implicit call rejection. |
| 729 | */ |
| 730 | public static final int CODE_REJECT_UNKNOWN = 1600; |
| 731 | |
| 732 | /** |
| 733 | * Ongoing call, and call waiting is disabled. |
| 734 | * <p> |
| 735 | * Used with implicit call rejection. |
| 736 | */ |
| 737 | public static final int CODE_REJECT_ONGOING_CALL_WAITING_DISABLED = 1601; |
| 738 | |
| 739 | /** |
| 740 | * A call is ongoing on another sub. |
| 741 | * <p> |
| 742 | * Used with implicit call rejection. |
| 743 | */ |
| 744 | public static final int CODE_REJECT_CALL_ON_OTHER_SUB = 1602; |
| 745 | |
| 746 | /** |
| 747 | * CDMA call collision. |
| 748 | * <p> |
| 749 | * Used with implicit call rejection. |
| 750 | */ |
| 751 | public static final int CODE_REJECT_1X_COLLISION = 1603; |
| 752 | |
| 753 | /** |
| 754 | * IMS is not registered for service yet. |
| 755 | * <p> |
| 756 | * Used with implicit call rejection. |
| 757 | */ |
| 758 | public static final int CODE_REJECT_SERVICE_NOT_REGISTERED = 1604; |
| 759 | |
| 760 | /** |
| 761 | * The call type is not allowed on the current RAT. |
| 762 | * <p> |
| 763 | * Used with implicit call rejection. |
| 764 | */ |
| 765 | public static final int CODE_REJECT_CALL_TYPE_NOT_ALLOWED = 1605; |
| 766 | |
| 767 | /** |
| 768 | * And emergency call is ongoing. |
| 769 | * <p> |
| 770 | * Used with implicit call rejection. |
| 771 | */ |
| 772 | public static final int CODE_REJECT_ONGOING_E911_CALL = 1606; |
| 773 | |
| 774 | /** |
| 775 | * Another call is in the process of being establilshed. |
| 776 | * <p> |
| 777 | * Used with implicit call rejection. |
| 778 | */ |
| 779 | public static final int CODE_REJECT_ONGOING_CALL_SETUP = 1607; |
| 780 | |
| 781 | /** |
| 782 | * Maximum number of allowed calls are already in progress. |
| 783 | * <p> |
| 784 | * Used with implicit call rejection. |
| 785 | */ |
| 786 | public static final int CODE_REJECT_MAX_CALL_LIMIT_REACHED = 1608; |
| 787 | |
| 788 | /** |
| 789 | * Invalid/unsupported SIP headers received. |
| 790 | * <p> |
| 791 | * Used with implicit call rejection. |
| 792 | */ |
| 793 | public static final int CODE_REJECT_UNSUPPORTED_SIP_HEADERS = 1609; |
| 794 | |
| 795 | /** |
| 796 | * Invalid/unsupported SDP headers received. |
| 797 | * <p> |
| 798 | * Used with implicit call rejection. |
| 799 | */ |
| 800 | public static final int CODE_REJECT_UNSUPPORTED_SDP_HEADERS = 1610; |
| 801 | |
| 802 | /** |
| 803 | * A call transfer is in progress. |
| 804 | * <p> |
| 805 | * Used with implicit call rejection. |
| 806 | */ |
| 807 | public static final int CODE_REJECT_ONGOING_CALL_TRANSFER = 1611; |
| 808 | |
| 809 | /** |
| 810 | * An internal error occured while processing the call. |
| 811 | * <p> |
| 812 | * Used with implicit call rejection. |
| 813 | */ |
| 814 | public static final int CODE_REJECT_INTERNAL_ERROR = 1612; |
| 815 | |
| 816 | /** |
| 817 | * Call failure due to lack of dedicated bearer. |
| 818 | * <p> |
| 819 | * Used with implicit call rejection. |
| 820 | */ |
| 821 | public static final int CODE_REJECT_QOS_FAILURE = 1613; |
| 822 | |
| 823 | /** |
| 824 | * A call handover is in progress. |
| 825 | * <p> |
| 826 | * Used with implicit call rejection. |
| 827 | */ |
| 828 | public static final int CODE_REJECT_ONGOING_HANDOVER = 1614; |
| 829 | |
| 830 | /** |
| 831 | * Video calling not supported with TTY. |
| 832 | * <p> |
| 833 | * Used with implicit call rejection. |
| 834 | */ |
| 835 | public static final int CODE_REJECT_VT_TTY_NOT_ALLOWED = 1615; |
| 836 | |
| 837 | /** |
| 838 | * A call upgrade is in progress. |
| 839 | * <p> |
| 840 | * Used with implicit call rejection. |
| 841 | */ |
| 842 | public static final int CODE_REJECT_ONGOING_CALL_UPGRADE = 1616; |
| 843 | |
| 844 | /** |
| 845 | * Call from conference server, when TTY mode is ON. |
| 846 | * <p> |
| 847 | * Used with implicit call rejection. |
| 848 | */ |
| 849 | public static final int CODE_REJECT_CONFERENCE_TTY_NOT_ALLOWED = 1617; |
| 850 | |
| 851 | /** |
| 852 | * A conference call is ongoing. |
| 853 | * <p> |
| 854 | * Used with implicit call rejection. |
| 855 | */ |
| 856 | public static final int CODE_REJECT_ONGOING_CONFERENCE_CALL = 1618; |
| 857 | |
| 858 | /** |
| 859 | * A video call with AVPF is not supported. |
| 860 | * <p> |
| 861 | * Used with implicit call rejection. |
| 862 | */ |
| 863 | public static final int CODE_REJECT_VT_AVPF_NOT_ALLOWED = 1619; |
| 864 | |
| 865 | /** |
| 866 | * And encrypted call is ongoing; other calls not supported. |
| 867 | * <p> |
| 868 | * Used with implicit call rejection. |
| 869 | */ |
| 870 | public static final int CODE_REJECT_ONGOING_ENCRYPTED_CALL = 1620; |
| 871 | |
| 872 | /** |
| 873 | * A CS call is ongoing. |
| 874 | * <p> |
| 875 | * Used with implicit call rejection. |
| 876 | */ |
| 877 | public static final int CODE_REJECT_ONGOING_CS_CALL = 1621; |
| 878 | |
| 879 | /** |
| 880 | * An attempt was made to place an emergency call over WFC when emergency services is not |
| 881 | * currently available in the current location. |
| 882 | * @hide |
| 883 | */ |
| 884 | public static final int CODE_EMERGENCY_CALL_OVER_WFC_NOT_AVAILABLE = 1622; |
| 885 | |
| 886 | /** |
| 887 | * Indicates that WiFi calling service is not available in the current location. |
| 888 | * @hide |
| 889 | */ |
| 890 | public static final int CODE_WFC_SERVICE_NOT_AVAILABLE_IN_THIS_LOCATION = 1623; |
| 891 | |
| 892 | /** |
| 893 | * The dialed RTT call should be retried without RTT |
| 894 | * @hide |
| 895 | */ |
| 896 | public static final int CODE_RETRY_ON_IMS_WITHOUT_RTT = 3001; |
| 897 | |
| 898 | /* |
| 899 | * OEM specific error codes. To be used by OEMs when they don't want to reveal error code which |
| 900 | * would be replaced by ERROR_UNSPECIFIED. |
| 901 | */ |
| 902 | public static final int CODE_OEM_CAUSE_1 = 0xf001; |
| 903 | public static final int CODE_OEM_CAUSE_2 = 0xf002; |
| 904 | public static final int CODE_OEM_CAUSE_3 = 0xf003; |
| 905 | public static final int CODE_OEM_CAUSE_4 = 0xf004; |
| 906 | public static final int CODE_OEM_CAUSE_5 = 0xf005; |
| 907 | public static final int CODE_OEM_CAUSE_6 = 0xf006; |
| 908 | public static final int CODE_OEM_CAUSE_7 = 0xf007; |
| 909 | public static final int CODE_OEM_CAUSE_8 = 0xf008; |
| 910 | public static final int CODE_OEM_CAUSE_9 = 0xf009; |
| 911 | public static final int CODE_OEM_CAUSE_10 = 0xf00a; |
| 912 | public static final int CODE_OEM_CAUSE_11 = 0xf00b; |
| 913 | public static final int CODE_OEM_CAUSE_12 = 0xf00c; |
| 914 | public static final int CODE_OEM_CAUSE_13 = 0xf00d; |
| 915 | public static final int CODE_OEM_CAUSE_14 = 0xf00e; |
| 916 | public static final int CODE_OEM_CAUSE_15 = 0xf00f; |
| 917 | |
| 918 | /** |
| 919 | * @hide |
| 920 | */ |
| 921 | @IntDef(value = { |
| 922 | CODE_UNSPECIFIED, |
| 923 | CODE_LOCAL_ILLEGAL_ARGUMENT, |
| 924 | CODE_LOCAL_ILLEGAL_STATE, |
| 925 | CODE_LOCAL_INTERNAL_ERROR, |
| 926 | CODE_LOCAL_IMS_SERVICE_DOWN, |
| 927 | CODE_LOCAL_NO_PENDING_CALL, |
| 928 | CODE_LOCAL_ENDED_BY_CONFERENCE_MERGE, |
| 929 | CODE_LOCAL_POWER_OFF, |
| 930 | CODE_LOCAL_LOW_BATTERY, |
| 931 | CODE_LOCAL_NETWORK_NO_SERVICE, |
| 932 | CODE_LOCAL_NETWORK_NO_LTE_COVERAGE, |
| 933 | CODE_LOCAL_NETWORK_ROAMING, |
| 934 | CODE_LOCAL_NETWORK_IP_CHANGED, |
| 935 | CODE_LOCAL_SERVICE_UNAVAILABLE, |
| 936 | CODE_LOCAL_NOT_REGISTERED, |
| 937 | CODE_LOCAL_CALL_EXCEEDED, |
| 938 | CODE_LOCAL_CALL_BUSY, |
| 939 | CODE_LOCAL_CALL_DECLINE, |
| 940 | CODE_LOCAL_CALL_VCC_ON_PROGRESSING, |
| 941 | CODE_LOCAL_CALL_RESOURCE_RESERVATION_FAILED, |
| 942 | CODE_LOCAL_CALL_CS_RETRY_REQUIRED, |
| 943 | CODE_LOCAL_CALL_VOLTE_RETRY_REQUIRED, |
| 944 | CODE_LOCAL_CALL_TERMINATED, |
| 945 | CODE_LOCAL_HO_NOT_FEASIBLE, |
| 946 | CODE_TIMEOUT_1XX_WAITING, |
| 947 | CODE_TIMEOUT_NO_ANSWER, |
| 948 | CODE_TIMEOUT_NO_ANSWER_CALL_UPDATE, |
| 949 | CODE_CALL_BARRED, |
| 950 | CODE_FDN_BLOCKED, |
| 951 | CODE_IMEI_NOT_ACCEPTED, |
| 952 | CODE_DIAL_MODIFIED_TO_USSD, |
| 953 | CODE_DIAL_MODIFIED_TO_SS, |
| 954 | CODE_DIAL_MODIFIED_TO_DIAL, |
| 955 | CODE_DIAL_MODIFIED_TO_DIAL_VIDEO, |
| 956 | CODE_DIAL_VIDEO_MODIFIED_TO_DIAL, |
| 957 | CODE_DIAL_VIDEO_MODIFIED_TO_DIAL_VIDEO, |
| 958 | CODE_DIAL_VIDEO_MODIFIED_TO_SS, |
| 959 | CODE_DIAL_VIDEO_MODIFIED_TO_USSD, |
| 960 | CODE_SIP_REDIRECTED, |
| 961 | CODE_SIP_BAD_REQUEST, |
| 962 | CODE_SIP_FORBIDDEN, |
| 963 | CODE_SIP_NOT_FOUND, |
| 964 | CODE_SIP_NOT_SUPPORTED, |
| 965 | CODE_SIP_REQUEST_TIMEOUT, |
| 966 | CODE_SIP_TEMPRARILY_UNAVAILABLE, |
| 967 | CODE_SIP_BAD_ADDRESS, |
| 968 | CODE_SIP_BUSY, |
| 969 | CODE_SIP_REQUEST_CANCELLED, |
| 970 | CODE_SIP_NOT_ACCEPTABLE, |
| 971 | CODE_SIP_NOT_REACHABLE, |
| 972 | CODE_SIP_CLIENT_ERROR, |
| 973 | CODE_SIP_TRANSACTION_DOES_NOT_EXIST, |
| 974 | CODE_SIP_SERVER_INTERNAL_ERROR, |
| 975 | CODE_SIP_SERVICE_UNAVAILABLE, |
| 976 | CODE_SIP_SERVER_TIMEOUT, |
| 977 | CODE_SIP_SERVER_ERROR, |
| 978 | CODE_SIP_USER_REJECTED, |
| 979 | CODE_SIP_GLOBAL_ERROR, |
| 980 | CODE_EMERGENCY_TEMP_FAILURE, |
| 981 | CODE_EMERGENCY_PERM_FAILURE, |
| 982 | CODE_SIP_USER_MARKED_UNWANTED, |
| 983 | CODE_SIP_METHOD_NOT_ALLOWED, |
| 984 | CODE_SIP_PROXY_AUTHENTICATION_REQUIRED, |
| 985 | CODE_SIP_REQUEST_ENTITY_TOO_LARGE, |
| 986 | CODE_SIP_REQUEST_URI_TOO_LARGE, |
| 987 | CODE_SIP_EXTENSION_REQUIRED, |
| 988 | CODE_SIP_INTERVAL_TOO_BRIEF, |
| 989 | CODE_SIP_CALL_OR_TRANS_DOES_NOT_EXIST, |
| 990 | CODE_SIP_LOOP_DETECTED, |
| 991 | CODE_SIP_TOO_MANY_HOPS, |
| 992 | CODE_SIP_AMBIGUOUS, |
| 993 | CODE_SIP_REQUEST_PENDING, |
| 994 | CODE_SIP_UNDECIPHERABLE, |
| 995 | CODE_MEDIA_INIT_FAILED, |
| 996 | CODE_MEDIA_NO_DATA, |
| 997 | CODE_MEDIA_NOT_ACCEPTABLE, |
| 998 | CODE_MEDIA_UNSPECIFIED, |
| 999 | CODE_USER_TERMINATED, |
| 1000 | CODE_USER_NOANSWER, |
| 1001 | CODE_USER_IGNORE, |
| 1002 | CODE_USER_DECLINE, |
| 1003 | CODE_LOW_BATTERY, |
| 1004 | CODE_BLACKLISTED_CALL_ID, |
| 1005 | CODE_USER_TERMINATED_BY_REMOTE, |
| 1006 | CODE_USER_REJECTED_SESSION_MODIFICATION, |
| 1007 | CODE_USER_CANCELLED_SESSION_MODIFICATION, |
| 1008 | CODE_SESSION_MODIFICATION_FAILED, |
| 1009 | CODE_UT_NOT_SUPPORTED, |
| 1010 | CODE_UT_SERVICE_UNAVAILABLE, |
| 1011 | CODE_UT_OPERATION_NOT_ALLOWED, |
| 1012 | CODE_UT_NETWORK_ERROR, |
| 1013 | CODE_UT_CB_PASSWORD_MISMATCH, |
| 1014 | CODE_UT_SS_MODIFIED_TO_DIAL, |
| 1015 | CODE_UT_SS_MODIFIED_TO_USSD, |
| 1016 | CODE_UT_SS_MODIFIED_TO_SS, |
| 1017 | CODE_UT_SS_MODIFIED_TO_DIAL_VIDEO, |
| 1018 | CODE_ECBM_NOT_SUPPORTED, |
| 1019 | CODE_MULTIENDPOINT_NOT_SUPPORTED, |
| 1020 | CODE_REGISTRATION_ERROR, |
| 1021 | CODE_ANSWERED_ELSEWHERE, |
| 1022 | CODE_CALL_PULL_OUT_OF_SYNC, |
| 1023 | CODE_CALL_END_CAUSE_CALL_PULL, |
| 1024 | CODE_CALL_DROP_IWLAN_TO_LTE_UNAVAILABLE, |
| 1025 | CODE_REJECTED_ELSEWHERE, |
| 1026 | CODE_SUPP_SVC_FAILED, |
| 1027 | CODE_SUPP_SVC_CANCELLED, |
| 1028 | CODE_SUPP_SVC_REINVITE_COLLISION, |
| 1029 | CODE_IWLAN_DPD_FAILURE, |
| 1030 | CODE_EPDG_TUNNEL_ESTABLISH_FAILURE, |
| 1031 | CODE_EPDG_TUNNEL_REKEY_FAILURE, |
| 1032 | CODE_EPDG_TUNNEL_LOST_CONNECTION, |
| 1033 | CODE_MAXIMUM_NUMBER_OF_CALLS_REACHED, |
| 1034 | CODE_REMOTE_CALL_DECLINE, |
| 1035 | CODE_DATA_LIMIT_REACHED, |
| 1036 | CODE_DATA_DISABLED, |
| 1037 | CODE_WIFI_LOST, |
| 1038 | CODE_IKEV2_AUTH_FAILURE, |
| 1039 | CODE_RADIO_OFF, |
| 1040 | CODE_NO_VALID_SIM, |
| 1041 | CODE_RADIO_INTERNAL_ERROR, |
| 1042 | CODE_NETWORK_RESP_TIMEOUT, |
| 1043 | CODE_NETWORK_REJECT, |
| 1044 | CODE_RADIO_ACCESS_FAILURE, |
| 1045 | CODE_RADIO_LINK_FAILURE, |
| 1046 | CODE_RADIO_LINK_LOST, |
| 1047 | CODE_RADIO_UPLINK_FAILURE, |
| 1048 | CODE_RADIO_SETUP_FAILURE, |
| 1049 | CODE_RADIO_RELEASE_NORMAL, |
| 1050 | CODE_RADIO_RELEASE_ABNORMAL, |
| 1051 | CODE_ACCESS_CLASS_BLOCKED, |
| 1052 | CODE_NETWORK_DETACH, |
| 1053 | CODE_SIP_ALTERNATE_EMERGENCY_CALL, |
| 1054 | CODE_UNOBTAINABLE_NUMBER, |
| 1055 | CODE_NO_CSFB_IN_CS_ROAM, |
| 1056 | CODE_REJECT_UNKNOWN, |
| 1057 | CODE_REJECT_ONGOING_CALL_WAITING_DISABLED, |
| 1058 | CODE_REJECT_CALL_ON_OTHER_SUB, |
| 1059 | CODE_REJECT_1X_COLLISION, |
| 1060 | CODE_REJECT_SERVICE_NOT_REGISTERED, |
| 1061 | CODE_REJECT_CALL_TYPE_NOT_ALLOWED, |
| 1062 | CODE_REJECT_ONGOING_E911_CALL, |
| 1063 | CODE_REJECT_ONGOING_CALL_SETUP, |
| 1064 | CODE_REJECT_MAX_CALL_LIMIT_REACHED, |
| 1065 | CODE_REJECT_UNSUPPORTED_SIP_HEADERS, |
| 1066 | CODE_REJECT_UNSUPPORTED_SDP_HEADERS, |
| 1067 | CODE_REJECT_ONGOING_CALL_TRANSFER, |
| 1068 | CODE_REJECT_INTERNAL_ERROR, |
| 1069 | CODE_REJECT_QOS_FAILURE, |
| 1070 | CODE_REJECT_ONGOING_HANDOVER, |
| 1071 | CODE_REJECT_VT_TTY_NOT_ALLOWED, |
| 1072 | CODE_REJECT_ONGOING_CALL_UPGRADE, |
| 1073 | CODE_REJECT_CONFERENCE_TTY_NOT_ALLOWED, |
| 1074 | CODE_REJECT_ONGOING_CONFERENCE_CALL, |
| 1075 | CODE_REJECT_VT_AVPF_NOT_ALLOWED, |
| 1076 | CODE_REJECT_ONGOING_ENCRYPTED_CALL, |
| 1077 | CODE_REJECT_ONGOING_CS_CALL, |
| 1078 | CODE_RETRY_ON_IMS_WITHOUT_RTT, |
| 1079 | CODE_OEM_CAUSE_1, |
| 1080 | CODE_OEM_CAUSE_2, |
| 1081 | CODE_OEM_CAUSE_3, |
| 1082 | CODE_OEM_CAUSE_4, |
| 1083 | CODE_OEM_CAUSE_5, |
| 1084 | CODE_OEM_CAUSE_6, |
| 1085 | CODE_OEM_CAUSE_7, |
| 1086 | CODE_OEM_CAUSE_8, |
| 1087 | CODE_OEM_CAUSE_9, |
| 1088 | CODE_OEM_CAUSE_10, |
| 1089 | CODE_OEM_CAUSE_11, |
| 1090 | CODE_OEM_CAUSE_12, |
| 1091 | CODE_OEM_CAUSE_13, |
| 1092 | CODE_OEM_CAUSE_14, |
| 1093 | CODE_OEM_CAUSE_15 |
| 1094 | }, prefix = "CODE_") |
| 1095 | @Retention(RetentionPolicy.SOURCE) |
| 1096 | public @interface ImsCode {} |
| 1097 | |
| 1098 | /** |
| 1099 | * Network string error messages. |
| 1100 | * mExtraMessage may have these values. |
| 1101 | * @hide |
| 1102 | */ |
| 1103 | @SystemApi |
| 1104 | public static final String EXTRA_MSG_SERVICE_NOT_AUTHORIZED = |
| 1105 | "Forbidden. Not Authorized for Service"; |
| 1106 | |
| 1107 | |
| 1108 | /* |
| 1109 | * Extra codes for the specific code value |
| 1110 | * This value can be referred when the code is CODE_LOCAL_CALL_CS_RETRY_REQUIRED. |
| 1111 | */ |
| 1112 | /** |
| 1113 | * An extra that may be populated when the {@link #CODE_LOCAL_CALL_CS_RETRY_REQUIRED} result has |
| 1114 | * been returned. |
| 1115 | * <p> |
| 1116 | * Try to connect the call using CS |
| 1117 | */ |
| 1118 | public static final int EXTRA_CODE_CALL_RETRY_NORMAL = 1; |
| 1119 | /** |
| 1120 | * An extra that may be populated when the {@link #CODE_LOCAL_CALL_CS_RETRY_REQUIRED} result has |
| 1121 | * been returned. |
| 1122 | * <p> |
| 1123 | * Try to connect the call using CS and do not notify the user. |
| 1124 | */ |
| 1125 | public static final int EXTRA_CODE_CALL_RETRY_SILENT_REDIAL = 2; |
| 1126 | /** |
| 1127 | * An extra that may be populated when the {@link #CODE_LOCAL_CALL_CS_RETRY_REQUIRED} result has |
| 1128 | * been returned. |
| 1129 | * <p> |
| 1130 | * Try to connect the call using CS by using the settings. |
| 1131 | */ |
| 1132 | public static final int EXTRA_CODE_CALL_RETRY_BY_SETTINGS = 3; |
| 1133 | |
| 1134 | |
| 1135 | // For main reason code |
| 1136 | /** @hide */ |
| 1137 | @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.Q, publicAlternatives = "{@code " |
| 1138 | + "#getCode()}") |
| 1139 | public int mCode; |
| 1140 | // For the extra code value; it depends on the code value. |
| 1141 | /** @hide */ |
| 1142 | @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.Q, publicAlternatives = "{@code " |
| 1143 | + "#getExtraCode()}") |
| 1144 | public int mExtraCode; |
| 1145 | // For the additional message of the reason info. |
| 1146 | /** @hide */ |
| 1147 | @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.Q, publicAlternatives = "{@code " |
| 1148 | + "#getExtraMessage()}") |
| 1149 | public String mExtraMessage; |
| 1150 | |
| 1151 | /** @hide */ |
| 1152 | public ImsReasonInfo() { |
| 1153 | mCode = CODE_UNSPECIFIED; |
| 1154 | mExtraCode = CODE_UNSPECIFIED; |
| 1155 | mExtraMessage = null; |
| 1156 | } |
| 1157 | |
| 1158 | private ImsReasonInfo(Parcel in) { |
| 1159 | mCode = in.readInt(); |
| 1160 | mExtraCode = in.readInt(); |
| 1161 | mExtraMessage = in.readString(); |
| 1162 | } |
| 1163 | |
| 1164 | /** @hide */ |
| 1165 | @UnsupportedAppUsage |
| 1166 | public ImsReasonInfo(int code, int extraCode) { |
| 1167 | mCode = code; |
| 1168 | mExtraCode = extraCode; |
| 1169 | mExtraMessage = null; |
| 1170 | } |
| 1171 | |
| 1172 | public ImsReasonInfo(@ImsCode int code, int extraCode, @Nullable String extraMessage) { |
| 1173 | mCode = code; |
| 1174 | mExtraCode = extraCode; |
| 1175 | mExtraMessage = extraMessage; |
| 1176 | } |
| 1177 | |
| 1178 | /** |
| 1179 | * @return an integer representing more information about the completion of an operation. |
| 1180 | */ |
| 1181 | public @ImsCode int getCode() { |
| 1182 | return mCode; |
| 1183 | } |
| 1184 | |
| 1185 | /** |
| 1186 | * @return an optional OEM specified code that provides extra information. |
| 1187 | */ |
| 1188 | public int getExtraCode() { |
| 1189 | return mExtraCode; |
| 1190 | } |
| 1191 | |
| 1192 | /** |
| 1193 | * @return an optional OEM specified string that provides extra information about the operation |
| 1194 | * result. |
| 1195 | */ |
| 1196 | public @Nullable String getExtraMessage() { |
| 1197 | return mExtraMessage; |
| 1198 | } |
| 1199 | |
| 1200 | /** |
| 1201 | * @return the string format of {@link ImsReasonInfo} |
| 1202 | */ |
| 1203 | @NonNull |
| 1204 | @Override |
| 1205 | public String toString() { |
| 1206 | return "ImsReasonInfo :: {" + mCode + ", " + mExtraCode + ", " + mExtraMessage + "}"; |
| 1207 | } |
| 1208 | |
| 1209 | @Override |
| 1210 | public int describeContents() { |
| 1211 | return 0; |
| 1212 | } |
| 1213 | |
| 1214 | @Override |
| 1215 | public void writeToParcel(@NonNull Parcel out, int flags) { |
| 1216 | out.writeInt(mCode); |
| 1217 | out.writeInt(mExtraCode); |
| 1218 | out.writeString(mExtraMessage); |
| 1219 | } |
| 1220 | |
| 1221 | public static final @NonNull Creator<ImsReasonInfo> CREATOR = new Creator<ImsReasonInfo>() { |
| 1222 | @Override |
| 1223 | public ImsReasonInfo createFromParcel(Parcel in) { |
| 1224 | return new ImsReasonInfo(in); |
| 1225 | } |
| 1226 | |
| 1227 | @Override |
| 1228 | public ImsReasonInfo[] newArray(int size) { |
| 1229 | return new ImsReasonInfo[size]; |
| 1230 | } |
| 1231 | }; |
| 1232 | } |