/*
 * Copyright (C) 2006 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package android.telephony;

import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.SystemApi;
import android.content.Context;
import android.os.PersistableBundle;

import com.android.internal.util.ArrayUtils;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

/**
 * Returned as the reason for a data connection failure as defined by modem and some local errors.
 * @hide
 */
@SystemApi
public final class DataFailCause {
    /** There is no failure */
    public static final int NONE = 0;

    // This series of errors as specified by the standards
    // specified in ril.h
    /** Operator determined barring. (no retry) */
    public static final int OPERATOR_BARRED = 0x08;
    /** NAS signalling. */
    public static final int NAS_SIGNALLING = 0x0E;
    /** Logical Link Control (LLC) Sub Network Dependent Convergence Protocol (SNDCP). */
    public static final int LLC_SNDCP = 0x19;
    /** Insufficient resources. */
    public static final int INSUFFICIENT_RESOURCES = 0x1A;
    /** Missing or unknown APN. */
    public static final int MISSING_UNKNOWN_APN = 0x1B;              /* no retry */
    /** Unknown Packet Data Protocol (PDP) address type. */
    public static final int UNKNOWN_PDP_ADDRESS_TYPE = 0x1C;         /* no retry */
    /** User authentication. */
    public static final int USER_AUTHENTICATION = 0x1D;              /* no retry */
    /** Activation rejected by Gateway GPRS Support Node (GGSN), Serving Gateway or PDN Gateway. */
    public static final int ACTIVATION_REJECT_GGSN = 0x1E;           /* no retry */
    /** Activation rejected, unspecified. */
    public static final int ACTIVATION_REJECT_UNSPECIFIED = 0x1F;
    /** Service option not supported. */
    public static final int SERVICE_OPTION_NOT_SUPPORTED = 0x20;     /* no retry */
    /** Requested service option not subscribed. */
    public static final int SERVICE_OPTION_NOT_SUBSCRIBED = 0x21;    /* no retry */
    /** Service option temporarily out of order. */
    public static final int SERVICE_OPTION_OUT_OF_ORDER = 0x22;
    /** The Network Service Access Point Identifier (NSAPI) is in use. */
    public static final int NSAPI_IN_USE = 0x23;                     /* no retry */
    /* possibly restart radio, based on config */
    /** Regular deactivation. */
    public static final int REGULAR_DEACTIVATION = 0x24;
    /** Quality of service (QoS) is not accepted. */
    public static final int QOS_NOT_ACCEPTED = 0x25;
    /** Network Failure. */
    public static final int NETWORK_FAILURE = 0x26;
    /** Universal Mobile Telecommunications System (UMTS) reactivation request. */
    public static final int UMTS_REACTIVATION_REQ = 0x27;
    /** Feature not supported. */
    public static final int FEATURE_NOT_SUPP = 0x28;
    /** Semantic error in the Traffic flow templates (TFT) operation. */
    public static final int TFT_SEMANTIC_ERROR = 0x29;
    /** Syntactical error in the Traffic flow templates (TFT) operation. */
    public static final int TFT_SYTAX_ERROR = 0x2A;
    /** Unknown Packet Data Protocol (PDP) context. */
    public static final int UNKNOWN_PDP_CONTEXT = 0x2B;
    /** Semantic errors in packet filter. */
    public static final int FILTER_SEMANTIC_ERROR = 0x2C;
    /** Syntactical errors in packet filter(s). */
    public static final int FILTER_SYTAX_ERROR = 0x2D;
    /** Packet Data Protocol (PDP) without active traffic flow template (TFT). */
    public static final int PDP_WITHOUT_ACTIVE_TFT = 0x2E;
    /**
     * UE requested to modify QoS parameters or the bearer control mode, which is not compatible
     * with the selected bearer control mode.
     */
    public static final int ACTIVATION_REJECTED_BCM_VIOLATION = 0x30;
    /** Packet Data Protocol (PDP) type IPv4 only allowed. */
    public static final int ONLY_IPV4_ALLOWED = 0x32;                /* no retry */
    /** Packet Data Protocol (PDP) type IPv6 only allowed. */
    public static final int ONLY_IPV6_ALLOWED = 0x33;                /* no retry */
    /** Single address bearers only allowed. */
    public static final int ONLY_SINGLE_BEARER_ALLOWED = 0x34;
    /** EPS Session Management (ESM) information is not received. */
    public static final int ESM_INFO_NOT_RECEIVED = 0x35;
    /** PDN connection does not exist. */
    public static final int PDN_CONN_DOES_NOT_EXIST = 0x36;
    /** Multiple connections to a same PDN is not allowed. */
    public static final int MULTI_CONN_TO_SAME_PDN_NOT_ALLOWED = 0x37;
    /**
     * Network has already initiated the activation, modification, or deactivation of bearer
     * resources that was requested by the UE.
     */
    public static final int COLLISION_WITH_NETWORK_INITIATED_REQUEST = 0x38;
    /**
     * Network supports IPv4v6 PDP type only. Non-IP type is not allowed. In LTE mode of operation,
     * this is a PDN throttling cause code, meaning the UE may throttle further requests to the
     * same APN.
     */
    public static final int ONLY_IPV4V6_ALLOWED = 0x39;
    /**
     * Network supports non-IP PDP type only. IPv4, IPv6 and IPv4v6 is not allowed. In LTE mode of
     * operation, this is a PDN throttling cause code, meaning the UE can throttle further requests
     * to the same APN.
     */
    public static final int ONLY_NON_IP_ALLOWED = 0x3A;
    /** QCI (QoS Class Identifier) indicated in the UE request cannot be supported. */
    public static final int UNSUPPORTED_QCI_VALUE = 0x3B;
    /** Procedure requested by the UE was rejected because the bearer handling is not supported. */
    public static final int BEARER_HANDLING_NOT_SUPPORTED = 0x3C;
    /** Max number of Packet Data Protocol (PDP) context reached. */
    public static final int ACTIVE_PDP_CONTEXT_MAX_NUMBER_REACHED = 0x41;
    /** Unsupported APN in current public land mobile network (PLMN). */
    public static final int UNSUPPORTED_APN_IN_CURRENT_PLMN = 0x42;
    /** Invalid transaction id. */
    public static final int INVALID_TRANSACTION_ID = 0x51;
    /** Incorrect message semantic. */
    public static final int MESSAGE_INCORRECT_SEMANTIC = 0x5F;
    /** Invalid mandatory information. */
    public static final int INVALID_MANDATORY_INFO = 0x60;
    /** Unsupported message type. */
    public static final int MESSAGE_TYPE_UNSUPPORTED = 0x61;
    /** Message type uncompatible. */
    public static final int MSG_TYPE_NONCOMPATIBLE_STATE = 0x62;
    /** Unknown info element. */
    public static final int UNKNOWN_INFO_ELEMENT = 0x63;
    /** Conditional Information Element (IE) error. */
    public static final int CONDITIONAL_IE_ERROR = 0x64;
    /** Message and protocol state uncompatible. */
    public static final int MSG_AND_PROTOCOL_STATE_UNCOMPATIBLE = 0x65;
    /** Protocol errors. */
    public static final int PROTOCOL_ERRORS = 0x6F;                  /* no retry */
    /** APN type conflict. */
    public static final int APN_TYPE_CONFLICT = 0x70;
    /** Invalid Proxy-Call Session Control Function (P-CSCF) address. */
    public static final int INVALID_PCSCF_ADDR = 0x71;
    /** Internal data call preempt by high priority APN. */
    public static final int INTERNAL_CALL_PREEMPT_BY_HIGH_PRIO_APN = 0x72;
    /** EPS (Evolved Packet System) Mobility Management (EMM) access barred. */
    public static final int EMM_ACCESS_BARRED = 0x73;
    /** Emergency interface only. */
    public static final int EMERGENCY_IFACE_ONLY = 0x74;
    /** Interface mismatch. */
    public static final int IFACE_MISMATCH = 0x75;
    /** Companion interface in use. */
    public static final int COMPANION_IFACE_IN_USE = 0x76;
    /** IP address mismatch. */
    public static final int IP_ADDRESS_MISMATCH = 0x77;
    public static final int IFACE_AND_POL_FAMILY_MISMATCH = 0x78;
    /** EPS (Evolved Packet System) Mobility Management (EMM) access barred infinity retry. **/
    public static final int EMM_ACCESS_BARRED_INFINITE_RETRY = 0x79;
    /** Authentication failure on emergency call. */
    public static final int AUTH_FAILURE_ON_EMERGENCY_CALL = 0x7A;
    /** Not receiving a DNS address that was mandatory. */
    public static final int INVALID_DNS_ADDR = 0x7B;
    /** Not receiving either a PCSCF or a DNS address, one of them being mandatory. */
    public static final int INVALID_PCSCF_OR_DNS_ADDRESS = 0x7C;
    /** Emergency call bring up on a different ePDG. */
    public static final int CALL_PREEMPT_BY_EMERGENCY_APN = 0x7F;
    /** UE performs a detach or disconnect PDN action based on TE requirements. */
    public static final int UE_INITIATED_DETACH_OR_DISCONNECT = 0x80;

