/*
 * Copyright (C) 2018 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.hardware.radio@1.4;

import @1.0::ApnAuthType;
import @1.0::ApnTypes;
import @1.0::Carrier;
import @1.0::CellInfoType;
import @1.0::CdmaSignalStrength;
import @1.0::DataCallFailCause;
import @1.0::DataProfileId;
import @1.0::DataProfileInfoType;
import @1.0::EvdoSignalStrength;
import @1.0::GsmSignalStrength;
import @1.0::LteSignalStrength;
import @1.0::RadioAccessFamily;
import @1.0::RadioCapabilityPhase;
import @1.0::RadioCapabilityStatus;
import @1.0::RadioError;
import @1.0::RadioTechnology;
import @1.0::RegState;
import @1.0::TimeStampType;
import @1.1::ScanStatus;
import @1.2::AccessNetwork;
import @1.2::CellInfo;
import @1.2::CellInfoCdma;
import @1.2::CellInfoGsm;
import @1.2::CellInfoLte;
import @1.2::CellInfoTdscdma;
import @1.2::CellInfoWcdma;
import @1.2::CardStatus;
import @1.2::CellConnectionStatus;
import @1.2::CellIdentityCdma;
import @1.2::CellIdentityGsm;
import @1.2::CellIdentityLte;
import @1.2::CellIdentityTdscdma;
import @1.2::CellIdentityWcdma;
import @1.2::CellIdentityOperatorNames;
import @1.2::DataRegStateResult;
import @1.2::PhysicalChannelConfig;
import @1.2::TdscdmaSignalStrength;
import @1.2::WcdmaSignalStrength;

import android.hidl.safe_union@1.0::Monostate;

enum AccessNetwork : @1.2::AccessNetwork {
    /**
     * Unknown access network
     */
    UNKNOWN = 0,
};

enum ApnTypes : @1.0::ApnTypes {
    /**
     * Due to the addition of this new value, the value ALL defined in 1.0::ApnTypes is now
     * deprecated and should not be used.
     */
    MCX = 1 << 10,            // APN type for Mission Critical Service
                              // Reference: 3GPP TS 22.280 V15.3.0
};

/**
 * Emergency number contains information of number, one or more service category(s), zero or more
 * emergency uniform resource names, mobile country code (mcc), mobile network country (mnc) and
 * source(s) that indicate where it comes from.
 *
 * If the emergency number is associated with country, field ‘mcc’ must be provided, otherwise
 * field ‘mcc’ must be an empty string. If the emergency number is associated with network
 * operator, field ‘mcc’ and 'mnc' must be provided, otherwise field ‘mnc’ must be an empty
 * string. If the emergency number is specified with emergency service category(s), field
 * 'categories' must be provided, otherwise field 'categories' must be
 * @1.4::EmergencyServiceCategories::UNSPECIFIED. If the emergency number is specified with
 * emergency uniform resource names (URN), field 'urns' must be provided, otherwise field 'urns'
 * must be an empty list.
 *
 * A unique EmergencyNumber has a unique combination of ‘number’, ‘mcc’, 'mnc', 'categories' and
 * 'urns' fields. Multiple @1.4::EmergencyNumberSource should be merged into one 'sources' field
 * via bitwise-OR combination for the same EmergencyNumber.
 *
 * Reference: 3gpp 22.101, Section 10 - Emergency Calls;
 *            3gpp 23.167, Section 6 - Functional description;
 *            3gpp 24.503, Section 5.1.6.8.1 - General;
 *            RFC 5031
 */
struct EmergencyNumber{
    /**
     * The emergency number. The character in the number string should only be the dial pad
     * character('0'-'9', '*', or '#'). For example: 911.
     */
    string number;
    /**
     * 3-digit Mobile Country Code, 0..999. Empty string if not applicable.
     */
    string mcc;
    /**
     * 2 or 3-digit Mobile Network Code, 0..999. Empty string if not applicable.
     */
    string mnc;
    /**
     * The bitfield of @1.4::EmergencyServiceCategory(s). See @1.4::EmergencyServiceCategory for
     * the value of each bit.
     */
    bitfield<EmergencyServiceCategory> categories;
    /**
     * The list of emergency Uniform Resource Names (URN).
     */
    vec<string> urns;
    /**
     * The bitfield of @1.4::EmergencyNumberSource(s). See @1.4::EmergencyNumberSource for the
     * value of each bit.
     */
    bitfield<EmergencyNumberSource> sources;
};

