blob: 1b697a95c7b7e65abe3c8b6dee1d1d0d0ccda188 [file] [log] [blame]
/*
* 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<string> localAddresses;
vec<string> 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<QosFilter> 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<LinkAddress> 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 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<QosSession> 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<TrafficDescriptor> 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<uint8_t> 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<CellInfo> 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<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, 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<uint8_t> 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<UrspRule> urspRules;
/**
* List of all slices.
*/
vec<SliceInfo> 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<TrafficDescriptor> trafficDescriptors;
/**
* List of routes (connection parameters) that must be used for requests
* matching a trafficDescriptor.
*/
vec<RouteSelectionDescriptor> 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> 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<string> 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<string> emails;
/** Additional numbers */
vec<string> 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,
};