    /** Reason unspecified for foreign agent rejected MIP (Mobile IP) registration. */
    public static final int MIP_FA_REASON_UNSPECIFIED = 0x7D0;
    /** Foreign agent administratively prohibited MIP (Mobile IP) registration. */
    public static final int MIP_FA_ADMIN_PROHIBITED = 0x7D1;
    /** Foreign agent rejected MIP (Mobile IP) registration because of insufficient resources. */
    public static final int MIP_FA_INSUFFICIENT_RESOURCES = 0x7D2;
    /**
     * Foreign agent rejected MIP (Mobile IP) registration because of MN-AAA authenticator was
     * wrong.
     */
    public static final int MIP_FA_MOBILE_NODE_AUTHENTICATION_FAILURE = 0x7D3;
    /**
     * Foreign agent rejected MIP (Mobile IP) registration because of home agent authentication
     * failure.
     */
    public static final int MIP_FA_HOME_AGENT_AUTHENTICATION_FAILURE = 0x7D4;
    /**
     * Foreign agent rejected MIP (Mobile IP) registration because of requested lifetime was too
     * long.
     */
    public static final int MIP_FA_REQUESTED_LIFETIME_TOO_LONG = 0x7D5;
    /** Foreign agent rejected MIP (Mobile IP) registration because of malformed request. */
    public static final int MIP_FA_MALFORMED_REQUEST = 0x7D6;
    /** Foreign agent rejected MIP (Mobile IP) registration because of malformed reply. */
    public static final int MIP_FA_MALFORMED_REPLY = 0x7D7;
    /**
     * Foreign agent rejected MIP (Mobile IP) registration because of requested encapsulation was
     * unavailable.
     */
    public static final int MIP_FA_ENCAPSULATION_UNAVAILABLE = 0x7D8;
    /**
     * Foreign agent rejected MIP (Mobile IP) registration of VJ Header Compression was
     * unavailable.
     */
    public static final int MIP_FA_VJ_HEADER_COMPRESSION_UNAVAILABLE = 0x7D9;
    /**
     * Foreign agent rejected MIP (Mobile IP) registration because of reverse tunnel was
     * unavailable.
     */
    public static final int MIP_FA_REVERSE_TUNNEL_UNAVAILABLE = 0x7DA;
    /**
     * Foreign agent rejected MIP (Mobile IP) registration because of reverse tunnel was mandatory
     * but not requested by device.
     */
    public static final int MIP_FA_REVERSE_TUNNEL_IS_MANDATORY = 0x7DB;
    /**
     * Foreign agent rejected MIP (Mobile IP) registration because of delivery style was not
     * supported.
     */
    public static final int MIP_FA_DELIVERY_STYLE_NOT_SUPPORTED = 0x7DC;
    /**
     * Foreign agent rejected MIP (Mobile IP) registration because of missing NAI (Network Access
     * Identifier).
     */
    public static final int MIP_FA_MISSING_NAI = 0x7DD;
    /** Foreign agent rejected MIP (Mobile IP) registration because of missing Home Agent. */
    public static final int MIP_FA_MISSING_HOME_AGENT = 0x7DE;
    /** Foreign agent rejected MIP (Mobile IP) registration because of missing Home Address. */
    public static final int MIP_FA_MISSING_HOME_ADDRESS = 0x7DF;
    /** Foreign agent rejected MIP (Mobile IP) registration because of unknown challenge. */
    public static final int MIP_FA_UNKNOWN_CHALLENGE = 0x7E0;
    /** Foreign agent rejected MIP (Mobile IP) registration because of missing challenge. */
    public static final int MIP_FA_MISSING_CHALLENGE = 0x7E1;
    /** Foreign agent rejected MIP (Mobile IP) registration because of stale challenge. */
    public static final int MIP_FA_STALE_CHALLENGE = 0x7E2;
    /** Reason unspecified for home agent rejected MIP (Mobile IP) registration. */
    public static final int MIP_HA_REASON_UNSPECIFIED = 0x7E3;
    /** Home agent administratively prohibited MIP (Mobile IP) registration. */
    public static final int MIP_HA_ADMIN_PROHIBITED = 0x7E4;
    /** Home agent rejected MIP (Mobile IP) registration because of insufficient resources. */
    public static final int MIP_HA_INSUFFICIENT_RESOURCES = 0x7E5;
    /**
     * Home agent rejected MIP (Mobile IP) registration because of MN-HA authenticator was
     * wrong.
     */
    public static final int MIP_HA_MOBILE_NODE_AUTHENTICATION_FAILURE = 0x7E6;
    /**
     * Home agent rejected MIP (Mobile IP) registration because of foreign agent authentication
     * failure.
     */
    public static final int MIP_HA_FOREIGN_AGENT_AUTHENTICATION_FAILURE = 0x7E7;
    /** Home agent rejected MIP (Mobile IP) registration because of registration id mismatch. */
    public static final int MIP_HA_REGISTRATION_ID_MISMATCH = 0x7E8;
    /** Home agent rejected MIP (Mobile IP) registration because of malformed request. */
    public static final int MIP_HA_MALFORMED_REQUEST = 0x7E9;
    /** Home agent rejected MIP (Mobile IP) registration because of unknown home agent address. */
    public static final int MIP_HA_UNKNOWN_HOME_AGENT_ADDRESS = 0x7EA;
    /**
     * Home agent rejected MIP (Mobile IP) registration because of reverse tunnel was
     * unavailable.
     */
    public static final int MIP_HA_REVERSE_TUNNEL_UNAVAILABLE = 0x7EB;
    /**
     * Home agent rejected MIP (Mobile IP) registration because of reverse tunnel is mandatory but
     * not requested by device.
     */
    public static final int MIP_HA_REVERSE_TUNNEL_IS_MANDATORY = 0x7EC;
    /** Home agent rejected MIP (Mobile IP) registration because of encapsulation unavailable. */
    public static final int MIP_HA_ENCAPSULATION_UNAVAILABLE = 0x7ED;
    /** Tearing down is in progress. */
    public static final int CLOSE_IN_PROGRESS = 0x7EE;
    /** Brought down by the network. */
    public static final int NETWORK_INITIATED_TERMINATION = 0x7EF;
    /** Another application in modem preempts the data call. */
    public static final int MODEM_APP_PREEMPTED = 0x7F0;
    /**
     * IPV4 PDN is in throttled state due to network providing only IPV6 address during the
     * previous VSNCP bringup (subs_limited_to_v6).
     */
    public static final int PDN_IPV4_CALL_DISALLOWED = 0x7F1;
    /** IPV4 PDN is in throttled state due to previous VSNCP bringup failure(s). */
    public static final int PDN_IPV4_CALL_THROTTLED = 0x7F2;
    /**
     * IPV6 PDN is in throttled state due to network providing only IPV4 address during the
     * previous VSNCP bringup (subs_limited_to_v4).
     */
    public static final int PDN_IPV6_CALL_DISALLOWED = 0x7F3;
    /** IPV6 PDN is in throttled state due to previous VSNCP bringup failure(s). */
    public static final int PDN_IPV6_CALL_THROTTLED = 0x7F4;
    /** Modem restart. */
    public static final int MODEM_RESTART = 0x7F5;
    /** PDP PPP calls are not supported. */
    public static final int PDP_PPP_NOT_SUPPORTED = 0x7F6;
    /** RAT on which the data call is attempted/connected is no longer the preferred RAT. */
    public static final int UNPREFERRED_RAT = 0x7F7;
    /** Physical link is in the process of cleanup. */
    public static final int PHYSICAL_LINK_CLOSE_IN_PROGRESS = 0x7F8;
    /** Interface bring up is attempted for an APN that is yet to be handed over to target RAT. */
    public static final int APN_PENDING_HANDOVER = 0x7F9;
    /** APN bearer type in the profile does not match preferred network mode. */
    public static final int PROFILE_BEARER_INCOMPATIBLE = 0x7FA;
    /** Card was refreshed or removed. */
    public static final int SIM_CARD_CHANGED = 0x7FB;
    /** Device is going into lower power mode or powering down. */
    public static final int LOW_POWER_MODE_OR_POWERING_DOWN = 0x7FC;
    /** APN has been disabled. */
    public static final int APN_DISABLED = 0x7FD;
    /** Maximum PPP inactivity timer expired. */
    public static final int MAX_PPP_INACTIVITY_TIMER_EXPIRED = 0x7FE;
    /** IPv6 address transfer failed. */
    public static final int IPV6_ADDRESS_TRANSFER_FAILED = 0x7FF;
    /** Target RAT swap failed. */
    public static final int TRAT_SWAP_FAILED = 0x800;
    /** Device falls back from eHRPD to HRPD. */
    public static final int EHRPD_TO_HRPD_FALLBACK = 0x801;
    /**
     * UE is in MIP-only configuration but the MIP configuration fails on call bring up due to
     * incorrect provisioning.
     */
    public static final int MIP_CONFIG_FAILURE = 0x802;
    /**
     * PDN inactivity timer expired due to no data transmission in a configurable duration of time.
     */
    public static final int PDN_INACTIVITY_TIMER_EXPIRED = 0x803;
    /**
     * IPv4 data call bring up is rejected because the UE already maintains the allotted maximum
     * number of IPv4 data connections.
     */
    public static final int MAX_IPV4_CONNECTIONS = 0x804;
    /**
     * IPv6 data call bring up is rejected because the UE already maintains the allotted maximum
     * number of IPv6 data connections.
     */
    public static final int MAX_IPV6_CONNECTIONS = 0x805;
    /**
     * New PDN bring up is rejected during interface selection because the UE has already allotted
     * the available interfaces for other PDNs.
     */
    public static final int APN_MISMATCH = 0x806;
    /**
     * New call bring up is rejected since the existing data call IP type doesn't match the
     * requested IP.
     */
    public static final int IP_VERSION_MISMATCH = 0x807;
    /** Dial up networking (DUN) call bring up is rejected since UE is in eHRPD RAT. */
    public static final int DUN_CALL_DISALLOWED = 0x808;
    /*** Rejected/Brought down since UE is transition between EPC and NONEPC RAT. */
    public static final int INTERNAL_EPC_NONEPC_TRANSITION = 0x809;
    /** The current interface is being in use. */
    public static final int INTERFACE_IN_USE = 0x80A;
    /** PDN connection to the APN is disallowed on the roaming network. */
    public static final int APN_DISALLOWED_ON_ROAMING = 0x80B;
    /** APN-related parameters are changed. */
    public static final int APN_PARAMETERS_CHANGED = 0x80C;
    /** PDN is attempted to be brought up with NULL APN but NULL APN is not supported. */
    public static final int NULL_APN_DISALLOWED = 0x80D;
    /**
     * Thermal level increases and causes calls to be torn down when normal mode of operation is
     * not allowed.
     */
    public static final int THERMAL_MITIGATION = 0x80E;
    /**
     * PDN Connection to a given APN is disallowed because data is disabled from the device user
     * interface settings.
     */
    public static final int DATA_SETTINGS_DISABLED = 0x80F;
    /**
     * PDN Connection to a given APN is disallowed because data roaming is disabled from the device
     * user interface settings and the UE is roaming.
     */
    public static final int DATA_ROAMING_SETTINGS_DISABLED = 0x810;
    /** DDS (Default data subscription) switch occurs. */
    public static final int DDS_SWITCHED = 0x811;
    /** PDN being brought up with an APN that is part of forbidden APN Name list. */
    public static final int FORBIDDEN_APN_NAME = 0x812;
    /** Default data subscription switch is in progress. */
    public static final int DDS_SWITCH_IN_PROGRESS = 0x813;
    /** Roaming is disallowed during call bring up. */
    public static final int CALL_DISALLOWED_IN_ROAMING = 0x814;
    /**
     * UE is unable to bring up a non-IP data call because the device is not camped on a NB1 cell.
     */
    public static final int NON_IP_NOT_SUPPORTED = 0x815;
    /** Non-IP PDN is in throttled state due to previous VSNCP bringup failure(s). */
    public static final int PDN_NON_IP_CALL_THROTTLED = 0x816;
    /** Non-IP PDN is in disallowed state due to the network providing only an IP address. */
    public static final int PDN_NON_IP_CALL_DISALLOWED = 0x817;
    /** Device in CDMA locked state. */
    public static final int CDMA_LOCK = 0x818;
    /** Received an intercept order from the base station. */
    public static final int CDMA_INTERCEPT = 0x819;
    /** Receiving a reorder from the base station. */
    public static final int CDMA_REORDER = 0x81A;
    /** Receiving a release from the base station with a SO (Service Option) Reject reason. */
    public static final int CDMA_RELEASE_DUE_TO_SO_REJECTION = 0x81B;
    /** Receiving an incoming call from the base station. */
    public static final int CDMA_INCOMING_CALL = 0x81C;
    /** Received an alert stop from the base station due to incoming only. */
    public static final int CDMA_ALERT_STOP = 0x81D;
    /**
     * Channel acquisition failures. This indicates that device has failed acquiring all the
     * channels in the PRL.
     */
    public static final int CHANNEL_ACQUISITION_FAILURE = 0x81E;
    /** Maximum access probes transmitted. */
    public static final int MAX_ACCESS_PROBE = 0x81F;
    /** Concurrent service is not supported by base station. */
    public static final int CONCURRENT_SERVICE_NOT_SUPPORTED_BY_BASE_STATION = 0x820;
    /** There was no response received from the base station. */
    public static final int NO_RESPONSE_FROM_BASE_STATION = 0x821;
    /** The base station rejecting the call. */
    public static final int REJECTED_BY_BASE_STATION = 0x822;
    /** The concurrent services requested were not compatible. */
    public static final int CONCURRENT_SERVICES_INCOMPATIBLE = 0x823;
    /** Device does not have CDMA service. */
    public static final int NO_CDMA_SERVICE = 0x824;
    /** RUIM not being present. */
    public static final int RUIM_NOT_PRESENT = 0x825;
    /** Receiving a retry order from the base station. */
    public static final int CDMA_RETRY_ORDER = 0x826;
    /** Access blocked by the base station. */
    public static final int ACCESS_BLOCK = 0x827;
    /** Access blocked by the base station for all mobile devices. */
    public static final int ACCESS_BLOCK_ALL = 0x828;
    /** Maximum access probes for the IS-707B call. */
    public static final int IS707B_MAX_ACCESS_PROBES = 0x829;
    /** Put device in thermal emergency. */
    public static final int THERMAL_EMERGENCY = 0x82A;
    /** In favor of a voice call or SMS when concurrent voice and data are not supported. */
    public static final int CONCURRENT_SERVICES_NOT_ALLOWED = 0x82B;
    /** The other clients rejected incoming call. */
    public static final int INCOMING_CALL_REJECTED = 0x82C;
    /** No service on the gateway. */
    public static final int NO_SERVICE_ON_GATEWAY = 0x82D;
    /** GPRS context is not available. */
    public static final int NO_GPRS_CONTEXT = 0x82E;
    /**
     * Network refuses service to the MS because either an identity of the MS is not acceptable to
     * the network or the MS does not pass the authentication check.
     */
    public static final int ILLEGAL_MS = 0x82F;
    /** ME could not be authenticated and the ME used is not acceptable to the network. */
    public static final int ILLEGAL_ME = 0x830;
    /** Not allowed to operate either GPRS or non-GPRS services. */
    public static final int GPRS_SERVICES_AND_NON_GPRS_SERVICES_NOT_ALLOWED = 0x831;
    /** MS is not allowed to operate GPRS services. */
    public static final int GPRS_SERVICES_NOT_ALLOWED = 0x832;
    /** No matching identity or context could be found in the network. */
    public static final int MS_IDENTITY_CANNOT_BE_DERIVED_BY_THE_NETWORK = 0x833;
    /**
     * Mobile reachable timer has expired, or the GMM context data related to the subscription does
     * not exist in the SGSN.
     */
    public static final int IMPLICITLY_DETACHED = 0x834;
    /**
     * UE requests GPRS service, or the network initiates a detach request in a PLMN which does not
     * offer roaming for GPRS services to that MS.
     */
    public static final int PLMN_NOT_ALLOWED = 0x835;
    /**
     * MS requests service, or the network initiates a detach request, in a location area where the
     * HPLMN determines that the MS, by subscription, is not allowed to operate.
     */
    public static final int LOCATION_AREA_NOT_ALLOWED = 0x836;
    /**
     * UE requests GPRS service or the network initiates a detach request in a PLMN that does not
     * offer roaming for GPRS services.
     */
    public static final int GPRS_SERVICES_NOT_ALLOWED_IN_THIS_PLMN = 0x837;
    /** PDP context already exists. */
    public static final int PDP_DUPLICATE = 0x838;
    /** RAT change on the UE. */
    public static final int UE_RAT_CHANGE = 0x839;
    /** Network cannot serve a request from the MS due to congestion. */
    public static final int CONGESTION = 0x83A;
    /**
     * MS requests an establishment of the radio access bearers for all active PDP contexts by
     * sending a service request message indicating data to the network, but the SGSN does not have
     * any active PDP context.
     */
    public static final int NO_PDP_CONTEXT_ACTIVATED = 0x83B;
    /** Access class blocking restrictions for the current camped cell. */
    public static final int ACCESS_CLASS_DSAC_REJECTION = 0x83C;
    /** SM attempts PDP activation for a maximum of four attempts. */
    public static final int PDP_ACTIVATE_MAX_RETRY_FAILED = 0x83D;
    /** Radio access bearer failure. */
    public static final int RADIO_ACCESS_BEARER_FAILURE = 0x83E;
    /** Invalid EPS bearer identity in the request. */
    public static final int ESM_UNKNOWN_EPS_BEARER_CONTEXT = 0x83F;
    /** Data radio bearer is released by the RRC. */
    public static final int DRB_RELEASED_BY_RRC = 0x840;
    /** Indicate the connection was released. */
    public static final int CONNECTION_RELEASED = 0x841;
    /** UE is detached. */
    public static final int EMM_DETACHED = 0x842;
    /** Attach procedure is rejected by the network. */
    public static final int EMM_ATTACH_FAILED = 0x843;
    /** Attach procedure is started for EMC purposes. */
    public static final int EMM_ATTACH_STARTED = 0x844;
    /** Service request procedure failure. */
    public static final int LTE_NAS_SERVICE_REQUEST_FAILED = 0x845;
    /** Active dedicated bearer was requested using the same default bearer ID. */
    public static final int DUPLICATE_BEARER_ID = 0x846;
    /** Collision scenarios for the UE and network-initiated procedures. */
    public static final int ESM_COLLISION_SCENARIOS = 0x847;
    /** Bearer must be deactivated to synchronize with the network. */
    public static final int ESM_BEARER_DEACTIVATED_TO_SYNC_WITH_NETWORK = 0x848;
    /** Active dedicated bearer was requested for an existing default bearer. */
    public static final int ESM_NW_ACTIVATED_DED_BEARER_WITH_ID_OF_DEF_BEARER = 0x849;
    /** Bad OTA message is received from the network. */
    public static final int ESM_BAD_OTA_MESSAGE = 0x84A;
    /** Download server rejected the call. */
    public static final int ESM_DOWNLOAD_SERVER_REJECTED_THE_CALL = 0x84B;
    /** PDN was disconnected by the downlaod server due to IRAT. */
    public static final int ESM_CONTEXT_TRANSFERRED_DUE_TO_IRAT = 0x84C;
    /** Dedicated bearer will be deactivated regardless of the network response. */
    public static final int DS_EXPLICIT_DEACTIVATION = 0x84D;
    /** No specific local cause is mentioned, usually a valid OTA cause. */
    public static final int ESM_LOCAL_CAUSE_NONE = 0x84E;
    /** Throttling is not needed for this service request failure. */
    public static final int LTE_THROTTLING_NOT_REQUIRED = 0x84F;
    /** Access control list check failure at the lower layer. */
    public static final int ACCESS_CONTROL_LIST_CHECK_FAILURE = 0x850;
    /** Service is not allowed on the requested PLMN. */
    public static final int SERVICE_NOT_ALLOWED_ON_PLMN = 0x851;
    /** T3417 timer expiration of the service request procedure. */
    public static final int EMM_T3417_EXPIRED = 0x852;
    /** Extended service request fails due to expiration of the T3417 EXT timer. */
    public static final int EMM_T3417_EXT_EXPIRED = 0x853;
    /** Transmission failure of radio resource control (RRC) uplink data. */
    public static final int RRC_UPLINK_DATA_TRANSMISSION_FAILURE = 0x854;
    /** Radio resource control (RRC) uplink data delivery failed due to a handover. */
    public static final int RRC_UPLINK_DELIVERY_FAILED_DUE_TO_HANDOVER = 0x855;
    /** Radio resource control (RRC) uplink data delivery failed due to a connection release. */
    public static final int RRC_UPLINK_CONNECTION_RELEASE = 0x856;
    /** Radio resource control (RRC) uplink data delivery failed due to a radio link failure. */
    public static final int RRC_UPLINK_RADIO_LINK_FAILURE = 0x857;
    /**
     * Radio resource control (RRC) is not connected but the non-access stratum (NAS) sends an
     * uplink data request.
     */
    public static final int RRC_UPLINK_ERROR_REQUEST_FROM_NAS = 0x858;
    /** Radio resource control (RRC) connection failure at access stratum. */
    public static final int RRC_CONNECTION_ACCESS_STRATUM_FAILURE = 0x859;
    /**
     * Radio resource control (RRC) connection establishment is aborted due to another procedure.
     */
    public static final int RRC_CONNECTION_ANOTHER_PROCEDURE_IN_PROGRESS = 0x85A;
    /** Radio resource control (RRC) connection establishment failed due to access barrred. */
    public static final int RRC_CONNECTION_ACCESS_BARRED = 0x85B;
    /**
     * Radio resource control (RRC) connection establishment failed due to cell reselection at
     * access stratum.
     */
    public static final int RRC_CONNECTION_CELL_RESELECTION = 0x85C;
    /**
     * Connection establishment failed due to configuration failure at the radio resource control
     * (RRC).
     */
    public static final int RRC_CONNECTION_CONFIG_FAILURE = 0x85D;
    /** Radio resource control (RRC) connection could not be established in the time limit. */
    public static final int RRC_CONNECTION_TIMER_EXPIRED = 0x85E;
    /**
     * Connection establishment failed due to a link failure at the radio resource control (RRC).
     */
    public static final int RRC_CONNECTION_LINK_FAILURE = 0x85F;
    /**
     * Connection establishment failed as the radio resource control (RRC) is not camped on any
     * cell.
     */
    public static final int RRC_CONNECTION_CELL_NOT_CAMPED = 0x860;
    /**
     * Connection establishment failed due to a service interval failure at the radio resource
     * control (RRC).
     */
    public static final int RRC_CONNECTION_SYSTEM_INTERVAL_FAILURE = 0x861;
    /**
     * Radio resource control (RRC) connection establishment failed due to the network rejecting
     * the UE connection request.
     */
    public static final int RRC_CONNECTION_REJECT_BY_NETWORK = 0x862;
    /** Normal radio resource control (RRC) connection release. */
    public static final int RRC_CONNECTION_NORMAL_RELEASE = 0x863;
    /**
     * Radio resource control (RRC) connection release failed due to radio link failure conditions.
     */
    public static final int RRC_CONNECTION_RADIO_LINK_FAILURE = 0x864;
    /** Radio resource control (RRC) connection re-establishment failure. */
    public static final int RRC_CONNECTION_REESTABLISHMENT_FAILURE = 0x865;
    /** UE is out of service during the call register. */
    public static final int RRC_CONNECTION_OUT_OF_SERVICE_DURING_CELL_REGISTER = 0x866;
    /**
     * Connection has been released by the radio resource control (RRC) due to an abort request.
     */
    public static final int RRC_CONNECTION_ABORT_REQUEST = 0x867;
    /**
     * Radio resource control (RRC) connection released due to a system information block read
     * error.
     */
    public static final int RRC_CONNECTION_SYSTEM_INFORMATION_BLOCK_READ_ERROR = 0x868;
    /** Network-initiated detach with reattach. */
    public static final int NETWORK_INITIATED_DETACH_WITH_AUTO_REATTACH = 0x869;
    /** Network-initiated detach without reattach. */
    public static final int NETWORK_INITIATED_DETACH_NO_AUTO_REATTACH = 0x86A;
    /** ESM procedure maximum attempt timeout failure. */
    public static final int ESM_PROCEDURE_TIME_OUT = 0x86B;
    /**
     * No PDP exists with the given connection ID while modifying or deactivating or activation for
     * an already active PDP.
     */
    public static final int INVALID_CONNECTION_ID = 0x86C;
    /** Maximum NSAPIs have been exceeded during PDP activation. */
    public static final int MAXIMIUM_NSAPIS_EXCEEDED = 0x86D;
    /** Primary context for NSAPI does not exist. */
    public static final int INVALID_PRIMARY_NSAPI = 0x86E;
    /** Unable to encode the OTA message for MT PDP or deactivate PDP. */
    public static final int CANNOT_ENCODE_OTA_MESSAGE = 0x86F;
    /**
     * Radio access bearer is not established by the lower layers during activation, modification,
     * or deactivation.
     */
    public static final int RADIO_ACCESS_BEARER_SETUP_FAILURE = 0x870;
    /** Expiration of the PDP establish timer with a maximum of five retries. */
    public static final int PDP_ESTABLISH_TIMEOUT_EXPIRED = 0x871;
    /** Expiration of the PDP modify timer with a maximum of four retries. */
    public static final int PDP_MODIFY_TIMEOUT_EXPIRED = 0x872;
    /** Expiration of the PDP deactivate timer with a maximum of four retries. */
    public static final int PDP_INACTIVE_TIMEOUT_EXPIRED = 0x873;
    /** PDP activation failed due to RRC_ABORT or a forbidden PLMN. */
    public static final int PDP_LOWERLAYER_ERROR = 0x874;
    /** MO PDP modify collision when the MT PDP is already in progress. */
    public static final int PDP_MODIFY_COLLISION = 0x875;
    /** Maximum size of the L2 message was exceeded. */
    public static final int MAXINUM_SIZE_OF_L2_MESSAGE_EXCEEDED = 0x876;
    /** Non-access stratum (NAS) request was rejected by the network. */
    public static final int NAS_REQUEST_REJECTED_BY_NETWORK = 0x877;
    /**
     * Radio resource control (RRC) connection establishment failure due to an error in the request
     * message.
     */
    public static final int RRC_CONNECTION_INVALID_REQUEST = 0x878;
    /**
     * Radio resource control (RRC) connection establishment failure due to a change in the
     * tracking area ID.
     */
    public static final int RRC_CONNECTION_TRACKING_AREA_ID_CHANGED = 0x879;
    /**
     * Radio resource control (RRC) connection establishment failure due to the RF was unavailable.
     */
    public static final int RRC_CONNECTION_RF_UNAVAILABLE = 0x87A;
    /**
     * Radio resource control (RRC) connection was aborted before deactivating the LTE stack due to
     * a successful LTE to WCDMA/GSM/TD-SCDMA IRAT change.
     */
    public static final int RRC_CONNECTION_ABORTED_DUE_TO_IRAT_CHANGE = 0x87B;
    /**
     * If the UE has an LTE radio link failure before security is established, the radio resource
     * control (RRC) connection must be released and the UE must return to idle.
     */
    public static final int RRC_CONNECTION_RELEASED_SECURITY_NOT_ACTIVE = 0x87C;
    /**
     * Radio resource control (RRC) connection was aborted by the non-access stratum (NAS) after an
     * IRAT to LTE IRAT handover.
     */
    public static final int RRC_CONNECTION_ABORTED_AFTER_HANDOVER = 0x87D;
    /**
     * Radio resource control (RRC) connection was aborted before deactivating the LTE stack after
     * a successful LTE to GSM/EDGE IRAT cell change order procedure.
     */
    public static final int RRC_CONNECTION_ABORTED_AFTER_IRAT_CELL_CHANGE = 0x87E;
    /**
     * Radio resource control (RRC) connection was aborted in the middle of a LTE to GSM IRAT cell
     * change order procedure.
     */
    public static final int RRC_CONNECTION_ABORTED_DURING_IRAT_CELL_CHANGE = 0x87F;
    /** IMSI present in the UE is unknown in the home subscriber server. */
    public static final int IMSI_UNKNOWN_IN_HOME_SUBSCRIBER_SERVER = 0x880;
    /** IMEI of the UE is not accepted by the network. */
    public static final int IMEI_NOT_ACCEPTED = 0x881;
    /** EPS and non-EPS services are not allowed by the network. */
    public static final int EPS_SERVICES_AND_NON_EPS_SERVICES_NOT_ALLOWED = 0x882;
    /** EPS services are not allowed in the PLMN. */
    public static final int EPS_SERVICES_NOT_ALLOWED_IN_PLMN = 0x883;
    /** Mobile switching center is temporarily unreachable. */
    public static final int MSC_TEMPORARILY_NOT_REACHABLE = 0x884;
    /** CS domain is not available. */
    public static final int CS_DOMAIN_NOT_AVAILABLE = 0x885;
    /** ESM level failure. */
    public static final int ESM_FAILURE = 0x886;
    /** MAC level failure. */
    public static final int MAC_FAILURE = 0x887;
    /** Synchronization failure. */
    public static final int SYNCHRONIZATION_FAILURE = 0x888;
    /** UE security capabilities mismatch. */
    public static final int UE_SECURITY_CAPABILITIES_MISMATCH = 0x889;
    /** Unspecified security mode reject. */
    public static final int SECURITY_MODE_REJECTED = 0x88A;
    /** Unacceptable non-EPS authentication. */
    public static final int UNACCEPTABLE_NON_EPS_AUTHENTICATION = 0x88B;
    /** CS fallback call establishment is not allowed. */
    public static final int CS_FALLBACK_CALL_ESTABLISHMENT_NOT_ALLOWED = 0x88C;
    /** No EPS bearer context was activated. */
    public static final int NO_EPS_BEARER_CONTEXT_ACTIVATED = 0x88D;
    /** Invalid EMM state. */
    public static final int INVALID_EMM_STATE = 0x88E;
    /** Non-Access Spectrum layer failure. */
    public static final int NAS_LAYER_FAILURE = 0x88F;
    /** Multiple PDP call feature is disabled. */
    public static final int MULTIPLE_PDP_CALL_NOT_ALLOWED = 0x890;
    /** Data call has been brought down because EMBMS is not enabled at the RRC layer. */
    public static final int EMBMS_NOT_ENABLED = 0x891;
    /** Data call was unsuccessfully transferred during the IRAT handover. */
    public static final int IRAT_HANDOVER_FAILED = 0x892;
    /** EMBMS data call has been successfully brought down. */
    public static final int EMBMS_REGULAR_DEACTIVATION = 0x893;
    /** Test loop-back data call has been successfully brought down. */
    public static final int TEST_LOOPBACK_REGULAR_DEACTIVATION = 0x894;
    /** Lower layer registration failure. */
    public static final int LOWER_LAYER_REGISTRATION_FAILURE = 0x895;
    /**
     * Network initiates a detach on LTE with error cause ""data plan has been replenished or has
     * expired.
     */
    public static final int DATA_PLAN_EXPIRED = 0x896;
    /** UMTS interface is brought down due to handover from UMTS to iWLAN. */
    public static final int UMTS_HANDOVER_TO_IWLAN = 0x897;
    /** Received a connection deny due to general or network busy on EVDO network. */
    public static final int EVDO_CONNECTION_DENY_BY_GENERAL_OR_NETWORK_BUSY = 0x898;
    /** Received a connection deny due to billing or authentication failure on EVDO network. */
    public static final int EVDO_CONNECTION_DENY_BY_BILLING_OR_AUTHENTICATION_FAILURE = 0x899;
    /** HDR system has been changed due to redirection or the PRL was not preferred. */
    public static final int EVDO_HDR_CHANGED = 0x89A;
    /** Device exited HDR due to redirection or the PRL was not preferred. */
    public static final int EVDO_HDR_EXITED = 0x89B;
    /** Device does not have an HDR session. */
    public static final int EVDO_HDR_NO_SESSION = 0x89C;
    /** It is ending an HDR call origination in favor of a GPS fix. */
    public static final int EVDO_USING_GPS_FIX_INSTEAD_OF_HDR_CALL = 0x89D;
    /** Connection setup on the HDR system was time out. */
    public static final int EVDO_HDR_CONNECTION_SETUP_TIMEOUT = 0x89E;
    /** Device failed to acquire a co-located HDR for origination. */
    public static final int FAILED_TO_ACQUIRE_COLOCATED_HDR = 0x89F;
    /** OTASP commit is in progress. */
    public static final int OTASP_COMMIT_IN_PROGRESS = 0x8A0;
    /** Device has no hybrid HDR service. */
    public static final int NO_HYBRID_HDR_SERVICE = 0x8A1;
    /** HDR module could not be obtained because of the RF locked. */
    public static final int HDR_NO_LOCK_GRANTED = 0x8A2;
    /** DBM or SMS is in progress. */
    public static final int DBM_OR_SMS_IN_PROGRESS = 0x8A3;
    /** HDR module released the call due to fade. */
    public static final int HDR_FADE = 0x8A4;
    /** HDR system access failure. */
    public static final int HDR_ACCESS_FAILURE = 0x8A5;
    /**
     * P_rev supported by 1 base station is less than 6, which is not supported for a 1X data call.
     * The UE must be in the footprint of BS which has p_rev >= 6 to support this SO33 call.
     */
    public static final int UNSUPPORTED_1X_PREV = 0x8A6;
    /** Client ended the data call. */
    public static final int LOCAL_END = 0x8A7;
    /** Device has no service. */
    public static final int NO_SERVICE = 0x8A8;
    /** Device lost the system due to fade. */
    public static final int FADE = 0x8A9;
    /** Receiving a release from the base station with no reason. */
    public static final int NORMAL_RELEASE = 0x8AA;
    /** Access attempt is already in progress. */
    public static final int ACCESS_ATTEMPT_ALREADY_IN_PROGRESS = 0x8AB;
    /** Device is in the process of redirecting or handing off to a different target system. */
    public static final int REDIRECTION_OR_HANDOFF_IN_PROGRESS = 0x8AC;
    /** Device is operating in Emergency mode. */
    public static final int EMERGENCY_MODE = 0x8AD;
    /** Device is in use (e.g., voice call). */
    public static final int PHONE_IN_USE = 0x8AE;
    /**
     * Device operational mode is different from the mode requested in the traffic channel bring up.
     */
    public static final int INVALID_MODE = 0x8AF;
    /** SIM was marked by the network as invalid for the circuit and/or packet service domain. */
    public static final int INVALID_SIM_STATE = 0x8B0;
    /** There is no co-located HDR. */
    public static final int NO_COLLOCATED_HDR = 0x8B1;
    /** UE is entering power save mode. */
    public static final int UE_IS_ENTERING_POWERSAVE_MODE = 0x8B2;
    /** Dual switch from single standby to dual standby is in progress. */
    public static final int DUAL_SWITCH = 0x8B3;
    /**
     * Data call bring up fails in the PPP setup due to a timeout.
     * (e.g., an LCP conf ack was not received from the network)
     */
    public static final int PPP_TIMEOUT = 0x8B4;
    /**
     * Data call bring up fails in the PPP setup due to an authorization failure.
     * (e.g., authorization is required, but not negotiated with the network during an LCP phase)
     */
    public static final int PPP_AUTH_FAILURE = 0x8B5;
    /** Data call bring up fails in the PPP setup due to an option mismatch. */
    public static final int PPP_OPTION_MISMATCH = 0x8B6;
    /** Data call bring up fails in the PPP setup due to a PAP failure. */
    public static final int PPP_PAP_FAILURE = 0x8B7;
    /** Data call bring up fails in the PPP setup due to a CHAP failure. */
    public static final int PPP_CHAP_FAILURE = 0x8B8;
    /**
     * Data call bring up fails in the PPP setup because the PPP is in the process of cleaning the
     * previous PPP session.
     */
    public static final int PPP_CLOSE_IN_PROGRESS = 0x8B9;
    /**
     * IPv6 interface bring up fails because the network provided only the IPv4 address for the
     * upcoming PDN permanent client can reattempt a IPv6 call bring up after the IPv4 interface is
     * also brought down. However, there is no guarantee that the network will provide a IPv6
     * address.
     */
    public static final int LIMITED_TO_IPV4 = 0x8BA;
    /**
     * IPv4 interface bring up fails because the network provided only the IPv6 address for the
     * upcoming PDN permanent client can reattempt a IPv4 call bring up after the IPv6 interface is
     * also brought down. However there is no guarantee that the network will provide a IPv4
     * address.
     */
    public static final int LIMITED_TO_IPV6 = 0x8BB;
    /** Data call bring up fails in the VSNCP phase due to a VSNCP timeout error. */
    public static final int VSNCP_TIMEOUT = 0x8BC;
    /**
     * Data call bring up fails in the VSNCP phase due to a general error. It's used when there is
     * no other specific error code available to report the failure.
     */
    public static final int VSNCP_GEN_ERROR = 0x8BD;
    /**
     * Data call bring up fails in the VSNCP phase due to a network rejection of the VSNCP
     * configuration request because the requested APN is unauthorized.
     */
    public static final int VSNCP_APN_UNATHORIZED = 0x8BE;
    /**
     * Data call bring up fails in the VSNCP phase due to a network rejection of the VSNCP
     * configuration request because the PDN limit has been exceeded.
     */
    public static final int VSNCP_PDN_LIMIT_EXCEEDED = 0x8BF;
    /**
     * Data call bring up fails in the VSNCP phase due to the network rejected the VSNCP
     * configuration request due to no PDN gateway address.
     */
    public static final int VSNCP_NO_PDN_GATEWAY_ADDRESS = 0x8C0;
    /**
     * Data call bring up fails in the VSNCP phase due to a network rejection of the VSNCP
     * configuration request because the PDN gateway is unreachable.
     */
    public static final int VSNCP_PDN_GATEWAY_UNREACHABLE = 0x8C1;
    /**
     * Data call bring up fails in the VSNCP phase due to a network rejection of the VSNCP
     * configuration request due to a PDN gateway reject.
     */
    public static final int VSNCP_PDN_GATEWAY_REJECT = 0x8C2;
    /**
     * Data call bring up fails in the VSNCP phase due to a network rejection of the VSNCP
     * configuration request with the reason of insufficient parameter.
     */
    public static final int VSNCP_INSUFFICIENT_PARAMETERS = 0x8C3;
    /**
     * Data call bring up fails in the VSNCP phase due to a network rejection of the VSNCP
     * configuration request with the reason of resource unavailable.
     */
    public static final int VSNCP_RESOURCE_UNAVAILABLE = 0x8C4;
    /**
     * Data call bring up fails in the VSNCP phase due to a network rejection of the VSNCP
     * configuration request with the reason of administratively prohibited at the HSGW.
     */
    public static final int VSNCP_ADMINISTRATIVELY_PROHIBITED = 0x8C5;
    /**
     * Data call bring up fails in the VSNCP phase due to a network rejection of PDN ID in use, or
     * all existing PDNs are brought down with this end reason because one of the PDN bring up was
     * rejected by the network with the reason of PDN ID in use.
     */
    public static final int VSNCP_PDN_ID_IN_USE = 0x8C6;
    /**
     * Data call bring up fails in the VSNCP phase due to a network rejection of the VSNCP
     * configuration request for the reason of subscriber limitation.
     */
    public static final int VSNCP_SUBSCRIBER_LIMITATION = 0x8C7;
    /**
     * Data call bring up fails in the VSNCP phase due to a network rejection of the VSNCP
     * configuration request because the PDN exists for this APN.
     */
    public static final int VSNCP_PDN_EXISTS_FOR_THIS_APN = 0x8C8;
    /**
     * Data call bring up fails in the VSNCP phase due to a network rejection of the VSNCP
     * configuration request with reconnect to this PDN not allowed, or an active data call is
     * terminated by the network because reconnection to this PDN is not allowed. Upon receiving
     * this error code from the network, the modem infinitely throttles the PDN until the next
     * power cycle.
     */
    public static final int VSNCP_RECONNECT_NOT_ALLOWED = 0x8C9;
    /** Device failure to obtain the prefix from the network. */
    public static final int IPV6_PREFIX_UNAVAILABLE = 0x8CA;
    /** System preference change back to SRAT during handoff */
    public static final int HANDOFF_PREFERENCE_CHANGED = 0x8CB;