/**
 * Defining Emergency Service Category as follows:
 * - General emergency call, all categories;
 * - Police;
 * - Ambulance;
 * - Fire Brigade;
 * - Marine Guard;
 * - Mountain Rescue;
 * - Manually Initiated eCall (MIeC);
 * - Automatically Initiated eCall (AIeC);
 *
 * Category UNSPECIFIED (General emergency call, all categories) indicates that no specific
 * services are associated with this emergency number.
 *
 * Reference: 3gpp 22.101, Section 10 - Emergency Calls
 */
enum EmergencyServiceCategory : int32_t {
    /**
     * General emergency call, all categories
     */
    UNSPECIFIED = 0,
    POLICE = 1 << 0,
    AMBULANCE = 1 << 1,
    FIRE_BRIGADE = 1 << 2,
    MARINE_GUARD = 1 << 3,
    MOUNTAIN_RESCUE = 1 << 4,
    /**
     * Manually Initiated eCall (MIeC)
     */
    MIEC = 1 << 5,
    /**
     * Automatically Initiated eCall (AIeC)
     */
    AIEC = 1 << 6,
};

/**
 * The source to tell where the corresponding @1.4::EmergencyNumber comes from.
 *
 * Reference: 3gpp 22.101, Section 10 - Emergency Calls
 */
enum EmergencyNumberSource : int32_t {
    /**
     * Indicates the number is from the network signal.
     */
    NETWORK_SIGNALING = 1 << 0,
    /**
     * Indicates the number is from the sim card.
     */
    SIM = 1 << 1,
    /**
     * Indicates the number is from the modem config.
     */
    MODEM_CONFIG = 1 << 2,
    /**
     * Indicates the number is available as default. Per the reference, 112, 911 must always be
     * available; additionally, 000, 08, 110, 999, 118 and 119 must be available when sim is not
     * present.
     */
    DEFAULT = 1 << 3,
};

/**
 * Indicates how the implementation should handle the emergency call if it is required by Android.
 */
enum EmergencyCallRouting : int32_t {
    /**
     * Indicates Android does not require how to handle the corresponding emergency call; it is
     * decided by implementation.
     */
    UNKNOWN = 0,
    /**
     * Indicates the implementation must handle the call through emergency routing.
     */
    EMERGENCY = 1,
    /**
     * Indicates the implementation must handle the call through normal call routing.
     */
    NORMAL = 2,
};

enum RadioTechnology : @1.0::RadioTechnology {
    /** 5G NR. This is only use in 5G Standalone mode. */
    NR = 20,
};

enum RadioAccessFamily : @1.0::RadioAccessFamily {
    /** 5G NR. This is only use in 5G Standalone mode. */
    NR = 1 << RadioTechnology:NR,
};

/** Mapping the frequency to a rough range. */
enum FrequencyRange : int32_t {
    /** Indicates the frequency range is below 1GHz. */
    LOW = 1,

    /** Indicates the frequency range is between 1GHz and 3GHz. */
    MID = 2,

    /** Indicates the frequency range is between 3GHz and 6GHz. */
    HIGH = 3,

    /** Indicates the frequency range is above 6GHz (millimeter wave frequency). */
    MMWAVE = 4,
};

/**
 * Expose more setup data call failures.
 */
