/* * Copyright (C) 2020 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.6; import @1.0::CdmaSignalStrength; import @1.0::EvdoSignalStrength; import @1.0::GsmSignalStrength; import @1.0::LteSignalStrength; import @1.0::RadioError; import @1.0::RadioResponseType; import @1.0::RegState; import @1.1::EutranBands; import @1.1::GeranBands; import @1.1::ScanStatus; import @1.1::UtranBands; import @1.1::ImsiEncryptionInfo; import @1.2::Call; import @1.2::CellInfoCdma; import @1.2::CellConnectionStatus; import @1.2::TdscdmaSignalStrength; import @1.2::WcdmaSignalStrength; import @1.4::DataCallFailCause; import @1.4::DataConnActiveStatus; import @1.4::NrSignalStrength; import @1.4::PdpProtocolType; import @1.4::RadioTechnology; import @1.5::CellIdentity; import @1.5::CellIdentityLte; import @1.5::CellIdentityNr; import @1.5::CellInfoGsm; import @1.5::CellInfoWcdma; import @1.5::CellInfoTdscdma; import @1.5::LinkAddress; import @1.5::NgranBands; import @1.5::RegStateResult.AccessTechnologySpecificInfo.Cdma2000RegistrationInfo; import @1.5::RegStateResult.AccessTechnologySpecificInfo.EutranRegistrationInfo; import @1.5::RegistrationFailCause; import @1.5::SetupDataCallResult; import android.hidl.safe_union@1.0::Monostate; struct QosBandwidth { /** Maximum bit rate possible on the bearer */ uint32_t maxBitrateKbps; /** Minimum bit rate that is guaranteed to be provided by the network */ uint32_t guaranteedBitrateKbps; }; /** LTE/EPS Quality of Service parameters as per 3gpp spec 24.301 sec 9.9.4.3. */ struct EpsQos { /** * Quality of Service Class Identifier (QCI), see 3GPP TS 23.203 and 29.212. * The allowed values are standard values(1-9, 65-68, 69-70, 75, 79-80, 82-85) * defined in the spec and operator specific values in the range 128-254. */ uint16_t qci; QosBandwidth downlink; QosBandwidth uplink; }; /** 5G Quality of Service parameters as per 3gpp spec 24.501 sec 9.11.4.12 */ struct NrQos { /** * 5G QOS Identifier (5QI), see 3GPP TS 24.501 and 23.501. * The allowed values are standard values(1-9, 65-68, 69-70, 75, 79-80, 82-85) * defined in the spec and operator specific values in the range 128-254. */ uint16_t fiveQi; QosBandwidth downlink; QosBandwidth uplink; /** * QOS flow identifier of the QOS flow description in the * range of QosFlowIdRange::MIN to QosFlowIdRange::MAX */ uint8_t qfi; uint16_t averagingWindowMs; }; /** Allowed values for 5G QOS flow identifier */ enum QosFlowIdRange : uint8_t { MIN = 1, MAX = 63 }; /** EPS or NR QOS parameters */ safe_union Qos { Monostate noinit; EpsQos eps; NrQos nr; }; /** * Next header protocol numbers defined by IANA, RFC 5237 */ enum QosProtocol : int8_t { /** No protocol specified */ UNSPECIFIED = -1, /** Transmission Control Protocol */ TCP = 6, /** User Datagram Protocol */ UDP = 17, /** Encapsulating Security Payload Protocol */ ESP = 50, /** Authentication Header */ AH = 51, }; enum QosFilterDirection : int8_t { DOWNLINK = 0, UPLINK = 1, BIDIRECTIONAL = 2, }; /** Allowed port numbers */ enum QosPortRange : uint16_t { MIN = 20, MAX = 65535 }; enum RadioError : @1.0::RadioError { /** 1X voice and SMS are not allowed simulteneously. */ SIMULTANEOUS_SMS_AND_CALL_NOT_ALLOWED = 67, /** Access is barred. */ ACCESS_BARRED = 68, /** * SMS is blocked due to call control, e.g., resource unavailable * in the SMR entity. */ BLOCKED_DUE_TO_CALL = 69, /** * Returned from setRadioPowerResponse when detecting RF HW issues. Some RF * Front-End(RFFE) components like antenna are considered critical for modem * to provide telephony service. This RadioError is used when modem detect * such RFFE problem. */ RF_HARDWARE_ISSUE = 70, /** * Returned from setRadioPowerResponse when detecting no RF calibration * issue. Unlike RF_HARDWARE_ISSUE, this is a SW problem and no HW repair is * needed. */ NO_RF_CALIBRATION_INFO = 71, }; /** * Overwritten from @1.0::RadioResponseInfo in order to update the RadioError to 1.6 version. */ struct RadioResponseInfo { RadioResponseType type; // Response type int32_t serial; // Serial number of the request RadioError error; // Response error }; /** * Defines range of ports. start and end are the first and last port numbers * (inclusive) in the range. Both start and end are in QosPortRange.MIN to * QosPortRange.MAX range. A single port shall be represented by the same * start and end value. */ struct PortRange { int32_t start; int32_t end; }; /** Port is optional, contains either single port or range of ports */ safe_union MaybePort { Monostate noinit; PortRange range; }; /** See 3gpp 24.008 10.5.6.12 and 3gpp 24.501 9.11.4.13 */ struct QosFilter { /** * Local and remote IP addresses, typically one IPv4 or one IPv6 * or one of each. Addresses could be with optional "/" prefix * length, e.g.,"192.0.1.3" or "192.0.1.11/16 2001:db8::1/64". * 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 localAddresses; vec remoteAddresses; /** Local and remote port/ranges */ MaybePort localPort; MaybePort remotePort; /** QoS protocol */ QosProtocol protocol; /** Type of service value or mask as defined in RFC 1349 */ safe_union TypeOfService { Monostate noinit; uint8_t value; } tos; /** IPv6 flow label as defined in RFC 6437 */ safe_union Ipv6FlowLabel { Monostate noinit; uint32_t value; } flowLabel; /** IPSec security parameter index */ safe_union IpsecSpi { Monostate noinit; uint32_t value; } spi; /** Filter direction */ QosFilterDirection direction; /** * Specifies the order in which the filter needs to be matched. * A lower numerical(positive) value has a higher precedence. * Set -1 when unspecified. */ int32_t precedence; }; /** QOS session associated with a dedicated bearer */ struct QosSession { /** Unique ID of the QoS session within the data call */ int32_t qosSessionId; /** QOS attributes */ Qos qos; /** List of QOS filters associated with this session */ vec qosFilters; }; /** The allowed failure modes on an IWLAN handover failure. */ enum HandoverFailureMode : int8_t { /** * On data handover failure, fallback to the source data transport when the * fail cause is due to a hand off preference change. */ LEGACY = 0, /** On data handover failure, fallback to the source data transport. */ DO_FALLBACK = 1, /** * On data handover failure, retry the handover instead of falling back to * the source data transport. */ NO_FALLBACK_RETRY_HANDOVER = 2, /** * On data handover failure, setup a new data connection by sending a normal * request to the underlying data service. */ NO_FALLBACK_RETRY_SETUP_NORMAL = 3 }; /** * Overwritten from @1.5::SetupDataCallResult in order to change the suggestedRetryTime * to 64-bit value. In the future, this must be extended instead of overwritten. * Also added defaultQos, qosSessions, handoverFailureMode, pduSessionId, sliceInfo, * and traffic descriptors in this version. */ struct SetupDataCallResult { /** Data call fail cause. DataCallFailCause.NONE if no error. */ DataCallFailCause cause; /** * If cause is not DataCallFailCause.NONE, this field indicates the network suggested data * retry back-off time in milliseconds. Negative value indicates network does not give any * suggestion. 0 indicates retry should be performed immediately. 0x7fffffffffffffff indicates * the device should not retry data setup anymore. * * During this time, no calls to IRadio@1.6::SetupDataCall for this APN will be made unless * IRadioIndication@1.6::unthrottleApn is sent with the same APN. */ int64_t suggestedRetryTime; /** Context ID, uniquely identifies this data connection. */ int32_t cid; /** Data connection active status. */ DataConnActiveStatus active; /** * PDP protocol type. If cause is DataCallFailCause.ONLY_SINGLE_BEARER_ALLOWED, this is the * protocol type supported, such as "IP" or "IPV6". */ PdpProtocolType type; /** The network interface name. */ string ifname; /** * List of link address. */ vec 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 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 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 pcscf; /** * MTU received from network for IPv4. * Value <= 0 means network has either not sent a value or sent an invalid value. */ int32_t mtuV4; /** * MTU received from network for IPv6. * Value <= 0 means network has either not sent a value or sent an invalid value. */ int32_t mtuV6; /** Default bearer QoS. Applicable to LTE and NR */ Qos defaultQos; /** * Active QOS sessions of the dedicated bearers. Applicable to * PDNs that support dedicated bearers. */ vec qosSessions; /** Specifies the fallback mode on an IWLAN handover failure. */ HandoverFailureMode handoverFailureMode; /** * The allocated pdu session id for this data call. * A value of 0 means no pdu session id was attached to this call. * * Reference: 3GPP TS 24.007 section 11.2.3.1b */ int32_t pduSessionId; /** * Slice used for this data call. It is valid only when this data call is on * AccessNetwork:NGRAN. */ OptionalSliceInfo sliceInfo; /** * TrafficDescriptors for which this data call must be used. It only includes * the TDs for which a data call has been requested so far; it is not an * exhaustive list. */ vec trafficDescriptors; }; /** * NR Dual connectivity state */ enum NrDualConnectivityState: int8_t { /** * Enable NR dual connectivity. Enabled state does not mean dual connectivity * is active. It means device is allowed to connect to both primary and secondary. */ ENABLE = 1, /** * Disable NR dual connectivity. Disabled state does not mean secondary cell is released. * Modem will release it only if current bearer is released to avoid radio link failure. */ DISABLE = 2, /** * Disable NR dual connectivity and force secondary cell to be released if dual connectivity * was active. This may result in radio link failure. */ DISABLE_IMMEDIATE= 3, }; /** * Overwritten from @1.2::LinkCapacityEstimate to update LinkCapacityEstimate to 1.6 version. */ struct LinkCapacityEstimate { /** * Estimated downlink capacity in kbps. In case of a dual connected network, * this includes capacity of both primary and secondary. This bandwidth estimate shall be * the estimated maximum sustainable link bandwidth (as would be measured * at the Upper PDCP or SNDCP SAP). If the DL Aggregate Maximum Bit Rate is known, * this value shall not exceed the DL-AMBR for the Internet PDN connection. * This must be filled with 0 if network is not connected. */ uint32_t downlinkCapacityKbps; /** * Estimated uplink capacity in kbps. In case of a dual connected network, * this includes capacity of both primary and secondary. This bandwidth estimate shall be the * estimated maximum sustainable link bandwidth (as would be measured at the * Upper PDCP or SNDCP SAP). If the UL Aggregate Maximum Bit Rate is known, * this value shall not exceed the UL-AMBR for the Internet PDN connection. * This must be filled with 0 if network is not connected. */ uint32_t uplinkCapacityKbps; /** * Estimated downlink capacity of secondary carrier in a dual connected NR mode in kbps. * This bandwidth estimate shall be the estimated maximum sustainable link bandwidth * (as would be measured at the Upper PDCP or SNDCP SAP). This is valid only * in if device is connected to both primary and secodary in dual connected * mode. This must be filled with 0 if secondary is not connected or if * modem does not support this feature. */ uint32_t secondaryDownlinkCapacityKbps; /** * Estimated uplink capacity secondary carrier in a dual connected NR mode in kbps. * This bandwidth estimate shall be the estimated * maximum sustainable link bandwidth (as would be measured at the Upper PDCP or SNDCP SAP). * This is valid only in if device is connected to both primary and secodary in dual connected * mode.This must be filled with 0 if secondary is not connected or if modem * does not support this feature. */ uint32_t secondaryUplinkCapacityKbps; }; enum DataThrottlingAction : int8_t { /* Clear all existing data throttling. */ NO_DATA_THROTTLING = 0, /** * Enact secondary carrier data throttling and remove any existing data * throttling on anchor carrier. */ THROTTLE_SECONDARY_CARRIER = 1, /** * Enact anchor carrier data throttling and disable data on secondary * carrier if currently enabled. */ THROTTLE_ANCHOR_CARRIER = 2, /** * Immediately hold on to current level of throttling. */ HOLD = 3 }; /** * Defines the values for VoPS indicator of NR as per 3gpp spec 24.501 sec 9.10.3.5 */ enum VopsIndicator : uint8_t { /** IMS voice over PS session not supported */ VOPS_NOT_SUPPORTED = 0, /** IMS voice over PS session supported over 3GPP access */ VOPS_OVER_3GPP = 1, /** IMS voice over PS session supported over non-3GPP access */ VOPS_OVER_NON_3GPP = 2, }; /** * Defines the values for emergency service indicator of NR * as per 3gpp spec 24.501 sec 9.10.3.5 */ enum EmcIndicator : uint8_t { /** Emergency services not supported */ EMC_NOT_SUPPORTED = 0, /** Emergency services supported in NR connected to 5GCN only */ EMC_NR_CONNECTED_TO_5GCN = 1, /** Emergency services supported in E-UTRA connected to 5GCN only */ EMC_EUTRA_CONNECTED_TO_5GCN = 2, /** Emergency services supported in NR connected to 5GCN and E-UTRA connected to 5GCN */ EMC_BOTH_NR_EUTRA_CONNECTED_TO_5GCN = 3 }; /** * Defines the values for emergency service fallback indicator of NR * as per 3gpp spec 24.501 sec 9.10.3.5 */ enum EmfIndicator : uint8_t { /** Emergency services fallback not supported */ EMF_NOT_SUPPORTED = 0, /** Emergency services fallback supported in NR connected to 5GCN only */ EMF_NR_CONNECTED_TO_5GCN = 1, /** Emergency services fallback supported in E-UTRA connected to 5GCN only */ EMF_EUTRA_CONNECTED_TO_5GCN = 2, /** * Emergency services fallback supported in NR connected to 5GCN and E-UTRA * connected to 5GCN. */ EMF_BOTH_NR_EUTRA_CONNECTED_TO_5GCN = 3 }; /** * Type to define the NR specific network capabilities for voice over PS including * emergency and normal voice calls. */ struct NrVopsInfo { /** * This indicates if the camped network supports VoNR services, and what kind of services * it supports. This information is received from NR network during NR NAS registration * procedure through NR REGISTRATION ACCEPT. * Refer 3GPP 24.501 EPS 5GS network feature support -> IMS VoPS */ VopsIndicator vopsSupported; /** * This indicates if the camped network supports VoNR emergency service. This information * is received from NR network through two sources: * a. During NR NAS registration procedure through NR REGISTRATION ACCEPT. * Refer 3GPP 24.501 EPS 5GS network feature support -> EMC * b. In case the device is not registered on the network. * Refer 3GPP 38.331 SIB1 : ims-EmergencySupport * If device is registered on NR, then this field indicates whether the cell * supports IMS emergency bearer services for UEs in limited service mode. */ EmcIndicator emcSupported; /** * This indicates if the camped network supports VoNR emergency service fallback. This * information is received from NR network during NR NAS registration procedure through * NR REGISTRATION ACCEPT. * Refer 3GPP 24.501 EPS 5GS network feature support -> EMF */ EmfIndicator emfSupported; }; struct LteSignalStrength { @1.0::LteSignalStrength base; /** * CSI channel quality indicator (CQI) table index. There are multiple CQI tables. * The definition of CQI in each table is different. * * Reference: 3GPP TS 136.213 section 7.2.3. * * Range [1, 6], INT_MAX means invalid/unreported. */ uint32_t cqiTableIndex; }; struct NrSignalStrength { @1.4::NrSignalStrength base; /** * CSI channel quality indicator (CQI) table index. There are multiple CQI tables. * The definition of CQI in each table is different. * * Reference: 3GPP TS 138.214 section 5.2.2.1. * * Range [1, 3], INT_MAX means invalid/unreported. */ uint32_t csiCqiTableIndex; /** * CSI channel quality indicator (CQI) for all subbands. * * If the CQI report is for the entire wideband, a single CQI index is provided. * If the CQI report is for all subbands, one CQI index is provided for each subband, * in ascending order of subband index. * If CQI is not available, the CQI report is empty. * * Reference: 3GPP TS 138.214 section 5.2.2.1. * * Range [0, 15], 0xFF means invalid/unreported. */ vec csiCqiReport; }; /** * Overwritten from @1.4::SignalStrength in order to update LteSignalStrength and NrSignalStrength. */ 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; }; /** Overwritten from @1.5::CellInfoLte in order to update LteSignalStrength. */ struct CellInfoLte { CellIdentityLte cellIdentityLte; LteSignalStrength signalStrengthLte; }; /** Overwritten from @1.5::CellInfoNr in order to update NrSignalStrength. */ struct CellInfoNr { CellIdentityNr cellIdentityNr; NrSignalStrength signalStrengthNr; }; /** Overwritten from @1.5::CellInfo in order to update LteSignalStrength and NrSignalStrength. */ struct CellInfo { /** * True if this cell is registered false if not registered. */ bool registered; /** * Connection status for the cell. */ CellConnectionStatus connectionStatus; safe_union CellInfoRatSpecificInfo { /** * 3gpp CellInfo types. */ CellInfoGsm gsm; CellInfoWcdma wcdma; CellInfoTdscdma tdscdma; CellInfoLte lte; CellInfoNr nr; /** * 3gpp2 CellInfo types; */ CellInfoCdma cdma; } ratSpecificInfo; }; /** Overwritten from @1.5::NetworkScanResult in order to update the CellInfo to 1.6 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 networkInfos; }; /** * Overwritten from @1.5::RegStateResult to 1.6 to support NrRegistrationInfo * version. */ struct RegStateResult { /** * Registration state * * If the RAT is indicated as a GERAN, UTRAN, or CDMA2000 technology, this value reports * registration in the Circuit-switched domain. * If the RAT is indicated as an EUTRAN, NGRAN, or another technology that does not support * circuit-switched services, this value reports registration in the Packet-switched domain. */ RegState regState; /** * Indicates the available voice radio technology, valid values as defined by RadioTechnology, * except LTE_CA, which is no longer a valid value on 1.5 or above. When the device is on * carrier aggregation, vendor RIL service should properly report multiple PhysicalChannelConfig * elements through IRadio::currentPhysicalChannelConfigs_1_6. */ RadioTechnology rat; /** * Cause code reported by the network in case registration fails. This will be a mobility * management cause code defined for MM, GMM, MME or equivalent as appropriate for the RAT. */ RegistrationFailCause reasonForDenial; /** CellIdentity */ CellIdentity cellIdentity; /** * The most-recent PLMN-ID upon which the UE registered (or attempted to register if a failure * is reported in the reasonForDenial field). This PLMN shall be in standard format consisting * of a 3 digit MCC concatenated with a 2 or 3 digit MNC. */ string registeredPlmn; /** * Access-technology-specific registration information, such as for CDMA2000. */ safe_union AccessTechnologySpecificInfo { Monostate noinit; Cdma2000RegistrationInfo cdmaInfo; EutranRegistrationInfo eutranInfo; /** * Network capabilities for voice over PS services. This info is valid only on NR * network and must be present when the device is camped on NR. VopsInfo must be * empty when the device is not camped on NR. */ NrVopsInfo ngranNrVopsInfo; /** * True if the dual transfer mode is supported. * Refer to 3GPP TS 44.108 section 3.4.25.3 */ bool geranDtmSupported; } accessTechnologySpecificInfo; }; struct Call { @1.2::Call base; /** * Forwarded number. It can set only one forwarded number based on 3GPP rule of the CS. * Reference: 3GPP TS 24.008 section 10.5.4.21b */ string forwardedNumber; }; /** * This safe_union represents an optional slice info */ safe_union OptionalSliceInfo { Monostate noinit; SliceInfo value; }; /** * This struct represents a S-NSSAI as defined in 3GPP TS 24.501. */ struct SliceInfo { /** * The type of service provided by the slice. * * see: 3GPP TS 24.501 Section 9.11.2.8. */ SliceServiceType sst; /** * Slice differentiator is the identifier of a slice that has * SliceServiceType as SST. A value of -1 indicates that there is * no corresponding SliceInfo of the HPLMN. * * see: 3GPP TS 24.501 Section 9.11.2.8. */ int32_t sliceDifferentiator; /** * This SST corresponds to a SliceInfo (S-NSSAI) of the HPLMN; the SST is * mapped to this value. * * see: 3GPP TS 24.501 Section 9.11.2.8. */ SliceServiceType mappedHplmnSst; /** * Present only if both sliceDifferentiator and mappedHplmnSst are also * present. This SD corresponds to a SliceInfo (S-NSSAI) of the HPLMN; * sliceDifferentiator is mapped to this value. A value of -1 indicates that * there is no corresponding SliceInfo of the HPLMN. * * see: 3GPP TS 24.501 Section 9.11.2.8. */ int32_t mappedHplmnSD; /** * Field to indicate the current status of the slice. */ SliceStatus status; }; /** * Slice/Service Type as defined in 3GPP TS 23.501. */ enum SliceServiceType : uint8_t { /* Not specified */ NONE = 0, /* Slice suitable for the handling of 5G enhanced Mobile Broadband */ EMBB = 1, /** * Slice suitable for the handling of ultra-reliable low latency * communications */ URLLC = 2, /* Slice suitable for the handling of massive IoT */ MIOT = 3, }; /** * Expose more setup data call failures. */ enum DataCallFailCause : @1.4::DataCallFailCause { /** * Data call fail due to the slice not being allowed for the data call. */ SLICE_REJECTED = 0x8CC, /** * No matching rule available for the request, and match-all rule is not allowed for it. */ MATCH_ALL_RULE_NOT_ALLOWED = 0x8CD, /** * If connection failed for all matching URSP rules. */ ALL_MATCHING_RULES_FAILED = 0x8CE, }; struct PhysicalChannelConfig { /** Connection status for cell. Valid values are PRIMARY_SERVING and SECONDARY_SERVING */ CellConnectionStatus status; /** The radio technology for this physical channel */ RadioTechnology rat; /** Downlink Absolute Radio Frequency Channel Number */ int32_t downlinkChannelNumber; /** Uplink Absolute Radio Frequency Channel Number */ int32_t uplinkChannelNumber; /** Downlink cell bandwidth, in kHz */ int32_t cellBandwidthDownlinkKhz; /** Uplink cell bandwidth, in kHz */ int32_t cellBandwidthUplinkKhz; /** * A list of data calls mapped to this physical channel. The context id must match the cid of * @1.5::SetupDataCallResult. An empty list means the physical channel has no data call mapped * to it. */ vec 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, 1007]. * Reference: 3GPP TS 38.211 section 7.4.2.1. */ uint32_t physicalCellId; /** * The frequency band to scan. */ safe_union Band { /** Valid only if radioAccessNetwork = GERAN. */ GeranBands geranBand; /** Valid only if radioAccessNetwork = UTRAN. */ UtranBands utranBand; /** Valid only if radioAccessNetwork = EUTRAN. */ EutranBands eutranBand; /** Valid only if radioAccessNetwork = NGRAN. */ NgranBands ngranBand; } band; }; /** * Extended from @1.5 NgranBands * IRadio 1.6 supports NGRAN bands up to V16.5.0 */ enum NgranBands : @1.5::NgranBands { /** 3GPP TS 38.101-1, Table 5.2-1: FR1 bands */ BAND_26 = 26, BAND_46 = 46, BAND_53 = 53, BAND_96 = 96, }; /** * This safe_union represents an optional DNN. DNN stands for Data Network Name * and represents an APN as defined in 3GPP TS 23.003. */ safe_union OptionalDnn { Monostate noinit; string value; }; /** * This safe_union represents an optional OsAppId. */ safe_union OptionalOsAppId { Monostate noinit; OsAppId value; }; /** * This safe_union represents an optional TrafficDescriptor. */ safe_union OptionalTrafficDescriptor { Monostate noinit; TrafficDescriptor value; }; /** * This struct represents a traffic descriptor. A valid struct must have at least * one of the optional values present. This is based on the definition of traffic * descriptor in TS 24.526 Section 5.2. */ struct TrafficDescriptor { /** * DNN stands for Data Network Name and represents an APN as defined in * 3GPP TS 23.003. */ OptionalDnn dnn; /** * Indicates the OsId + OsAppId (used as category in Android). */ OptionalOsAppId osAppId; }; /** * This struct represents the OsId + OsAppId as defined in TS 24.526 Section 5.2 */ struct OsAppId { /** * Byte array representing OsId + OsAppId. The minimum length of the array is * 18 and maximum length is 272 (16 bytes for OsId + 1 byte for OsAppId length * + up to 255 bytes for OsAppId). */ vec osAppId; }; /** * This struct represents the current slicing configuration. */ struct SlicingConfig { /** * This vector contains the current URSP rules. Empty vector represents that no * rules are configured. */ vec urspRules; /** * List of all slices. */ vec sliceInfo; }; /** * This struct represents a single URSP rule as defined in 3GPP TS 24.526. */ struct UrspRule { /** * Precedence value in the range of 0 to 255. Higher value has lower * precedence. */ uint8_t precedence; /** * Used as a matcher for network requests. */ vec trafficDescriptors; /** * List of routes (connection parameters) that must be used for requests * matching a trafficDescriptor. */ vec routeSelectionDescriptor; }; /** * This struct represents a single route selection descriptor as defined in * 3GPP TS 24.526. */ struct RouteSelectionDescriptor { /** * Precedence value in the range of 0 to 255. Higher value has lower * precedence. */ uint8_t precedence; /** * Valid values are IP, IPV6 and IPV4V6. */ OptionalPdpProtocolType sessionType; OptionalSscMode sscMode; /** * There can be 0 or more SliceInfo specified in a route descriptor. */ vec sliceInfo; /** * DNN stands for Data Network Name and represents an APN as defined in * 3GPP TS 23.003. There can be 0 or more DNNs specified in a route * descriptor. */ vec dnn; }; /** * This safe_union represents an optional PdpProtocolType. */ safe_union OptionalPdpProtocolType { Monostate noinit; PdpProtocolType value; }; /** * This safe_union represents an optional SscMode. */ safe_union OptionalSscMode { Monostate noinit; SscMode value; }; enum SliceStatus : int8_t { UNKNOWN, CONFIGURED, // Configured but not allowed or rejected yet ALLOWED, // Allowed to be used REJECTED_NOT_AVAILABLE_IN_PLMN, // Rejected because not available in PLMN REJECTED_NOT_AVAILABLE_IN_REG_AREA, // Rejected because not available in reg area DEFAULT_CONFIGURED, // Considered valid when configured/allowed slices are not available }; /** * Enum representing session and service continuity mode as defined in * 3GPP TS 23.501. */ enum SscMode : int8_t { MODE_1 = 1, MODE_2 = 2, MODE_3 = 3, }; /** * Public key type from carrier certificate. */ enum PublicKeyType : int8_t { EPDG = 1, // Key type to be used for ePDG WLAN = 2, // Key type to be used for WLAN }; /** * Carrier specific Information sent by the carrier, * which will be used to encrypt the IMSI and IMPI. */ struct ImsiEncryptionInfo { @1.1::ImsiEncryptionInfo base; PublicKeyType keyType; // Public key type }; /** * Phonebook-record-information specified by EF_ADN(Abbreviated dialing numbers) * record of SIM as per 3GPP spec 31.102 v15 Section-4.4.2.3. */ struct PhonebookRecordInfo { /** Record index. 0 is used to insert a record */ uint32_t recordId; /** Alpha identifier, empty string if no value */ string name; /** Dialling number, empty string if no value */ string number; /** Email addresses */ vec emails; /** Additional numbers */ vec additionalNumbers; }; struct PhonebookCapacity { /** * Maximum number of ADN records possible in the SIM phonebook * Needs to be non-negative */ int32_t maxAdnRecords; /** * Used ADN records in the SIM phonebook * Needs to be non-negative */ int32_t usedAdnRecords; /** * Maximum email records possible in the SIM phonebook * Needs to be non-negative */ int32_t maxEmailRecords; /** * Used email records in the SIM phonebook * Needs to be non-negative */ int32_t usedEmailRecords; /** * Maximum additional number records possible in the SIM phonebook * Needs to be non-negative */ int32_t maxAdditionalNumberRecords; /** * Used additional number records in the SIM phonebook * Needs to be non-negative */ int32_t usedAdditionalNumberRecords; /** * Maximum name length possible in the SIM phonebook * Needs to be non-negative */ int32_t maxNameLen; /** * Maximum number length possible in the SIM phonebook * Needs to be non-negative */ int32_t maxNumberLen; /** * Maximum email length possible in the SIM phonebook * Needs to be non-negative */ int32_t maxEmailLen; /** * Maximum additional number length possible in the SIM phonebook * Needs to be non-negative */ int32_t maxAdditionalNumberLen; }; /** * Enum representing the status of the received PB indication, * PB_RECEIVED_OK indicates this retrieval is fine * PB_RECEIVED_ERROR indicates one error happens, in general, the process * can't be restored soon. * PB_RECEIVED_ABORT indicates the process is interrupted, in this case, * modem might need resources and interrupt the current process, or it is * timed out to receive all indications, and client can retry soon. * PB_RECEIVED_FINAL indicates the whole process is finished with a full * chunk of phonebook data, means this is a last indication with the left * data. */ enum PbReceivedStatus : int8_t { PB_RECEIVED_OK = 1, PB_RECEIVED_ERROR = 2, PB_RECEIVED_ABORT = 3, PB_RECEIVED_FINAL = 4, };