    // OEM sepecific error codes. To be used by OEMs when they don't
    // want to reveal error code which would be replaced by ERROR_UNSPECIFIED
    public static final int OEM_DCFAILCAUSE_1 = 0x1001;
    public static final int OEM_DCFAILCAUSE_2 = 0x1002;
    public static final int OEM_DCFAILCAUSE_3 = 0x1003;
    public static final int OEM_DCFAILCAUSE_4 = 0x1004;
    public static final int OEM_DCFAILCAUSE_5 = 0x1005;
    public static final int OEM_DCFAILCAUSE_6 = 0x1006;
    public static final int OEM_DCFAILCAUSE_7 = 0x1007;
    public static final int OEM_DCFAILCAUSE_8 = 0x1008;
    public static final int OEM_DCFAILCAUSE_9 = 0x1009;
    public static final int OEM_DCFAILCAUSE_10 = 0x100A;
    public static final int OEM_DCFAILCAUSE_11 = 0x100B;
    public static final int OEM_DCFAILCAUSE_12 = 0x100C;
    public static final int OEM_DCFAILCAUSE_13 = 0x100D;
    public static final int OEM_DCFAILCAUSE_14 = 0x100E;
    public static final int OEM_DCFAILCAUSE_15 = 0x100F;

    // Local errors generated by Vendor RIL
    // specified in ril.h
    /** Data fail due to registration failure. */
    public static final int REGISTRATION_FAIL = -1;
    /** Data fail due to GPRS registration failure. */
    public static final int GPRS_REGISTRATION_FAIL = -2;
    /** Data call drop due to network/modem disconnect. */
    public static final int SIGNAL_LOST = -3;                        /* no retry */
    /**
     * Preferred technology has changed, must retry with parameters appropriate for new technology.
     */
    public static final int PREF_RADIO_TECH_CHANGED = -4;
    /** data call was disconnected because radio was resetting, powered off. */
    public static final int RADIO_POWER_OFF = -5;                    /* no retry */
    /** Data call was disconnected by modem because tethered. */
    public static final int TETHERED_CALL_ACTIVE = -6;               /* no retry */
    /** Data call fail due to unspecific errors. */
    public static final int ERROR_UNSPECIFIED = 0xFFFF;