enum DataCallFailCause : @1.0::DataCallFailCause {
    /**
     * Network cannot provide the requested service and PDP context is deactivated because of LLC
     * or SNDCP failure.
     */
    LLC_SNDCP = 0x19,
    /**
     * UE requested to modify QoS parameters or the bearer control mode, which is not compatible
     * with the selected bearer control mode.
     */
    ACTIVATION_REJECTED_BCM_VIOLATION = 0x30,
    /**
     * Network has already initiated the activation, modification, or deactivation of bearer
     * resources that was requested by the UE.
     */
    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.
     */
    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.
     */
    ONLY_NON_IP_ALLOWED = 0x3A,
    /**
     * QCI (QoS Class Identifier) indicated in the UE request cannot be supported.
     */
    UNSUPPORTED_QCI_VALUE = 0x3B,
    /**
     * Procedure requested by the UE was rejected because the bearer handling is not supported.
     */
    BEARER_HANDLING_NOT_SUPPORTED = 0x3C,
    /**
     * Not receiving a DNS address that was mandatory.
     */
    INVALID_DNS_ADDR = 0x7B,
    /**
     * Not receiving either a PCSCF or a DNS address, one of them being mandatory.
     */
    INVALID_PCSCF_OR_DNS_ADDRESS = 0x7C,
    /**
     * Emergency call bring up on a different ePDG.
     */
    CALL_PREEMPT_BY_EMERGENCY_APN = 0x7F,
    /**
     * UE performs a detach or disconnect PDN action based on TE requirements.
     */
    UE_INITIATED_DETACH_OR_DISCONNECT = 0x80,

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

/**
 * Data connection active status
 */
enum DataConnActiveStatus : int32_t {
    /**
     * Indicates the data connection is inactive.
     */
    INACTIVE = 0,
    /**
     * Indicates the data connection is active with physical link dormant.
     */
    DORMANT = 1,
    /**
     * Indicates the data connection is active with physical link up.
     */
    ACTIVE = 2,
};

/**
 * Specifies the type of packet data protocol which is defined in TS 27.007 section 10.1.1.
 */
enum PdpProtocolType : int32_t {
    /**
     * Unknown protocol
     */
    UNKNOWN = -1,
    /**
     * Internet protocol
     */
    IP = 0,
    /**
     * Internet protocol, version 6
     */
    IPV6 = 1,
    /**
     * Virtual PDP type introduced to handle dual IP stack UE capability.
     */
    IPV4V6 = 2,
    /**
     * Point to point protocol
     */
    PPP = 3,
    /**
     * Transfer of Non-IP data to external packet data network
     */
    NON_IP = 4,
    /**
     * Transfer of Unstructured data to the Data Network via N6
     */
    UNSTRUCTURED = 5,
};

safe_union RadioFrequencyInfo {
    /** A rough frequency range. */
    FrequencyRange range;

    /** The Absolute Radio Frequency Channel Number. */
    int32_t channelNumber;
};

struct PhysicalChannelConfig {
    @1.2::PhysicalChannelConfig base;

    /** The radio technology for this physical channel. */
    RadioTechnology rat;

    /** The radio frequency info. */
    RadioFrequencyInfo rfInfo;

    /**
     * A list of data calls mapped to this physical channel. The context id must match the cid of
     * @1.4::SetupDataCallResult. An empty list means the physical channel has no data call mapped
     * to it.
     */
    vec<int32_t> contextIds;

    /**
     * The physical cell identifier for this cell.
     *
     * In UTRAN, this value is primary scrambling code. The range is [0, 511].
     * Reference: 3GPP TS 25.213 section 5.2.2.
     *
     * In EUTRAN, this value is physical layer cell identity. The range is [0, 503].
     * Reference: 3GPP TS 36.211 section 6.11.
     *
     * In 5G RAN, this value is physical layer cell identity. The range is [0, 1008].
     * Reference: 3GPP TS 38.211 section 7.4.2.1.
     */
    uint32_t physicalCellId;
};

/**
 * Type to define the LTE specific network capabilities for voice over PS including
 * emergency and normal voice calls.
 */
struct LteVopsInfo {
    /**
     * This indicates if camped network support VoLTE services. This information is received
     * from LTE network during LTE NAS registration procedure through LTE ATTACH ACCEPT/TAU
     * ACCEPT. Refer 3GPP 24.301 EPS network feature support -> IMS VoPS
     */
    bool isVopsSupported;
    /**
     * This indicates if camped network support VoLTE emergency bearers. This information
     * is received from LTE network through two sources:
     * a. During LTE NAS registration procedure through LTE ATTACH ACCEPT/TAU ACCEPT. Refer
     *    3GPP 24.301 EPS network feature support -> EMC BS
     * b. In case device is not registered on network. Refer 3GPP 25.331 LTE RRC
     *    SIB1 : ims-EmergencySupport-r9
     * If device is registered on LTE, then this field indicates (a).
     * In case of limited service on LTE this field indicates (b).
     */
    bool isEmcBearerSupported;
};

/** The parameters of NR 5G Non-Standalone. */
struct NrIndicators {
    /**
     * Indicates that if E-UTRA-NR Dual Connectivity (EN-DC) is supported by the primary serving
     * cell.
     *
     * True the primary serving cell is LTE cell and the plmn-InfoList-r15 is present in SIB2 and
     * at least one bit in this list is true, otherwise this value should be false.
     *
     * Reference: 3GPP TS 36.331 v15.2.2 6.3.1 System information blocks.
     */
    bool isEndcAvailable;

    /**
     * True if use of dual connectivity with NR is restricted.
     * Reference: 3GPP TS 24.301 v15.03 section 9.3.3.12A.
     */
    bool isDcNrRestricted;

    /**
     * True if the bit N is in the PLMN-InfoList-r15 is true and the selected PLMN is present in
     * plmn-IdentityList at position N.
     * Reference: 3GPP TS 36.331 v15.2.2 section 6.3.1 PLMN-InfoList-r15.
     *            3GPP TS 36.331 v15.2.2 section 6.2.2 SystemInformationBlockType1 message.
     */
    bool isNrAvailable;
};

struct DataRegStateResult {
    @1.2::DataRegStateResult base;

    /**
     * Network capabilities for voice over PS services. This info is valid only on LTE network and
     * must be present when device is camped on LTE. vopsInfo must be empty when device is camped
     * only on 2G/3G.
     */
    safe_union VopsInfo {
        Monostate noinit;

        LteVopsInfo lteVopsInfo; // LTE network capability
    } vopsInfo;

    /**
     * The parameters of NR 5G Non-Standalone. This value is only valid on E-UTRAN, otherwise
     * must be empty.
     */
    NrIndicators nrIndicators;
};

/** Contains the configuration of the LTE cell tower. */
struct CellConfigLte {
    /**
     * Indicates that if E-UTRA-NR Dual Connectivity (EN-DC) is supported by the LTE cell.
     *
     * True if the plmn-InfoList-r15 is present in SIB2 and at least one bit in this list is true,
     * otherwise this value should be false.
     *
     * Reference: 3GPP TS 36.331 v15.2.2 6.3.1 System information blocks.
     */
    bool isEndcAvailable;
};

/** Inherits from @1.2::CellInfoLte, in order to add the LTE configuration. */
struct CellInfoLte {
    @1.2::CellInfoLte base;
    CellConfigLte cellConfig;
};

/** Overwritten from @1.2::CellInfo in order to update the CellInfoLte to 1.4 version. */
struct CellInfo {
    /**
     * True if the phone is registered to a mobile network that provides service on this cell and
     * this cell is being used or would be used for network signaling.
     */
    bool isRegistered;

    /** Connection status for the cell. */
    CellConnectionStatus connectionStatus;

    /** CellInfo details, cellInfoType can tell which cell info should be used. */
    safe_union Info {
        CellInfoGsm gsm;
        CellInfoCdma cdma;
        CellInfoWcdma wcdma;
        CellInfoTdscdma tdscdma;
        CellInfoLte lte;
        CellInfoNr nr;
    } info;
};

struct CellInfoNr {
    NrSignalStrength signalStrength;
    CellIdentityNr cellidentity;
};

/** Overwritten from @1.2::NetworkScanResult in order to update the CellInfo to 1.4 version. */
struct NetworkScanResult {
    /**
     * The status of the scan.
     */
    ScanStatus status;

    /**
     * The error code of the incremental result.
     */
    RadioError error;

    /**
     * List of network information as CellInfo.
     */
    vec<CellInfo> networkInfos;
};

/**
 * Overwritten from @1.0::DataProfileInfo in order to deprecate 'mvnoType', and 'mvnoMatchData'.
 * In the future, this must be extended instead of overwritten.
 * Also added 'preferred' and 'persistent' in this version.
 */
struct DataProfileInfo {
    /** id of the data profile */
    DataProfileId profileId;

    /** The APN name */
    string apn;

    /** PDP_type values */
    PdpProtocolType protocol;

    /** PDP_type values used on roaming network */
    PdpProtocolType roamingProtocol;

    /** APN authentication type */
    ApnAuthType authType;

    /** The username for APN, or empty string */
    string user;

    /** The password for APN, or empty string */
    string password;

    /** Data profile technology type */
    DataProfileInfoType type;

    /** The period in seconds to limit the maximum connections */
    int32_t maxConnsTime;

    /** The maximum connections during maxConnsTime */
    int32_t maxConns;

    /**
     * The required wait time in seconds after a successful UE initiated disconnect of a given PDN
     * connection before the device can send a new PDN connection request for that given PDN.
     */
    int32_t waitTime;

    /** True to enable the profile, false to disable */
    bool enabled;

    /** Supported APN types bitmap. See ApnTypes for the value of each bit. */
    bitfield<ApnTypes> supportedApnTypesBitmap;

    /** The bearer bitmap. See RadioAccessFamily for the value of each bit. */
    bitfield<RadioAccessFamily> bearerBitmap;

    /** Maximum transmission unit (MTU) size in bytes */
    int32_t mtu;

    /**
     * True if this data profile was used to bring up the last default (i.e internet) data
     * connection successfully.
     */
    bool preferred;