    // Errors generated by the Framework
    // specified here
    /** Unknown data failure cause. */
    public static final int UNKNOWN = 0x10000;
    /** Data fail due to radio not unavailable. */
    public static final int RADIO_NOT_AVAILABLE = 0x10001;                   /* no retry */
    /** @hide */
    public static final int UNACCEPTABLE_NETWORK_PARAMETER = 0x10002;        /* no retry */
    /** @hide */
    public static final int CONNECTION_TO_DATACONNECTIONAC_BROKEN = 0x10003;
    /** Data connection was lost. */
    public static final int LOST_CONNECTION = 0x10004;
    /** @hide */
    public static final int RESET_BY_FRAMEWORK = 0x10005;

    /**
     * Data handover failed.
     *
     * @hide
     */
    public static final int HANDOVER_FAILED = 0x10006;

    /** @hide */
    @IntDef(value = {
            NONE,
            OPERATOR_BARRED,
            NAS_SIGNALLING,
            LLC_SNDCP,
            INSUFFICIENT_RESOURCES,
            MISSING_UNKNOWN_APN,
            UNKNOWN_PDP_ADDRESS_TYPE,
            USER_AUTHENTICATION,
            ACTIVATION_REJECT_GGSN,
            ACTIVATION_REJECT_UNSPECIFIED,
            SERVICE_OPTION_NOT_SUPPORTED,
            SERVICE_OPTION_NOT_SUBSCRIBED,
            SERVICE_OPTION_OUT_OF_ORDER,
            NSAPI_IN_USE,
            REGULAR_DEACTIVATION,
            QOS_NOT_ACCEPTED,
            NETWORK_FAILURE,
            UMTS_REACTIVATION_REQ,
            FEATURE_NOT_SUPP,
            TFT_SEMANTIC_ERROR,
            TFT_SYTAX_ERROR,
            UNKNOWN_PDP_CONTEXT,
            FILTER_SEMANTIC_ERROR,
            FILTER_SYTAX_ERROR,
            PDP_WITHOUT_ACTIVE_TFT,
            ACTIVATION_REJECTED_BCM_VIOLATION,
            ONLY_IPV4_ALLOWED,
            ONLY_IPV6_ALLOWED,
            ONLY_SINGLE_BEARER_ALLOWED,
            ESM_INFO_NOT_RECEIVED,
            PDN_CONN_DOES_NOT_EXIST,
            MULTI_CONN_TO_SAME_PDN_NOT_ALLOWED,
            COLLISION_WITH_NETWORK_INITIATED_REQUEST,
            ONLY_IPV4V6_ALLOWED,
            ONLY_NON_IP_ALLOWED,
            UNSUPPORTED_QCI_VALUE,
            BEARER_HANDLING_NOT_SUPPORTED,
            ACTIVE_PDP_CONTEXT_MAX_NUMBER_REACHED,
            UNSUPPORTED_APN_IN_CURRENT_PLMN,
            INVALID_TRANSACTION_ID,
            MESSAGE_INCORRECT_SEMANTIC,
            INVALID_MANDATORY_INFO,
            MESSAGE_TYPE_UNSUPPORTED,
            MSG_TYPE_NONCOMPATIBLE_STATE,
            UNKNOWN_INFO_ELEMENT,
            CONDITIONAL_IE_ERROR,
            MSG_AND_PROTOCOL_STATE_UNCOMPATIBLE,
            PROTOCOL_ERRORS,
            APN_TYPE_CONFLICT,
            INVALID_PCSCF_ADDR,
            INTERNAL_CALL_PREEMPT_BY_HIGH_PRIO_APN,
            EMM_ACCESS_BARRED,
            EMERGENCY_IFACE_ONLY,
            IFACE_MISMATCH,
            COMPANION_IFACE_IN_USE,
            IP_ADDRESS_MISMATCH,
            IFACE_AND_POL_FAMILY_MISMATCH,
            EMM_ACCESS_BARRED_INFINITE_RETRY,
            AUTH_FAILURE_ON_EMERGENCY_CALL,
            INVALID_DNS_ADDR,
            INVALID_PCSCF_OR_DNS_ADDRESS,
            CALL_PREEMPT_BY_EMERGENCY_APN,
            UE_INITIATED_DETACH_OR_DISCONNECT,
            MIP_FA_REASON_UNSPECIFIED,
            MIP_FA_ADMIN_PROHIBITED,
            MIP_FA_INSUFFICIENT_RESOURCES,
            MIP_FA_MOBILE_NODE_AUTHENTICATION_FAILURE,
            MIP_FA_HOME_AGENT_AUTHENTICATION_FAILURE,
            MIP_FA_REQUESTED_LIFETIME_TOO_LONG,
            MIP_FA_MALFORMED_REQUEST,
            MIP_FA_MALFORMED_REPLY,
            MIP_FA_ENCAPSULATION_UNAVAILABLE,
            MIP_FA_VJ_HEADER_COMPRESSION_UNAVAILABLE,
            MIP_FA_REVERSE_TUNNEL_UNAVAILABLE,
            MIP_FA_REVERSE_TUNNEL_IS_MANDATORY,
            MIP_FA_DELIVERY_STYLE_NOT_SUPPORTED,
            MIP_FA_MISSING_NAI,
            MIP_FA_MISSING_HOME_AGENT,
            MIP_FA_MISSING_HOME_ADDRESS,
            MIP_FA_UNKNOWN_CHALLENGE,
            MIP_FA_MISSING_CHALLENGE,
            MIP_FA_STALE_CHALLENGE,
            MIP_HA_REASON_UNSPECIFIED,
            MIP_HA_ADMIN_PROHIBITED,
            MIP_HA_INSUFFICIENT_RESOURCES,
            MIP_HA_MOBILE_NODE_AUTHENTICATION_FAILURE,
            MIP_HA_FOREIGN_AGENT_AUTHENTICATION_FAILURE,
            MIP_HA_REGISTRATION_ID_MISMATCH,
            MIP_HA_MALFORMED_REQUEST,
            MIP_HA_UNKNOWN_HOME_AGENT_ADDRESS,
            MIP_HA_REVERSE_TUNNEL_UNAVAILABLE,
            MIP_HA_REVERSE_TUNNEL_IS_MANDATORY,
            MIP_HA_ENCAPSULATION_UNAVAILABLE,
            CLOSE_IN_PROGRESS,
            NETWORK_INITIATED_TERMINATION,
            MODEM_APP_PREEMPTED,
            PDN_IPV4_CALL_DISALLOWED,
            PDN_IPV4_CALL_THROTTLED,
            PDN_IPV6_CALL_DISALLOWED,
            PDN_IPV6_CALL_THROTTLED,
            MODEM_RESTART,
            PDP_PPP_NOT_SUPPORTED,
            UNPREFERRED_RAT,
            PHYSICAL_LINK_CLOSE_IN_PROGRESS,
            APN_PENDING_HANDOVER,
            PROFILE_BEARER_INCOMPATIBLE,
            SIM_CARD_CHANGED,
            LOW_POWER_MODE_OR_POWERING_DOWN,
            APN_DISABLED,
            MAX_PPP_INACTIVITY_TIMER_EXPIRED,
            IPV6_ADDRESS_TRANSFER_FAILED,
            TRAT_SWAP_FAILED,
            EHRPD_TO_HRPD_FALLBACK,
            MIP_CONFIG_FAILURE,
            PDN_INACTIVITY_TIMER_EXPIRED,
            MAX_IPV4_CONNECTIONS,
            MAX_IPV6_CONNECTIONS,
            APN_MISMATCH,
            IP_VERSION_MISMATCH,
            DUN_CALL_DISALLOWED,
            INTERNAL_EPC_NONEPC_TRANSITION,
            INTERFACE_IN_USE,
            APN_DISALLOWED_ON_ROAMING,
            APN_PARAMETERS_CHANGED,
            NULL_APN_DISALLOWED,
            THERMAL_MITIGATION,
            DATA_SETTINGS_DISABLED,
            DATA_ROAMING_SETTINGS_DISABLED,
            DDS_SWITCHED,
            FORBIDDEN_APN_NAME,
            DDS_SWITCH_IN_PROGRESS,
            CALL_DISALLOWED_IN_ROAMING,
            NON_IP_NOT_SUPPORTED,
            PDN_NON_IP_CALL_THROTTLED,
            PDN_NON_IP_CALL_DISALLOWED,
            CDMA_LOCK,
            CDMA_INTERCEPT,
            CDMA_REORDER,
            CDMA_RELEASE_DUE_TO_SO_REJECTION,
            CDMA_INCOMING_CALL,
            CDMA_ALERT_STOP,
            CHANNEL_ACQUISITION_FAILURE,
            MAX_ACCESS_PROBE,
            CONCURRENT_SERVICE_NOT_SUPPORTED_BY_BASE_STATION,
            NO_RESPONSE_FROM_BASE_STATION,
            REJECTED_BY_BASE_STATION,
            CONCURRENT_SERVICES_INCOMPATIBLE,
            NO_CDMA_SERVICE,
            RUIM_NOT_PRESENT,
            CDMA_RETRY_ORDER,
            ACCESS_BLOCK,
            ACCESS_BLOCK_ALL,
            IS707B_MAX_ACCESS_PROBES,
            THERMAL_EMERGENCY,
            CONCURRENT_SERVICES_NOT_ALLOWED,
            INCOMING_CALL_REJECTED,
            NO_SERVICE_ON_GATEWAY,
            NO_GPRS_CONTEXT,
            ILLEGAL_MS,
            ILLEGAL_ME,
            GPRS_SERVICES_AND_NON_GPRS_SERVICES_NOT_ALLOWED,
            GPRS_SERVICES_NOT_ALLOWED,
            MS_IDENTITY_CANNOT_BE_DERIVED_BY_THE_NETWORK,
            IMPLICITLY_DETACHED,
            PLMN_NOT_ALLOWED,
            LOCATION_AREA_NOT_ALLOWED,
            GPRS_SERVICES_NOT_ALLOWED_IN_THIS_PLMN,
            PDP_DUPLICATE,
            UE_RAT_CHANGE,
            CONGESTION,
            NO_PDP_CONTEXT_ACTIVATED,
            ACCESS_CLASS_DSAC_REJECTION,
            PDP_ACTIVATE_MAX_RETRY_FAILED,
            RADIO_ACCESS_BEARER_FAILURE,
            ESM_UNKNOWN_EPS_BEARER_CONTEXT,
            DRB_RELEASED_BY_RRC,
            CONNECTION_RELEASED,
            EMM_DETACHED,
            EMM_ATTACH_FAILED,
            EMM_ATTACH_STARTED,
            LTE_NAS_SERVICE_REQUEST_FAILED,
            DUPLICATE_BEARER_ID,
            ESM_COLLISION_SCENARIOS,
            ESM_BEARER_DEACTIVATED_TO_SYNC_WITH_NETWORK,
            ESM_NW_ACTIVATED_DED_BEARER_WITH_ID_OF_DEF_BEARER,
            ESM_BAD_OTA_MESSAGE,
            ESM_DOWNLOAD_SERVER_REJECTED_THE_CALL,
            ESM_CONTEXT_TRANSFERRED_DUE_TO_IRAT,
            DS_EXPLICIT_DEACTIVATION,
            ESM_LOCAL_CAUSE_NONE,
            LTE_THROTTLING_NOT_REQUIRED,
            ACCESS_CONTROL_LIST_CHECK_FAILURE,
            SERVICE_NOT_ALLOWED_ON_PLMN,
            EMM_T3417_EXPIRED,
            EMM_T3417_EXT_EXPIRED,
            RRC_UPLINK_DATA_TRANSMISSION_FAILURE,
            RRC_UPLINK_DELIVERY_FAILED_DUE_TO_HANDOVER,
            RRC_UPLINK_CONNECTION_RELEASE,
            RRC_UPLINK_RADIO_LINK_FAILURE,
            RRC_UPLINK_ERROR_REQUEST_FROM_NAS,
            RRC_CONNECTION_ACCESS_STRATUM_FAILURE,
            RRC_CONNECTION_ANOTHER_PROCEDURE_IN_PROGRESS,
            RRC_CONNECTION_ACCESS_BARRED,
            RRC_CONNECTION_CELL_RESELECTION,
            RRC_CONNECTION_CONFIG_FAILURE,
            RRC_CONNECTION_TIMER_EXPIRED,
            RRC_CONNECTION_LINK_FAILURE,
            RRC_CONNECTION_CELL_NOT_CAMPED,
            RRC_CONNECTION_SYSTEM_INTERVAL_FAILURE,
            RRC_CONNECTION_REJECT_BY_NETWORK,
            RRC_CONNECTION_NORMAL_RELEASE,
            RRC_CONNECTION_RADIO_LINK_FAILURE,
            RRC_CONNECTION_REESTABLISHMENT_FAILURE,
            RRC_CONNECTION_OUT_OF_SERVICE_DURING_CELL_REGISTER,
            RRC_CONNECTION_ABORT_REQUEST,
            RRC_CONNECTION_SYSTEM_INFORMATION_BLOCK_READ_ERROR,
            NETWORK_INITIATED_DETACH_WITH_AUTO_REATTACH,
            NETWORK_INITIATED_DETACH_NO_AUTO_REATTACH,
            ESM_PROCEDURE_TIME_OUT,
            INVALID_CONNECTION_ID,
            MAXIMIUM_NSAPIS_EXCEEDED,
            INVALID_PRIMARY_NSAPI,
            CANNOT_ENCODE_OTA_MESSAGE,
            RADIO_ACCESS_BEARER_SETUP_FAILURE,
            PDP_ESTABLISH_TIMEOUT_EXPIRED,
            PDP_MODIFY_TIMEOUT_EXPIRED,
            PDP_INACTIVE_TIMEOUT_EXPIRED,
            PDP_LOWERLAYER_ERROR,
            PDP_MODIFY_COLLISION,
            MAXINUM_SIZE_OF_L2_MESSAGE_EXCEEDED,
            NAS_REQUEST_REJECTED_BY_NETWORK,
            RRC_CONNECTION_INVALID_REQUEST,
            RRC_CONNECTION_TRACKING_AREA_ID_CHANGED,
            RRC_CONNECTION_RF_UNAVAILABLE,
            RRC_CONNECTION_ABORTED_DUE_TO_IRAT_CHANGE,
            RRC_CONNECTION_RELEASED_SECURITY_NOT_ACTIVE,
            RRC_CONNECTION_ABORTED_AFTER_HANDOVER,
            RRC_CONNECTION_ABORTED_AFTER_IRAT_CELL_CHANGE,
            RRC_CONNECTION_ABORTED_DURING_IRAT_CELL_CHANGE,
            IMSI_UNKNOWN_IN_HOME_SUBSCRIBER_SERVER,
            IMEI_NOT_ACCEPTED,
            EPS_SERVICES_AND_NON_EPS_SERVICES_NOT_ALLOWED,
            EPS_SERVICES_NOT_ALLOWED_IN_PLMN,
            MSC_TEMPORARILY_NOT_REACHABLE,
            CS_DOMAIN_NOT_AVAILABLE,
            ESM_FAILURE,
            MAC_FAILURE,
            SYNCHRONIZATION_FAILURE,
            UE_SECURITY_CAPABILITIES_MISMATCH,
            SECURITY_MODE_REJECTED,
            UNACCEPTABLE_NON_EPS_AUTHENTICATION,
            CS_FALLBACK_CALL_ESTABLISHMENT_NOT_ALLOWED,
            NO_EPS_BEARER_CONTEXT_ACTIVATED,
            INVALID_EMM_STATE,
            NAS_LAYER_FAILURE,
            MULTIPLE_PDP_CALL_NOT_ALLOWED,
            EMBMS_NOT_ENABLED,
            IRAT_HANDOVER_FAILED,
            EMBMS_REGULAR_DEACTIVATION,
            TEST_LOOPBACK_REGULAR_DEACTIVATION,
            LOWER_LAYER_REGISTRATION_FAILURE,
            DATA_PLAN_EXPIRED,
            UMTS_HANDOVER_TO_IWLAN,
            EVDO_CONNECTION_DENY_BY_GENERAL_OR_NETWORK_BUSY,
            EVDO_CONNECTION_DENY_BY_BILLING_OR_AUTHENTICATION_FAILURE,
            EVDO_HDR_CHANGED,
            EVDO_HDR_EXITED,
            EVDO_HDR_NO_SESSION,
            EVDO_USING_GPS_FIX_INSTEAD_OF_HDR_CALL,
            EVDO_HDR_CONNECTION_SETUP_TIMEOUT,
            FAILED_TO_ACQUIRE_COLOCATED_HDR,
            OTASP_COMMIT_IN_PROGRESS,
            NO_HYBRID_HDR_SERVICE,
            HDR_NO_LOCK_GRANTED,
            DBM_OR_SMS_IN_PROGRESS,
            HDR_FADE,
            HDR_ACCESS_FAILURE,
            UNSUPPORTED_1X_PREV,
            LOCAL_END,
            NO_SERVICE,
            FADE,
            NORMAL_RELEASE,
            ACCESS_ATTEMPT_ALREADY_IN_PROGRESS,
            REDIRECTION_OR_HANDOFF_IN_PROGRESS,
            EMERGENCY_MODE,
            PHONE_IN_USE,
            INVALID_MODE,
            INVALID_SIM_STATE,
            NO_COLLOCATED_HDR,
            UE_IS_ENTERING_POWERSAVE_MODE,
            DUAL_SWITCH,
            PPP_TIMEOUT,
            PPP_AUTH_FAILURE,
            PPP_OPTION_MISMATCH,
            PPP_PAP_FAILURE,
            PPP_CHAP_FAILURE,
            PPP_CLOSE_IN_PROGRESS,
            LIMITED_TO_IPV4,
            LIMITED_TO_IPV6,
            VSNCP_TIMEOUT,
            VSNCP_GEN_ERROR,
            VSNCP_APN_UNATHORIZED,
            VSNCP_PDN_LIMIT_EXCEEDED,
            VSNCP_NO_PDN_GATEWAY_ADDRESS,
            VSNCP_PDN_GATEWAY_UNREACHABLE,
            VSNCP_PDN_GATEWAY_REJECT,
            VSNCP_INSUFFICIENT_PARAMETERS,
            VSNCP_RESOURCE_UNAVAILABLE,
            VSNCP_ADMINISTRATIVELY_PROHIBITED,
            VSNCP_PDN_ID_IN_USE,
            VSNCP_SUBSCRIBER_LIMITATION,
            VSNCP_PDN_EXISTS_FOR_THIS_APN,
            VSNCP_RECONNECT_NOT_ALLOWED,
            IPV6_PREFIX_UNAVAILABLE,
            HANDOFF_PREFERENCE_CHANGED,
            OEM_DCFAILCAUSE_1,
            OEM_DCFAILCAUSE_2,
            OEM_DCFAILCAUSE_3,
            OEM_DCFAILCAUSE_4,
            OEM_DCFAILCAUSE_5,
            OEM_DCFAILCAUSE_6,
            OEM_DCFAILCAUSE_7,
            OEM_DCFAILCAUSE_8,
            OEM_DCFAILCAUSE_9,
            OEM_DCFAILCAUSE_10,
            OEM_DCFAILCAUSE_11,
            OEM_DCFAILCAUSE_12,
            OEM_DCFAILCAUSE_13,
            OEM_DCFAILCAUSE_14,
            OEM_DCFAILCAUSE_15,
            REGISTRATION_FAIL,
            GPRS_REGISTRATION_FAIL,
            SIGNAL_LOST,
            PREF_RADIO_TECH_CHANGED,
            RADIO_POWER_OFF,
            TETHERED_CALL_ACTIVE,
            ERROR_UNSPECIFIED,
            UNKNOWN,
            RADIO_NOT_AVAILABLE,
            UNACCEPTABLE_NETWORK_PARAMETER,
            CONNECTION_TO_DATACONNECTIONAC_BROKEN,
            LOST_CONNECTION,
            RESET_BY_FRAMEWORK
    })
    @Retention(RetentionPolicy.SOURCE)
    public @interface FailCause{}

    private static final Map<Integer, String> sFailCauseMap;
    static {
        sFailCauseMap = new HashMap<>();
        sFailCauseMap.put(NONE, "NONE");
        sFailCauseMap.put(OPERATOR_BARRED, "OPERATOR_BARRED");
        sFailCauseMap.put(NAS_SIGNALLING, "NAS_SIGNALLING");
        sFailCauseMap.put(LLC_SNDCP, "LLC_SNDCP");
        sFailCauseMap.put(INSUFFICIENT_RESOURCES, "INSUFFICIENT_RESOURCES");
        sFailCauseMap.put(MISSING_UNKNOWN_APN, "MISSING_UNKNOWN_APN");
        sFailCauseMap.put(UNKNOWN_PDP_ADDRESS_TYPE, "UNKNOWN_PDP_ADDRESS_TYPE");
        sFailCauseMap.put(USER_AUTHENTICATION, "USER_AUTHENTICATION");
        sFailCauseMap.put(ACTIVATION_REJECT_GGSN, "ACTIVATION_REJECT_GGSN");
        sFailCauseMap.put(ACTIVATION_REJECT_UNSPECIFIED,
                "ACTIVATION_REJECT_UNSPECIFIED");
        sFailCauseMap.put(SERVICE_OPTION_NOT_SUPPORTED,
                "SERVICE_OPTION_NOT_SUPPORTED");
        sFailCauseMap.put(SERVICE_OPTION_NOT_SUBSCRIBED,
                "SERVICE_OPTION_NOT_SUBSCRIBED");
        sFailCauseMap.put(SERVICE_OPTION_OUT_OF_ORDER, "SERVICE_OPTION_OUT_OF_ORDER");
        sFailCauseMap.put(NSAPI_IN_USE, "NSAPI_IN_USE");
        sFailCauseMap.put(REGULAR_DEACTIVATION, "REGULAR_DEACTIVATION");
        sFailCauseMap.put(QOS_NOT_ACCEPTED, "QOS_NOT_ACCEPTED");
        sFailCauseMap.put(NETWORK_FAILURE, "NETWORK_FAILURE");
        sFailCauseMap.put(UMTS_REACTIVATION_REQ, "UMTS_REACTIVATION_REQ");
        sFailCauseMap.put(FEATURE_NOT_SUPP, "FEATURE_NOT_SUPP");
        sFailCauseMap.put(TFT_SEMANTIC_ERROR, "TFT_SEMANTIC_ERROR");
        sFailCauseMap.put(TFT_SYTAX_ERROR, "TFT_SYTAX_ERROR");
        sFailCauseMap.put(UNKNOWN_PDP_CONTEXT, "UNKNOWN_PDP_CONTEXT");
        sFailCauseMap.put(FILTER_SEMANTIC_ERROR, "FILTER_SEMANTIC_ERROR");
        sFailCauseMap.put(FILTER_SYTAX_ERROR, "FILTER_SYTAX_ERROR");
        sFailCauseMap.put(PDP_WITHOUT_ACTIVE_TFT, "PDP_WITHOUT_ACTIVE_TFT");
        sFailCauseMap.put(ACTIVATION_REJECTED_BCM_VIOLATION, "ACTIVATION_REJECTED_BCM_VIOLATION");
        sFailCauseMap.put(ONLY_IPV4_ALLOWED, "ONLY_IPV4_ALLOWED");
        sFailCauseMap.put(ONLY_IPV6_ALLOWED, "ONLY_IPV6_ALLOWED");
        sFailCauseMap.put(ONLY_SINGLE_BEARER_ALLOWED, "ONLY_SINGLE_BEARER_ALLOWED");
        sFailCauseMap.put(ESM_INFO_NOT_RECEIVED, "ESM_INFO_NOT_RECEIVED");
        sFailCauseMap.put(PDN_CONN_DOES_NOT_EXIST, "PDN_CONN_DOES_NOT_EXIST");
        sFailCauseMap.put(MULTI_CONN_TO_SAME_PDN_NOT_ALLOWED,
                "MULTI_CONN_TO_SAME_PDN_NOT_ALLOWED");
        sFailCauseMap.put(COLLISION_WITH_NETWORK_INITIATED_REQUEST,
                "COLLISION_WITH_NETWORK_INITIATED_REQUEST");
        sFailCauseMap.put(ONLY_IPV4V6_ALLOWED, "ONLY_IPV4V6_ALLOWED");
        sFailCauseMap.put(ONLY_NON_IP_ALLOWED, "ONLY_NON_IP_ALLOWED");
        sFailCauseMap.put(UNSUPPORTED_QCI_VALUE, "UNSUPPORTED_QCI_VALUE");
        sFailCauseMap.put(BEARER_HANDLING_NOT_SUPPORTED, "BEARER_HANDLING_NOT_SUPPORTED");
        sFailCauseMap.put(ACTIVE_PDP_CONTEXT_MAX_NUMBER_REACHED,
                "ACTIVE_PDP_CONTEXT_MAX_NUMBER_REACHED");
        sFailCauseMap.put(UNSUPPORTED_APN_IN_CURRENT_PLMN,
                "UNSUPPORTED_APN_IN_CURRENT_PLMN");
        sFailCauseMap.put(INVALID_TRANSACTION_ID, "INVALID_TRANSACTION_ID");
        sFailCauseMap.put(MESSAGE_INCORRECT_SEMANTIC, "MESSAGE_INCORRECT_SEMANTIC");
        sFailCauseMap.put(INVALID_MANDATORY_INFO, "INVALID_MANDATORY_INFO");
        sFailCauseMap.put(MESSAGE_TYPE_UNSUPPORTED, "MESSAGE_TYPE_UNSUPPORTED");
        sFailCauseMap.put(MSG_TYPE_NONCOMPATIBLE_STATE, "MSG_TYPE_NONCOMPATIBLE_STATE");
        sFailCauseMap.put(UNKNOWN_INFO_ELEMENT, "UNKNOWN_INFO_ELEMENT");
        sFailCauseMap.put(CONDITIONAL_IE_ERROR, "CONDITIONAL_IE_ERROR");
        sFailCauseMap.put(MSG_AND_PROTOCOL_STATE_UNCOMPATIBLE,
                "MSG_AND_PROTOCOL_STATE_UNCOMPATIBLE");
        sFailCauseMap.put(PROTOCOL_ERRORS, "PROTOCOL_ERRORS");
        sFailCauseMap.put(APN_TYPE_CONFLICT, "APN_TYPE_CONFLICT");
        sFailCauseMap.put(INVALID_PCSCF_ADDR, "INVALID_PCSCF_ADDR");
        sFailCauseMap.put(INTERNAL_CALL_PREEMPT_BY_HIGH_PRIO_APN,
                "INTERNAL_CALL_PREEMPT_BY_HIGH_PRIO_APN");
        sFailCauseMap.put(EMM_ACCESS_BARRED, "EMM_ACCESS_BARRED");
        sFailCauseMap.put(EMERGENCY_IFACE_ONLY, "EMERGENCY_IFACE_ONLY");
        sFailCauseMap.put(IFACE_MISMATCH, "IFACE_MISMATCH");
        sFailCauseMap.put(COMPANION_IFACE_IN_USE, "COMPANION_IFACE_IN_USE");
        sFailCauseMap.put(IP_ADDRESS_MISMATCH, "IP_ADDRESS_MISMATCH");
        sFailCauseMap.put(IFACE_AND_POL_FAMILY_MISMATCH,
                "IFACE_AND_POL_FAMILY_MISMATCH");
        sFailCauseMap.put(EMM_ACCESS_BARRED_INFINITE_RETRY,
                "EMM_ACCESS_BARRED_INFINITE_RETRY");
        sFailCauseMap.put(AUTH_FAILURE_ON_EMERGENCY_CALL,
                "AUTH_FAILURE_ON_EMERGENCY_CALL");
        sFailCauseMap.put(INVALID_DNS_ADDR, "INVALID_DNS_ADDR");
        sFailCauseMap.put(INVALID_PCSCF_OR_DNS_ADDRESS, "INVALID_PCSCF_OR_DNS_ADDRESS");
        sFailCauseMap.put(CALL_PREEMPT_BY_EMERGENCY_APN, "CALL_PREEMPT_BY_EMERGENCY_APN");
        sFailCauseMap.put(UE_INITIATED_DETACH_OR_DISCONNECT, "UE_INITIATED_DETACH_OR_DISCONNECT");
        sFailCauseMap.put(MIP_FA_REASON_UNSPECIFIED, "MIP_FA_REASON_UNSPECIFIED");
        sFailCauseMap.put(MIP_FA_ADMIN_PROHIBITED, "MIP_FA_ADMIN_PROHIBITED");
        sFailCauseMap.put(MIP_FA_INSUFFICIENT_RESOURCES, "MIP_FA_INSUFFICIENT_RESOURCES");
        sFailCauseMap.put(MIP_FA_MOBILE_NODE_AUTHENTICATION_FAILURE,
                "MIP_FA_MOBILE_NODE_AUTHENTICATION_FAILURE");
        sFailCauseMap.put(MIP_FA_HOME_AGENT_AUTHENTICATION_FAILURE,
                "MIP_FA_HOME_AGENT_AUTHENTICATION_FAILURE");
        sFailCauseMap.put(MIP_FA_REQUESTED_LIFETIME_TOO_LONG, "MIP_FA_REQUESTED_LIFETIME_TOO_LONG");
        sFailCauseMap.put(MIP_FA_MALFORMED_REQUEST, "MIP_FA_MALFORMED_REQUEST");
        sFailCauseMap.put(MIP_FA_MALFORMED_REPLY, "MIP_FA_MALFORMED_REPLY");
        sFailCauseMap.put(MIP_FA_ENCAPSULATION_UNAVAILABLE, "MIP_FA_ENCAPSULATION_UNAVAILABLE");
        sFailCauseMap.put(MIP_FA_VJ_HEADER_COMPRESSION_UNAVAILABLE,
                "MIP_FA_VJ_HEADER_COMPRESSION_UNAVAILABLE");
        sFailCauseMap.put(MIP_FA_REVERSE_TUNNEL_UNAVAILABLE, "MIP_FA_REVERSE_TUNNEL_UNAVAILABLE");
        sFailCauseMap.put(MIP_FA_REVERSE_TUNNEL_IS_MANDATORY, "MIP_FA_REVERSE_TUNNEL_IS_MANDATORY");
        sFailCauseMap.put(MIP_FA_DELIVERY_STYLE_NOT_SUPPORTED,
                "MIP_FA_DELIVERY_STYLE_NOT_SUPPORTED");
        sFailCauseMap.put(MIP_FA_MISSING_NAI, "MIP_FA_MISSING_NAI");
        sFailCauseMap.put(MIP_FA_MISSING_HOME_AGENT, "MIP_FA_MISSING_HOME_AGENT");
        sFailCauseMap.put(MIP_FA_MISSING_HOME_ADDRESS, "MIP_FA_MISSING_HOME_ADDRESS");
        sFailCauseMap.put(MIP_FA_UNKNOWN_CHALLENGE, "MIP_FA_UNKNOWN_CHALLENGE");
        sFailCauseMap.put(MIP_FA_MISSING_CHALLENGE, "MIP_FA_MISSING_CHALLENGE");
        sFailCauseMap.put(MIP_FA_STALE_CHALLENGE, "MIP_FA_STALE_CHALLENGE");
        sFailCauseMap.put(MIP_HA_REASON_UNSPECIFIED, "MIP_HA_REASON_UNSPECIFIED");
        sFailCauseMap.put(MIP_HA_ADMIN_PROHIBITED, "MIP_HA_ADMIN_PROHIBITED");
        sFailCauseMap.put(MIP_HA_INSUFFICIENT_RESOURCES, "MIP_HA_INSUFFICIENT_RESOURCES");
        sFailCauseMap.put(MIP_HA_MOBILE_NODE_AUTHENTICATION_FAILURE,
                "MIP_HA_MOBILE_NODE_AUTHENTICATION_FAILURE");
        sFailCauseMap.put(MIP_HA_FOREIGN_AGENT_AUTHENTICATION_FAILURE,
                "MIP_HA_FOREIGN_AGENT_AUTHENTICATION_FAILURE");
        sFailCauseMap.put(MIP_HA_REGISTRATION_ID_MISMATCH, "MIP_HA_REGISTRATION_ID_MISMATCH");
        sFailCauseMap.put(MIP_HA_MALFORMED_REQUEST, "MIP_HA_MALFORMED_REQUEST");
        sFailCauseMap.put(MIP_HA_UNKNOWN_HOME_AGENT_ADDRESS, "MIP_HA_UNKNOWN_HOME_AGENT_ADDRESS");
        sFailCauseMap.put(MIP_HA_REVERSE_TUNNEL_UNAVAILABLE, "MIP_HA_REVERSE_TUNNEL_UNAVAILABLE");
        sFailCauseMap.put(MIP_HA_REVERSE_TUNNEL_IS_MANDATORY, "MIP_HA_REVERSE_TUNNEL_IS_MANDATORY");
        sFailCauseMap.put(MIP_HA_ENCAPSULATION_UNAVAILABLE, "MIP_HA_ENCAPSULATION_UNAVAILABLE");
        sFailCauseMap.put(CLOSE_IN_PROGRESS, "CLOSE_IN_PROGRESS");
        sFailCauseMap.put(NETWORK_INITIATED_TERMINATION, "NETWORK_INITIATED_TERMINATION");
        sFailCauseMap.put(MODEM_APP_PREEMPTED, "MODEM_APP_PREEMPTED");
        sFailCauseMap.put(PDN_IPV4_CALL_DISALLOWED, "PDN_IPV4_CALL_DISALLOWED");
        sFailCauseMap.put(PDN_IPV4_CALL_THROTTLED, "PDN_IPV4_CALL_THROTTLED");
        sFailCauseMap.put(PDN_IPV6_CALL_DISALLOWED, "PDN_IPV6_CALL_DISALLOWED");
        sFailCauseMap.put(PDN_IPV6_CALL_THROTTLED, "PDN_IPV6_CALL_THROTTLED");
        sFailCauseMap.put(MODEM_RESTART, "MODEM_RESTART");
        sFailCauseMap.put(PDP_PPP_NOT_SUPPORTED, "PDP_PPP_NOT_SUPPORTED");
        sFailCauseMap.put(UNPREFERRED_RAT, "UNPREFERRED_RAT");
        sFailCauseMap.put(PHYSICAL_LINK_CLOSE_IN_PROGRESS, "PHYSICAL_LINK_CLOSE_IN_PROGRESS");
        sFailCauseMap.put(APN_PENDING_HANDOVER, "APN_PENDING_HANDOVER");
        sFailCauseMap.put(PROFILE_BEARER_INCOMPATIBLE, "PROFILE_BEARER_INCOMPATIBLE");
        sFailCauseMap.put(SIM_CARD_CHANGED, "SIM_CARD_CHANGED");
        sFailCauseMap.put(LOW_POWER_MODE_OR_POWERING_DOWN, "LOW_POWER_MODE_OR_POWERING_DOWN");
        sFailCauseMap.put(APN_DISABLED, "APN_DISABLED");
        sFailCauseMap.put(MAX_PPP_INACTIVITY_TIMER_EXPIRED, "MAX_PPP_INACTIVITY_TIMER_EXPIRED");
        sFailCauseMap.put(IPV6_ADDRESS_TRANSFER_FAILED, "IPV6_ADDRESS_TRANSFER_FAILED");
        sFailCauseMap.put(TRAT_SWAP_FAILED, "TRAT_SWAP_FAILED");
        sFailCauseMap.put(EHRPD_TO_HRPD_FALLBACK, "EHRPD_TO_HRPD_FALLBACK");
        sFailCauseMap.put(MIP_CONFIG_FAILURE, "MIP_CONFIG_FAILURE");
        sFailCauseMap.put(PDN_INACTIVITY_TIMER_EXPIRED, "PDN_INACTIVITY_TIMER_EXPIRED");
        sFailCauseMap.put(MAX_IPV4_CONNECTIONS, "MAX_IPV4_CONNECTIONS");
        sFailCauseMap.put(MAX_IPV6_CONNECTIONS, "MAX_IPV6_CONNECTIONS");
        sFailCauseMap.put(APN_MISMATCH, "APN_MISMATCH");
        sFailCauseMap.put(IP_VERSION_MISMATCH, "IP_VERSION_MISMATCH");
        sFailCauseMap.put(DUN_CALL_DISALLOWED, "DUN_CALL_DISALLOWED");
        sFailCauseMap.put(INTERNAL_EPC_NONEPC_TRANSITION, "INTERNAL_EPC_NONEPC_TRANSITION");
        sFailCauseMap.put(INTERFACE_IN_USE, "INTERFACE_IN_USE");
        sFailCauseMap.put(APN_DISALLOWED_ON_ROAMING, "APN_DISALLOWED_ON_ROAMING");
        sFailCauseMap.put(APN_PARAMETERS_CHANGED, "APN_PARAMETERS_CHANGED");
        sFailCauseMap.put(NULL_APN_DISALLOWED, "NULL_APN_DISALLOWED");
        sFailCauseMap.put(THERMAL_MITIGATION, "THERMAL_MITIGATION");
        sFailCauseMap.put(DATA_SETTINGS_DISABLED, "DATA_SETTINGS_DISABLED");
        sFailCauseMap.put(DATA_ROAMING_SETTINGS_DISABLED, "DATA_ROAMING_SETTINGS_DISABLED");
        sFailCauseMap.put(DDS_SWITCHED, "DDS_SWITCHED");
        sFailCauseMap.put(FORBIDDEN_APN_NAME, "FORBIDDEN_APN_NAME");
        sFailCauseMap.put(DDS_SWITCH_IN_PROGRESS, "DDS_SWITCH_IN_PROGRESS");
        sFailCauseMap.put(CALL_DISALLOWED_IN_ROAMING, "CALL_DISALLOWED_IN_ROAMING");
        sFailCauseMap.put(NON_IP_NOT_SUPPORTED, "NON_IP_NOT_SUPPORTED");
        sFailCauseMap.put(PDN_NON_IP_CALL_THROTTLED, "PDN_NON_IP_CALL_THROTTLED");
        sFailCauseMap.put(PDN_NON_IP_CALL_DISALLOWED, "PDN_NON_IP_CALL_DISALLOWED");
        sFailCauseMap.put(CDMA_LOCK, "CDMA_LOCK");
        sFailCauseMap.put(CDMA_INTERCEPT, "CDMA_INTERCEPT");
        sFailCauseMap.put(CDMA_REORDER, "CDMA_REORDER");
        sFailCauseMap.put(CDMA_RELEASE_DUE_TO_SO_REJECTION, "CDMA_RELEASE_DUE_TO_SO_REJECTION");
        sFailCauseMap.put(CDMA_INCOMING_CALL, "CDMA_INCOMING_CALL");
        sFailCauseMap.put(CDMA_ALERT_STOP, "CDMA_ALERT_STOP");
        sFailCauseMap.put(CHANNEL_ACQUISITION_FAILURE, "CHANNEL_ACQUISITION_FAILURE");
        sFailCauseMap.put(MAX_ACCESS_PROBE, "MAX_ACCESS_PROBE");
        sFailCauseMap.put(CONCURRENT_SERVICE_NOT_SUPPORTED_BY_BASE_STATION,
                "CONCURRENT_SERVICE_NOT_SUPPORTED_BY_BASE_STATION");
        sFailCauseMap.put(NO_RESPONSE_FROM_BASE_STATION, "NO_RESPONSE_FROM_BASE_STATION");
        sFailCauseMap.put(REJECTED_BY_BASE_STATION, "REJECTED_BY_BASE_STATION");
        sFailCauseMap.put(CONCURRENT_SERVICES_INCOMPATIBLE, "CONCURRENT_SERVICES_INCOMPATIBLE");
        sFailCauseMap.put(NO_CDMA_SERVICE, "NO_CDMA_SERVICE");
        sFailCauseMap.put(RUIM_NOT_PRESENT, "RUIM_NOT_PRESENT");
        sFailCauseMap.put(CDMA_RETRY_ORDER, "CDMA_RETRY_ORDER");
        sFailCauseMap.put(ACCESS_BLOCK, "ACCESS_BLOCK");
        sFailCauseMap.put(ACCESS_BLOCK_ALL, "ACCESS_BLOCK_ALL");
        sFailCauseMap.put(IS707B_MAX_ACCESS_PROBES, "IS707B_MAX_ACCESS_PROBES");
        sFailCauseMap.put(THERMAL_EMERGENCY, "THERMAL_EMERGENCY");
        sFailCauseMap.put(CONCURRENT_SERVICES_NOT_ALLOWED, "CONCURRENT_SERVICES_NOT_ALLOWED");
        sFailCauseMap.put(INCOMING_CALL_REJECTED, "INCOMING_CALL_REJECTED");
        sFailCauseMap.put(NO_SERVICE_ON_GATEWAY, "NO_SERVICE_ON_GATEWAY");
        sFailCauseMap.put(NO_GPRS_CONTEXT, "NO_GPRS_CONTEXT");
        sFailCauseMap.put(ILLEGAL_MS, "ILLEGAL_MS");
        sFailCauseMap.put(ILLEGAL_ME, "ILLEGAL_ME");
        sFailCauseMap.put(GPRS_SERVICES_AND_NON_GPRS_SERVICES_NOT_ALLOWED,
                "GPRS_SERVICES_AND_NON_GPRS_SERVICES_NOT_ALLOWED");
        sFailCauseMap.put(GPRS_SERVICES_NOT_ALLOWED, "GPRS_SERVICES_NOT_ALLOWED");
        sFailCauseMap.put(MS_IDENTITY_CANNOT_BE_DERIVED_BY_THE_NETWORK,
                "MS_IDENTITY_CANNOT_BE_DERIVED_BY_THE_NETWORK");
        sFailCauseMap.put(IMPLICITLY_DETACHED, "IMPLICITLY_DETACHED");
        sFailCauseMap.put(PLMN_NOT_ALLOWED, "PLMN_NOT_ALLOWED");
        sFailCauseMap.put(LOCATION_AREA_NOT_ALLOWED, "LOCATION_AREA_NOT_ALLOWED");
        sFailCauseMap.put(GPRS_SERVICES_NOT_ALLOWED_IN_THIS_PLMN,
                "GPRS_SERVICES_NOT_ALLOWED_IN_THIS_PLMN");
        sFailCauseMap.put(PDP_DUPLICATE, "PDP_DUPLICATE");
        sFailCauseMap.put(UE_RAT_CHANGE, "UE_RAT_CHANGE");
        sFailCauseMap.put(CONGESTION, "CONGESTION");
        sFailCauseMap.put(NO_PDP_CONTEXT_ACTIVATED, "NO_PDP_CONTEXT_ACTIVATED");
        sFailCauseMap.put(ACCESS_CLASS_DSAC_REJECTION, "ACCESS_CLASS_DSAC_REJECTION");
        sFailCauseMap.put(PDP_ACTIVATE_MAX_RETRY_FAILED, "PDP_ACTIVATE_MAX_RETRY_FAILED");
        sFailCauseMap.put(RADIO_ACCESS_BEARER_FAILURE, "RADIO_ACCESS_BEARER_FAILURE");
        sFailCauseMap.put(ESM_UNKNOWN_EPS_BEARER_CONTEXT, "ESM_UNKNOWN_EPS_BEARER_CONTEXT");
        sFailCauseMap.put(DRB_RELEASED_BY_RRC, "DRB_RELEASED_BY_RRC");
        sFailCauseMap.put(CONNECTION_RELEASED, "CONNECTION_RELEASED");
        sFailCauseMap.put(EMM_DETACHED, "EMM_DETACHED");
        sFailCauseMap.put(EMM_ATTACH_FAILED, "EMM_ATTACH_FAILED");
        sFailCauseMap.put(EMM_ATTACH_STARTED, "EMM_ATTACH_STARTED");
        sFailCauseMap.put(LTE_NAS_SERVICE_REQUEST_FAILED, "LTE_NAS_SERVICE_REQUEST_FAILED");
        sFailCauseMap.put(DUPLICATE_BEARER_ID, "DUPLICATE_BEARER_ID");
        sFailCauseMap.put(ESM_COLLISION_SCENARIOS, "ESM_COLLISION_SCENARIOS");
        sFailCauseMap.put(ESM_BEARER_DEACTIVATED_TO_SYNC_WITH_NETWORK,
                "ESM_BEARER_DEACTIVATED_TO_SYNC_WITH_NETWORK");
        sFailCauseMap.put(ESM_NW_ACTIVATED_DED_BEARER_WITH_ID_OF_DEF_BEARER,
                "ESM_NW_ACTIVATED_DED_BEARER_WITH_ID_OF_DEF_BEARER");
        sFailCauseMap.put(ESM_BAD_OTA_MESSAGE, "ESM_BAD_OTA_MESSAGE");
        sFailCauseMap.put(ESM_DOWNLOAD_SERVER_REJECTED_THE_CALL,
                "ESM_DOWNLOAD_SERVER_REJECTED_THE_CALL");
        sFailCauseMap.put(ESM_CONTEXT_TRANSFERRED_DUE_TO_IRAT,
                "ESM_CONTEXT_TRANSFERRED_DUE_TO_IRAT");
        sFailCauseMap.put(DS_EXPLICIT_DEACTIVATION, "DS_EXPLICIT_DEACTIVATION");
        sFailCauseMap.put(ESM_LOCAL_CAUSE_NONE, "ESM_LOCAL_CAUSE_NONE");
        sFailCauseMap.put(LTE_THROTTLING_NOT_REQUIRED, "LTE_THROTTLING_NOT_REQUIRED");
        sFailCauseMap.put(ACCESS_CONTROL_LIST_CHECK_FAILURE,
                "ACCESS_CONTROL_LIST_CHECK_FAILURE");
        sFailCauseMap.put(SERVICE_NOT_ALLOWED_ON_PLMN, "SERVICE_NOT_ALLOWED_ON_PLMN");
        sFailCauseMap.put(EMM_T3417_EXPIRED, "EMM_T3417_EXPIRED");
        sFailCauseMap.put(EMM_T3417_EXT_EXPIRED, "EMM_T3417_EXT_EXPIRED");
        sFailCauseMap.put(RRC_UPLINK_DATA_TRANSMISSION_FAILURE,
                "RRC_UPLINK_DATA_TRANSMISSION_FAILURE");
        sFailCauseMap.put(RRC_UPLINK_DELIVERY_FAILED_DUE_TO_HANDOVER,
                "RRC_UPLINK_DELIVERY_FAILED_DUE_TO_HANDOVER");
        sFailCauseMap.put(RRC_UPLINK_CONNECTION_RELEASE, "RRC_UPLINK_CONNECTION_RELEASE");
        sFailCauseMap.put(RRC_UPLINK_RADIO_LINK_FAILURE, "RRC_UPLINK_RADIO_LINK_FAILURE");
        sFailCauseMap.put(RRC_UPLINK_ERROR_REQUEST_FROM_NAS, "RRC_UPLINK_ERROR_REQUEST_FROM_NAS");
        sFailCauseMap.put(RRC_CONNECTION_ACCESS_STRATUM_FAILURE,
                "RRC_CONNECTION_ACCESS_STRATUM_FAILURE");
        sFailCauseMap.put(RRC_CONNECTION_ANOTHER_PROCEDURE_IN_PROGRESS,
                "RRC_CONNECTION_ANOTHER_PROCEDURE_IN_PROGRESS");
        sFailCauseMap.put(RRC_CONNECTION_ACCESS_BARRED, "RRC_CONNECTION_ACCESS_BARRED");
        sFailCauseMap.put(RRC_CONNECTION_CELL_RESELECTION, "RRC_CONNECTION_CELL_RESELECTION");
        sFailCauseMap.put(RRC_CONNECTION_CONFIG_FAILURE, "RRC_CONNECTION_CONFIG_FAILURE");
        sFailCauseMap.put(RRC_CONNECTION_TIMER_EXPIRED, "RRC_CONNECTION_TIMER_EXPIRED");
        sFailCauseMap.put(RRC_CONNECTION_LINK_FAILURE, "RRC_CONNECTION_LINK_FAILURE");
        sFailCauseMap.put(RRC_CONNECTION_CELL_NOT_CAMPED, "RRC_CONNECTION_CELL_NOT_CAMPED");
        sFailCauseMap.put(RRC_CONNECTION_SYSTEM_INTERVAL_FAILURE,
                "RRC_CONNECTION_SYSTEM_INTERVAL_FAILURE");
        sFailCauseMap.put(RRC_CONNECTION_REJECT_BY_NETWORK, "RRC_CONNECTION_REJECT_BY_NETWORK");
        sFailCauseMap.put(RRC_CONNECTION_NORMAL_RELEASE, "RRC_CONNECTION_NORMAL_RELEASE");
        sFailCauseMap.put(RRC_CONNECTION_RADIO_LINK_FAILURE, "RRC_CONNECTION_RADIO_LINK_FAILURE");
        sFailCauseMap.put(RRC_CONNECTION_REESTABLISHMENT_FAILURE,
                "RRC_CONNECTION_REESTABLISHMENT_FAILURE");
        sFailCauseMap.put(RRC_CONNECTION_OUT_OF_SERVICE_DURING_CELL_REGISTER,
                "RRC_CONNECTION_OUT_OF_SERVICE_DURING_CELL_REGISTER");
        sFailCauseMap.put(RRC_CONNECTION_ABORT_REQUEST, "RRC_CONNECTION_ABORT_REQUEST");
        sFailCauseMap.put(RRC_CONNECTION_SYSTEM_INFORMATION_BLOCK_READ_ERROR,
                "RRC_CONNECTION_SYSTEM_INFORMATION_BLOCK_READ_ERROR");
        sFailCauseMap.put(NETWORK_INITIATED_DETACH_WITH_AUTO_REATTACH,
                "NETWORK_INITIATED_DETACH_WITH_AUTO_REATTACH");
        sFailCauseMap.put(NETWORK_INITIATED_DETACH_NO_AUTO_REATTACH,
                "NETWORK_INITIATED_DETACH_NO_AUTO_REATTACH");
        sFailCauseMap.put(ESM_PROCEDURE_TIME_OUT, "ESM_PROCEDURE_TIME_OUT");
        sFailCauseMap.put(INVALID_CONNECTION_ID, "INVALID_CONNECTION_ID");
        sFailCauseMap.put(MAXIMIUM_NSAPIS_EXCEEDED, "MAXIMIUM_NSAPIS_EXCEEDED");
        sFailCauseMap.put(INVALID_PRIMARY_NSAPI, "INVALID_PRIMARY_NSAPI");
        sFailCauseMap.put(CANNOT_ENCODE_OTA_MESSAGE, "CANNOT_ENCODE_OTA_MESSAGE");
        sFailCauseMap.put(RADIO_ACCESS_BEARER_SETUP_FAILURE, "RADIO_ACCESS_BEARER_SETUP_FAILURE");
        sFailCauseMap.put(PDP_ESTABLISH_TIMEOUT_EXPIRED, "PDP_ESTABLISH_TIMEOUT_EXPIRED");
        sFailCauseMap.put(PDP_MODIFY_TIMEOUT_EXPIRED, "PDP_MODIFY_TIMEOUT_EXPIRED");
        sFailCauseMap.put(PDP_INACTIVE_TIMEOUT_EXPIRED, "PDP_INACTIVE_TIMEOUT_EXPIRED");
        sFailCauseMap.put(PDP_LOWERLAYER_ERROR, "PDP_LOWERLAYER_ERROR");
        sFailCauseMap.put(PDP_MODIFY_COLLISION, "PDP_MODIFY_COLLISION");
        sFailCauseMap.put(MAXINUM_SIZE_OF_L2_MESSAGE_EXCEEDED,
                "MAXINUM_SIZE_OF_L2_MESSAGE_EXCEEDED");
        sFailCauseMap.put(NAS_REQUEST_REJECTED_BY_NETWORK, "NAS_REQUEST_REJECTED_BY_NETWORK");
        sFailCauseMap.put(RRC_CONNECTION_INVALID_REQUEST, "RRC_CONNECTION_INVALID_REQUEST");
        sFailCauseMap.put(RRC_CONNECTION_TRACKING_AREA_ID_CHANGED,
                "RRC_CONNECTION_TRACKING_AREA_ID_CHANGED");
        sFailCauseMap.put(RRC_CONNECTION_RF_UNAVAILABLE, "RRC_CONNECTION_RF_UNAVAILABLE");
        sFailCauseMap.put(RRC_CONNECTION_ABORTED_DUE_TO_IRAT_CHANGE,
                "RRC_CONNECTION_ABORTED_DUE_TO_IRAT_CHANGE");
        sFailCauseMap.put(RRC_CONNECTION_RELEASED_SECURITY_NOT_ACTIVE,
                "RRC_CONNECTION_RELEASED_SECURITY_NOT_ACTIVE");
        sFailCauseMap.put(RRC_CONNECTION_ABORTED_AFTER_HANDOVER,
                "RRC_CONNECTION_ABORTED_AFTER_HANDOVER");
        sFailCauseMap.put(RRC_CONNECTION_ABORTED_AFTER_IRAT_CELL_CHANGE,
                "RRC_CONNECTION_ABORTED_AFTER_IRAT_CELL_CHANGE");
        sFailCauseMap.put(RRC_CONNECTION_ABORTED_DURING_IRAT_CELL_CHANGE,
                "RRC_CONNECTION_ABORTED_DURING_IRAT_CELL_CHANGE");
        sFailCauseMap.put(IMSI_UNKNOWN_IN_HOME_SUBSCRIBER_SERVER,
                "IMSI_UNKNOWN_IN_HOME_SUBSCRIBER_SERVER");
        sFailCauseMap.put(IMEI_NOT_ACCEPTED, "IMEI_NOT_ACCEPTED");
        sFailCauseMap.put(EPS_SERVICES_AND_NON_EPS_SERVICES_NOT_ALLOWED,
                "EPS_SERVICES_AND_NON_EPS_SERVICES_NOT_ALLOWED");
        sFailCauseMap.put(EPS_SERVICES_NOT_ALLOWED_IN_PLMN, "EPS_SERVICES_NOT_ALLOWED_IN_PLMN");
        sFailCauseMap.put(MSC_TEMPORARILY_NOT_REACHABLE, "MSC_TEMPORARILY_NOT_REACHABLE");
        sFailCauseMap.put(CS_DOMAIN_NOT_AVAILABLE, "CS_DOMAIN_NOT_AVAILABLE");
        sFailCauseMap.put(ESM_FAILURE, "ESM_FAILURE");
        sFailCauseMap.put(MAC_FAILURE, "MAC_FAILURE");
        sFailCauseMap.put(SYNCHRONIZATION_FAILURE, "SYNCHRONIZATION_FAILURE");
        sFailCauseMap.put(UE_SECURITY_CAPABILITIES_MISMATCH, "UE_SECURITY_CAPABILITIES_MISMATCH");
        sFailCauseMap.put(SECURITY_MODE_REJECTED, "SECURITY_MODE_REJECTED");
        sFailCauseMap.put(UNACCEPTABLE_NON_EPS_AUTHENTICATION,
                "UNACCEPTABLE_NON_EPS_AUTHENTICATION");
        sFailCauseMap.put(CS_FALLBACK_CALL_ESTABLISHMENT_NOT_ALLOWED,
                "CS_FALLBACK_CALL_ESTABLISHMENT_NOT_ALLOWED");
        sFailCauseMap.put(NO_EPS_BEARER_CONTEXT_ACTIVATED, "NO_EPS_BEARER_CONTEXT_ACTIVATED");
        sFailCauseMap.put(INVALID_EMM_STATE, "INVALID_EMM_STATE");
        sFailCauseMap.put(NAS_LAYER_FAILURE, "NAS_LAYER_FAILURE");
        sFailCauseMap.put(MULTIPLE_PDP_CALL_NOT_ALLOWED, "MULTIPLE_PDP_CALL_NOT_ALLOWED");
        sFailCauseMap.put(EMBMS_NOT_ENABLED, "EMBMS_NOT_ENABLED");
        sFailCauseMap.put(IRAT_HANDOVER_FAILED, "IRAT_HANDOVER_FAILED");
        sFailCauseMap.put(EMBMS_REGULAR_DEACTIVATION, "EMBMS_REGULAR_DEACTIVATION");
        sFailCauseMap.put(TEST_LOOPBACK_REGULAR_DEACTIVATION, "TEST_LOOPBACK_REGULAR_DEACTIVATION");
        sFailCauseMap.put(LOWER_LAYER_REGISTRATION_FAILURE, "LOWER_LAYER_REGISTRATION_FAILURE");
        sFailCauseMap.put(DATA_PLAN_EXPIRED, "DATA_PLAN_EXPIRED");
        sFailCauseMap.put(UMTS_HANDOVER_TO_IWLAN, "UMTS_HANDOVER_TO_IWLAN");
        sFailCauseMap.put(EVDO_CONNECTION_DENY_BY_GENERAL_OR_NETWORK_BUSY,
                "EVDO_CONNECTION_DENY_BY_GENERAL_OR_NETWORK_BUSY");
        sFailCauseMap.put(EVDO_CONNECTION_DENY_BY_BILLING_OR_AUTHENTICATION_FAILURE,
                "EVDO_CONNECTION_DENY_BY_BILLING_OR_AUTHENTICATION_FAILURE");
        sFailCauseMap.put(EVDO_HDR_CHANGED, "EVDO_HDR_CHANGED");
        sFailCauseMap.put(EVDO_HDR_EXITED, "EVDO_HDR_EXITED");
        sFailCauseMap.put(EVDO_HDR_NO_SESSION, "EVDO_HDR_NO_SESSION");
        sFailCauseMap.put(EVDO_USING_GPS_FIX_INSTEAD_OF_HDR_CALL,
                "EVDO_USING_GPS_FIX_INSTEAD_OF_HDR_CALL");
        sFailCauseMap.put(EVDO_HDR_CONNECTION_SETUP_TIMEOUT, "EVDO_HDR_CONNECTION_SETUP_TIMEOUT");
        sFailCauseMap.put(FAILED_TO_ACQUIRE_COLOCATED_HDR, "FAILED_TO_ACQUIRE_COLOCATED_HDR");
        sFailCauseMap.put(OTASP_COMMIT_IN_PROGRESS, "OTASP_COMMIT_IN_PROGRESS");
        sFailCauseMap.put(NO_HYBRID_HDR_SERVICE, "NO_HYBRID_HDR_SERVICE");
        sFailCauseMap.put(HDR_NO_LOCK_GRANTED, "HDR_NO_LOCK_GRANTED");
        sFailCauseMap.put(DBM_OR_SMS_IN_PROGRESS, "DBM_OR_SMS_IN_PROGRESS");
        sFailCauseMap.put(HDR_FADE, "HDR_FADE");
        sFailCauseMap.put(HDR_ACCESS_FAILURE, "HDR_ACCESS_FAILURE");
        sFailCauseMap.put(UNSUPPORTED_1X_PREV, "UNSUPPORTED_1X_PREV");
        sFailCauseMap.put(LOCAL_END, "LOCAL_END");
        sFailCauseMap.put(NO_SERVICE, "NO_SERVICE");
        sFailCauseMap.put(FADE, "FADE");
        sFailCauseMap.put(NORMAL_RELEASE, "NORMAL_RELEASE");
        sFailCauseMap.put(ACCESS_ATTEMPT_ALREADY_IN_PROGRESS, "ACCESS_ATTEMPT_ALREADY_IN_PROGRESS");
        sFailCauseMap.put(REDIRECTION_OR_HANDOFF_IN_PROGRESS, "REDIRECTION_OR_HANDOFF_IN_PROGRESS");
        sFailCauseMap.put(EMERGENCY_MODE, "EMERGENCY_MODE");
        sFailCauseMap.put(PHONE_IN_USE, "PHONE_IN_USE");
        sFailCauseMap.put(INVALID_MODE, "INVALID_MODE");
        sFailCauseMap.put(INVALID_SIM_STATE, "INVALID_SIM_STATE");
        sFailCauseMap.put(NO_COLLOCATED_HDR, "NO_COLLOCATED_HDR");
        sFailCauseMap.put(UE_IS_ENTERING_POWERSAVE_MODE, "UE_IS_ENTERING_POWERSAVE_MODE");
        sFailCauseMap.put(DUAL_SWITCH, "DUAL_SWITCH");
        sFailCauseMap.put(PPP_TIMEOUT, "PPP_TIMEOUT");
        sFailCauseMap.put(PPP_AUTH_FAILURE, "PPP_AUTH_FAILURE");
        sFailCauseMap.put(PPP_OPTION_MISMATCH, "PPP_OPTION_MISMATCH");
        sFailCauseMap.put(PPP_PAP_FAILURE, "PPP_PAP_FAILURE");
        sFailCauseMap.put(PPP_CHAP_FAILURE, "PPP_CHAP_FAILURE");
        sFailCauseMap.put(PPP_CLOSE_IN_PROGRESS, "PPP_CLOSE_IN_PROGRESS");
        sFailCauseMap.put(LIMITED_TO_IPV4, "LIMITED_TO_IPV4");
        sFailCauseMap.put(LIMITED_TO_IPV6, "LIMITED_TO_IPV6");
        sFailCauseMap.put(VSNCP_TIMEOUT, "VSNCP_TIMEOUT");
        sFailCauseMap.put(VSNCP_GEN_ERROR, "VSNCP_GEN_ERROR");
        sFailCauseMap.put(VSNCP_APN_UNATHORIZED, "VSNCP_APN_UNATHORIZED");
        sFailCauseMap.put(VSNCP_PDN_LIMIT_EXCEEDED, "VSNCP_PDN_LIMIT_EXCEEDED");
        sFailCauseMap.put(VSNCP_NO_PDN_GATEWAY_ADDRESS, "VSNCP_NO_PDN_GATEWAY_ADDRESS");
        sFailCauseMap.put(VSNCP_PDN_GATEWAY_UNREACHABLE, "VSNCP_PDN_GATEWAY_UNREACHABLE");
        sFailCauseMap.put(VSNCP_PDN_GATEWAY_REJECT, "VSNCP_PDN_GATEWAY_REJECT");
        sFailCauseMap.put(VSNCP_INSUFFICIENT_PARAMETERS, "VSNCP_INSUFFICIENT_PARAMETERS");
        sFailCauseMap.put(VSNCP_RESOURCE_UNAVAILABLE, "VSNCP_RESOURCE_UNAVAILABLE");
        sFailCauseMap.put(VSNCP_ADMINISTRATIVELY_PROHIBITED, "VSNCP_ADMINISTRATIVELY_PROHIBITED");
        sFailCauseMap.put(VSNCP_PDN_ID_IN_USE, "VSNCP_PDN_ID_IN_USE");
        sFailCauseMap.put(VSNCP_SUBSCRIBER_LIMITATION, "VSNCP_SUBSCRIBER_LIMITATION");
        sFailCauseMap.put(VSNCP_PDN_EXISTS_FOR_THIS_APN, "VSNCP_PDN_EXISTS_FOR_THIS_APN");
        sFailCauseMap.put(VSNCP_RECONNECT_NOT_ALLOWED, "VSNCP_RECONNECT_NOT_ALLOWED");
        sFailCauseMap.put(IPV6_PREFIX_UNAVAILABLE, "IPV6_PREFIX_UNAVAILABLE");
        sFailCauseMap.put(HANDOFF_PREFERENCE_CHANGED, "HANDOFF_PREFERENCE_CHANGED");
        sFailCauseMap.put(OEM_DCFAILCAUSE_1, "OEM_DCFAILCAUSE_1");
        sFailCauseMap.put(OEM_DCFAILCAUSE_2, "OEM_DCFAILCAUSE_2");
        sFailCauseMap.put(OEM_DCFAILCAUSE_3, "OEM_DCFAILCAUSE_3");
        sFailCauseMap.put(OEM_DCFAILCAUSE_4, "OEM_DCFAILCAUSE_4");
        sFailCauseMap.put(OEM_DCFAILCAUSE_5, "OEM_DCFAILCAUSE_5");
        sFailCauseMap.put(OEM_DCFAILCAUSE_6, "OEM_DCFAILCAUSE_6");
        sFailCauseMap.put(OEM_DCFAILCAUSE_7, "OEM_DCFAILCAUSE_7");
        sFailCauseMap.put(OEM_DCFAILCAUSE_8, "OEM_DCFAILCAUSE_8");
        sFailCauseMap.put(OEM_DCFAILCAUSE_9, "OEM_DCFAILCAUSE_9");
        sFailCauseMap.put(OEM_DCFAILCAUSE_10, "OEM_DCFAILCAUSE_10");
        sFailCauseMap.put(OEM_DCFAILCAUSE_11, "OEM_DCFAILCAUSE_11");
        sFailCauseMap.put(OEM_DCFAILCAUSE_12, "OEM_DCFAILCAUSE_12");
        sFailCauseMap.put(OEM_DCFAILCAUSE_13, "OEM_DCFAILCAUSE_13");
        sFailCauseMap.put(OEM_DCFAILCAUSE_14, "OEM_DCFAILCAUSE_14");
        sFailCauseMap.put(OEM_DCFAILCAUSE_15, "OEM_DCFAILCAUSE_15");
        sFailCauseMap.put(REGISTRATION_FAIL, "REGISTRATION_FAIL");
        sFailCauseMap.put(GPRS_REGISTRATION_FAIL, "GPRS_REGISTRATION_FAIL");
        sFailCauseMap.put(SIGNAL_LOST, "SIGNAL_LOST");
        sFailCauseMap.put(PREF_RADIO_TECH_CHANGED, "PREF_RADIO_TECH_CHANGED");
        sFailCauseMap.put(RADIO_POWER_OFF, "RADIO_POWER_OFF");
        sFailCauseMap.put(TETHERED_CALL_ACTIVE, "TETHERED_CALL_ACTIVE");
        sFailCauseMap.put(ERROR_UNSPECIFIED, "ERROR_UNSPECIFIED");
        sFailCauseMap.put(UNKNOWN, "UNKNOWN");
        sFailCauseMap.put(RADIO_NOT_AVAILABLE, "RADIO_NOT_AVAILABLE");
        sFailCauseMap.put(UNACCEPTABLE_NETWORK_PARAMETER,
                "UNACCEPTABLE_NETWORK_PARAMETER");
        sFailCauseMap.put(CONNECTION_TO_DATACONNECTIONAC_BROKEN,
                "CONNECTION_TO_DATACONNECTIONAC_BROKEN");
        sFailCauseMap.put(LOST_CONNECTION, "LOST_CONNECTION");
        sFailCauseMap.put(RESET_BY_FRAMEWORK, "RESET_BY_FRAMEWORK");
    }