    /**
     * If true, modem must persist this data profile and profileId must not be
     * set to DataProfileId.INVALID. If the same data profile exists, this data profile must
     * overwrite it.
     */
    bool persistent;
};

struct CardStatus {
    @1.2::CardStatus base;
    /**
     * The EID is the eUICC identifier. The EID shall be stored within the ECASD and can be
     * retrieved by the Device at any time using the standard GlobalPlatform GET DATA command.
     *
     * This data is mandatory and applicable only when cardState is CardState:PRESENT and SIM card
     * supports eUICC.
     */
    string eid;
};

/** Overwritten from @1.0::RadioCapability in order to use the latest RadioAccessFamily. */
struct RadioCapability {
    /** Unique session value defined by fr amework returned in all "responses/unslo". */
    int32_t session;

    RadioCapabilityPhase phase;

    /** 32-bit bitmap of RadioAccessFamily. */
    bitfield<RadioAccessFamily> raf;

    /**
     * A UUID typically "com.xxxx.lmX" where X is the logical modem.
     * RadioConst:MAX_UUID_LENGTH is the max length.
     */
    string logicalModemUuid;

    RadioCapabilityStatus status;
};

/**
 * Overwritten from @1.0::SetupDataCallResult in order to update the DataCallFailCause to 1.4
 * version.
 */
struct SetupDataCallResult {
    /** Data call fail cause. DataCallFailCause.NONE if no error. */
    DataCallFailCause cause;

    /**
     * If status != DataCallFailCause.NONE, this field indicates the suggested retry back-off timer
     * value RIL wants to override the one pre-configured in FW. The unit is milliseconds.
     * The value < 0 means no value is suggested.
     * The value 0 means retry must be done ASAP.
     * The value of INT_MAX(0x7fffffff) means no retry.
     */
    int32_t suggestedRetryTime;

    /** Context ID, uniquely identifies this call. */
    int32_t cid;

    /** Data connection active status. */
    DataConnActiveStatus active;

    /**
     * PDP_type values. If cause is DataCallFailCause.ONLY_SINGLE_BEARER_ALLOWED, this is the type
     * supported such as "IP" or "IPV6".
     */
    PdpProtocolType type;

    /** The network interface name. */
    string ifname;

    /**
     * List of addresses with optional "/" prefix length, e.g., "192.0.1.3" or
     * "192.0.1.11/16 2001:db8::1/64".  Typically one IPv4 or one IPv6 or one of each. If the
     * prefix length is absent the addresses are assumed to be point to point with IPv4 having a
     * prefix length of 32 and IPv6 128.
     */
    vec<string> addresses;

    /**
     * List of DNS server addresses, e.g., "192.0.1.3" or "192.0.1.11 2001:db8::1". Empty if no dns
     * server addresses returned.
     */
    vec<string> dnses;

    /**
     * List of default gateway addresses, e.g., "192.0.1.3" or "192.0.1.11 2001:db8::1".
     * When empty, the addresses represent point to point connections.
     */
    vec<string> gateways;

    /**
     * List of P-CSCF(Proxy Call State Control Function) addresses via PCO(Protocol Configuration
     * Option), e.g., "2001:db8::1 2001:db8::2 2001:db8::3". Empty if not IMS client.
     */
    vec<string> pcscf;

    /**
     * MTU received from network. Value <= 0 means network has either not sent a value or sent an
     * invalid value.
     */
    int32_t mtu;
};

enum SimLockMultiSimPolicy : int32_t {
    /**
     * Indicates that configuration applies to each slot independently.
     */
    NO_MULTISIM_POLICY = 0,
    /**
     * Indicates that any SIM card can be used as far as one valid card is present in the device.
     * For the modem, a SIM card is valid when its content (i.e. MCC, MNC, GID, SPN) matches the
     * carrier restriction configuration.
     */
    ONE_VALID_SIM_MUST_BE_PRESENT = 1,
};

struct CarrierRestrictionsWithPriority {
    /**
     * List of allowed carriers.
     * The character '?' is used as wildcard character to match any value.
     */
    vec<Carrier> allowedCarriers;
    /**
     * List of excluded carriers.
     * The character '?' is used as wildcard character to match any value.
     */
    vec<Carrier> excludedCarriers;
    /**
     * True means that only carriers included in the allowed list and not in the excluded list
     * are permitted. Eg. allowedCarriers match mcc/mnc, excludedCarriers has same mcc/mnc and
     * gid1 is ABCD. It means except the carrier whose gid1 is ABCD, all carriers with the
     * same mcc/mnc are allowed.
     * False means that all carriers are allowed except those included in the excluded list
     * and not in the allowed list.
     */
    bool allowedCarriersPrioritized;
};

struct CellIdentityNr {
    /** 3-digit Mobile Country Code, in range[0, 999]; This value must be valid for registered or
     *  camped cells; INT_MAX means invalid/unreported.
     */
    string mcc;