    private DataFailCause() {
    }

    /**
     * Map of subId -> set of data call setup permanent failure for the carrier.
     */
    private static final HashMap<Integer, Set<Integer>> sPermanentFailureCache =
            new HashMap<>();

    /**
     * Returns whether or not the fail cause is a failure that requires a modem restart
     *
     * @param context device context
     * @param cause data disconnect cause
     * @param subId subscription index
     * @return true if the fail cause code needs platform to trigger a modem restart.
     *
     * @hide
     */
    public static boolean isRadioRestartFailure(@NonNull Context context, @FailCause int cause,
                                                int subId) {
        CarrierConfigManager configManager = (CarrierConfigManager)
                context.getSystemService(Context.CARRIER_CONFIG_SERVICE);
        if (configManager != null) {
            PersistableBundle b = configManager.getConfigForSubId(subId);

            if (b != null) {
                if (cause == REGULAR_DEACTIVATION
                        && b.getBoolean(CarrierConfigManager
                        .KEY_RESTART_RADIO_ON_PDP_FAIL_REGULAR_DEACTIVATION_BOOL)) {
                    // This is for backward compatibility support. We need to continue support this
                    // old configuration until it gets removed in the future.
                    return true;
                }
                // Check the current configurations.
                int[] causeCodes = b.getIntArray(CarrierConfigManager
                        .KEY_RADIO_RESTART_FAILURE_CAUSES_INT_ARRAY);
                if (causeCodes != null) {
                    return Arrays.stream(causeCodes).anyMatch(i -> i == cause);
                }
            }
        }

        return false;
    }

    /** @hide */
    public static boolean isPermanentFailure(@NonNull Context context, @FailCause int failCause,
                                             int subId) {
        synchronized (sPermanentFailureCache) {

            Set<Integer> permanentFailureSet = sPermanentFailureCache.get(subId);

            // In case of cache miss, we need to look up the settings from carrier config.
            if (permanentFailureSet == null) {
                // Retrieve the permanent failure from carrier config
                CarrierConfigManager configManager = (CarrierConfigManager)
                        context.getSystemService(Context.CARRIER_CONFIG_SERVICE);
                if (configManager != null) {
                    PersistableBundle b = configManager.getConfigForSubId(subId);
                    if (b != null) {
                        String[] permanentFailureStrings = b.getStringArray(CarrierConfigManager.
                                KEY_CARRIER_DATA_CALL_PERMANENT_FAILURE_STRINGS);
                        if (permanentFailureStrings != null) {
                            permanentFailureSet = new HashSet<>();
                            for (Map.Entry<Integer, String> e : sFailCauseMap.entrySet()) {
                                if (ArrayUtils.contains(permanentFailureStrings, e.getValue())) {
                                    permanentFailureSet.add(e.getKey());
                                }
                            }
                        }
                    }
                }

                // If we are not able to find the configuration from carrier config, use the default
                // ones.
                if (permanentFailureSet == null) {
                    permanentFailureSet = new HashSet<Integer>() {
                        {
                            add(OPERATOR_BARRED);
                            add(MISSING_UNKNOWN_APN);
                            add(UNKNOWN_PDP_ADDRESS_TYPE);
                            add(USER_AUTHENTICATION);
                            add(ACTIVATION_REJECT_GGSN);
                            add(SERVICE_OPTION_NOT_SUPPORTED);
                            add(SERVICE_OPTION_NOT_SUBSCRIBED);
                            add(NSAPI_IN_USE);
                            add(ONLY_IPV4_ALLOWED);
                            add(ONLY_IPV6_ALLOWED);
                            add(PROTOCOL_ERRORS);
                            add(RADIO_POWER_OFF);
                            add(TETHERED_CALL_ACTIVE);
                            add(RADIO_NOT_AVAILABLE);
                            add(UNACCEPTABLE_NETWORK_PARAMETER);
                            add(SIGNAL_LOST);
                        }
                    };
                }

                sPermanentFailureCache.put(subId, permanentFailureSet);
            }

            return permanentFailureSet.contains(failCause);
        }
    }