    /**
     * 2 or 3-digit Mobile Network Code, in range [0, 999], This value must be valid for
     * registered or camped cells; INT_MAX means invalid/unreported.
     */
    string mnc;

    /**
     * NR Cell Identity in range [0, 68719476735] (36 bits) described in 3GPP TS 38.331, which
     * unambiguously identifies a cell within a PLMN. This value must be valid for registered or
     * camped cells; LONG_MAX (2^63-1) means invalid/unreported.
     */
    uint64_t nci;

    /**
     * Physical cell id in range [0, 1007] described in 3GPP TS 38.331. This value must be valid.
     */
    uint32_t pci;

    /** 16-bit tracking area code, INT_MAX means invalid/unreported. */
    int32_t tac;

    /**
     * NR Absolute Radio Frequency Channel Number, in range [0, 3279165].
     * Reference: 3GPP TS 38.101-1 and 3GPP TS 38.101-2 section 5.4.2.1.
     * This value must be valid.
     */
    int32_t nrarfcn;

    CellIdentityOperatorNames operatorNames;
};

struct NrSignalStrength {
    /**
     * SS reference signal received power, multipled by -1.
     *
     * Reference: 3GPP TS 38.215.
     *
     * Range [44, 140], INT_MAX means invalid/unreported.
     */
    int32_t ssRsrp;

    /**
     * SS reference signal received quality, multipled by -1.
     *
     * Reference: 3GPP TS 38.215.
     *
     * Range [3, 20], INT_MAX means invalid/unreported.
     */
    int32_t ssRsrq;

    /**
     * SS signal-to-noise and interference ratio.
     *
     * Reference: 3GPP TS 38.215 section 5.1.*, 3GPP TS 38.133 section 10.1.16.1.
     *
     * Range [-23, 40], INT_MAX means invalid/unreported.
     */
    int32_t ssSinr;

    /**
     * CSI reference signal received power, multipled by -1.
     *
     * Reference: 3GPP TS 38.215.
     *
     * Range [44, 140], INT_MAX means invalid/unreported.
     */
    int32_t csiRsrp;

    /**
     * CSI reference signal received quality, multipled by -1.
     *
     * Reference: 3GPP TS 38.215.
     *
     * Range [3, 20], INT_MAX means invalid/unreported.
     */
    int32_t csiRsrq;

    /**
     * CSI signal-to-noise and interference ratio.
     *
     * Reference: 3GPP TS 138.215 section 5.1.*, 3GPP TS 38.133 section 10.1.16.1.
     *
     * Range [-23, 40], INT_MAX means invalid/unreported.
     */
    int32_t csiSinr;
};

/** Overwritten from @1.2::SignalStrength in order to add signal strength for NR.  */
struct SignalStrength {
    /**
     * If GSM measurements are provided, this structure must contain valid measurements; otherwise
     * all fields should be set to INT_MAX to mark them as invalid.
     */
    GsmSignalStrength gsm;

    /**
     * If CDMA measurements are provided, this structure must contain valid measurements; otherwise
     * all fields should be set to INT_MAX to mark them as invalid.
     */
    CdmaSignalStrength cdma;

    /**
     * If EvDO measurements are provided, this structure must contain valid measurements; otherwise
     * all fields should be set to INT_MAX to mark them as invalid.
     */
    EvdoSignalStrength evdo;

    /**
     * If LTE measurements are provided, this structure must contain valid measurements; otherwise
     * all fields should be set to INT_MAX to mark them as invalid.
     */
    LteSignalStrength lte;

    /**
     * If TD-SCDMA measurements are provided, this structure must contain valid measurements;
     * otherwise all fields should be set to INT_MAX to mark them as invalid.
     */
    TdscdmaSignalStrength tdscdma;

    /**
     * If WCDMA measurements are provided, this structure must contain valid measurements; otherwise
     * all fields should be set to INT_MAX to mark them as invalid.
     */
    WcdmaSignalStrength wcdma;

    /**
     * If NR 5G measurements are provided, this structure must contain valid measurements; otherwise
     * all fields should be set to INT_MAX to mark them as invalid.
     */
    NrSignalStrength nr;
};