    /** @hide */
    public static boolean isEventLoggable(@FailCause int dataFailCause) {
        return (dataFailCause == OPERATOR_BARRED) || (dataFailCause == INSUFFICIENT_RESOURCES)
                || (dataFailCause == UNKNOWN_PDP_ADDRESS_TYPE)
                || (dataFailCause == USER_AUTHENTICATION)
                || (dataFailCause == ACTIVATION_REJECT_GGSN)
                || (dataFailCause == ACTIVATION_REJECT_UNSPECIFIED)
                || (dataFailCause == SERVICE_OPTION_NOT_SUBSCRIBED)
                || (dataFailCause == SERVICE_OPTION_NOT_SUPPORTED)
                || (dataFailCause == SERVICE_OPTION_OUT_OF_ORDER)
                || (dataFailCause == NSAPI_IN_USE)
                || (dataFailCause == ONLY_IPV4_ALLOWED)
                || (dataFailCause == ONLY_IPV6_ALLOWED)
                || (dataFailCause == PROTOCOL_ERRORS)
                || (dataFailCause == SIGNAL_LOST)
                || (dataFailCause == RADIO_POWER_OFF)
                || (dataFailCause == TETHERED_CALL_ACTIVE)
                || (dataFailCause == UNACCEPTABLE_NETWORK_PARAMETER);
    }

    /** @hide */
    public static String toString(@FailCause int dataFailCause) {
        int cause = getFailCause(dataFailCause);
        return (cause == UNKNOWN) ? "UNKNOWN(" + dataFailCause + ")" : sFailCauseMap.get(cause);
    }

    /** @hide */
    public static int getFailCause(@FailCause int failCause) {
        if (sFailCauseMap.containsKey(failCause)) {
            return failCause;
        } else {
            return UNKNOWN;
        }
    }
}
