blob: f10d753cb94870f787d0ba4a479fbb5341c4b05f [file] [log] [blame]
/*
* Copyright (C) 2017 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.2;
import @1.0::Call;
import @1.0::CardState;
import @1.0::CardStatus;
import @1.0::CdmaSignalStrength;
import @1.0::CellIdentityCdma;
import @1.0::CellIdentityGsm;
import @1.0::CellIdentityLte;
import @1.0::CellIdentityTdscdma;
import @1.0::CellIdentityWcdma;
import @1.0::CellInfoTdscdma;
import @1.0::CellInfoType;
import @1.0::EvdoSignalStrength;
import @1.0::GsmSignalStrength;
import @1.0::LteSignalStrength;
import @1.0::RadioConst;
import @1.0::RadioError;
import @1.0::RegState;
import @1.0::SignalStrength;
import @1.0::TdScdmaSignalStrength;
import @1.0::TimeStampType;
import @1.0::WcdmaSignalStrength;
import @1.1::RadioAccessSpecifier;
import @1.1::ScanStatus;
import @1.1::ScanType;
enum RadioConst : @1.0::RadioConst {
RADIO_ACCESS_SPECIFIER_MAX_SIZE = 8,
};
/**
* values are in seconds
*/
enum ScanIntervalRange : int32_t {
MIN = 5,
MAX = 300,
};
/**
* value are in seconds
*/
enum MaxSearchTimeRange : int32_t {
MIN = 60,
MAX = 3600,
};
/**
* values are in seconds
*/
enum IncrementalResultsPeriodicityRange : int32_t {
MIN = 1,
MAX = 10,
};
enum CellConnectionStatus : int32_t {
/**
* Cell is not a serving cell.
*/
NONE = 0,
/**
* UE has connection to cell for signalling and possibly data (3GPP 36.331, 25.331).
*/
PRIMARY_SERVING,
/**
* UE has connection to cell for data (3GPP 36.331, 25.331).
*/
SECONDARY_SERVING,
};
/**
* Overwritten from @1.0::IndicationFilter in order to redefine ALL. In the future, this should
* be extended instead of overwritten.
*/
enum IndicationFilter : int32_t {
NONE = 0,
ALL = ~0,
/**
* When this bit is set, modem must send the signal strength update through
* IRadioIndication.currentSignalStrength() when all criteria specified by
* IRadio.setSignalStrengthReportingCriteria() are met.
*/
SIGNAL_STRENGTH = 1 << 0,
/**
* When this bit is set, modem must invoke IRadioIndication.networkStateChanged() when any field
* in VoiceRegStateResult or DataRegStateResult changes. When this bit is not set, modem must
* suppress IRadioIndication.networkStateChanged() when there are only changes from
* insignificant fields. Modem must invoke IRadioIndication.networkStateChanged() when
* significant fields are updated regardless of whether this bit is set.
*
* The following fields are considered significant: VoiceRegStateResult.regState,
* VoiceRegStateResult.rat, DataRegStateResult.regState, DataRegStateResult.rat.
*/
FULL_NETWORK_STATE = 1 << 1,
/**
* When this bit is set, modem must send IRadioIndication.dataCallListChanged() whenever any
* field in ITypes.SetupDataCallResult changes. When this bit is not set, modem must suppress
* the indication when the only changed field is 'active' (for data dormancy). For all other
* field changes, the modem must send IRadioIndication.dataCallListChanged() regardless of
* whether this bit is set.
*/
DATA_CALL_DORMANCY_CHANGED = 1 << 2,
/**
* When this bit is set, modem must send the link capacity update through
* IRadioIndication.currentLinkCapacityEstimate() when all criteria specified by
* IRadio.setLinkCapacityReportingCriteria() are met.
*/
LINK_CAPACITY_ESTIMATE = 1 << 3,
/**
* When this bit is set, the modem must send the physical channel configuration update through
* IRadioIndication.currentPhysicalChannelConfigs() when the configuration has changed. It is
* recommended that this be reported whenever link capacity or signal strength is reported.
*/
PHYSICAL_CHANNEL_CONFIG = 1 << 4,
};
/**
* Audio codec which is used on GSM, UMTS, and CDMA. These values must be opaque
* to the Android framework. Only for display.
*/
enum AudioQuality : int32_t {
/** Unspecified audio codec */
UNSPECIFIED,
/** AMR (Narrowband) audio codec */
AMR,
/** AMR (Wideband) audio codec */
AMR_WB,
/** GSM Enhanced Full-Rate audio codec */
GSM_EFR,
/** GSM Full-Rate audio codec */
GSM_FR,
/** GSM Half-Rate audio codec */
GSM_HR,
/** Enhanced Variable rate codec */
EVRC,
/** Enhanced Variable rate codec revision B */
EVRC_B,
/** Enhanced Variable rate codec (Wideband) */
EVRC_WB,
/** Enhanced Variable rate codec (Narrowband) */
EVRC_NW,
};
struct NetworkScanRequest {
ScanType type;
/**
* Time interval in seconds between the completion of one scan and the start of a subsequent scan.
* This field is only valid when 'type' is 'PERIODIC'.
* Range: ScanIntervalRange:MIN to ScanIntervalRange:MAX
*/
int32_t interval;
/**
* Networks with bands/channels to scan
* Maximum length of the vector is
* RadioConst:RADIO_ACCESS_SPECIFIER_MAX_SIZE
*/
vec<RadioAccessSpecifier> specifiers;
/**
* Maximum duration of the periodic search (in seconds).
* Expected range for the input is [MaxSearchTimeRange:MIN - MaxSearchTimeRange:MAX]
* If the search lasts maxSearchTime, it must be terminated.
*/
int32_t maxSearchTime;
/**
* Indicates whether the modem must report incremental results of the network scan
* to the client.
* FALSE – Incremental results must not be reported.
* TRUE – Incremental must be reported.
*/
bool incrementalResults;
/**
* Indicates the periodicity with which the modem must report incremental results to
* the client (in seconds).
* Expected range for the input is
* [IncrementalResultsPeriodicityRange:MIN - IncrementalResultsPeriodicityRange:MAX]
* This value must be less than or equal to maxSearchTime. If incremental results are
* not requested, implementations may ignore this value.
*/
int32_t incrementalResultsPeriodicity;
/**
* Describes the List of PLMN ids (MCC-MNC)
* If any PLMN of this list is found, search must end at that point and results with all
* PLMN found until that point should be sent as response.
* If the list is not sent, search to be completed until end and all PLMNs found to be
* reported.
*/
vec<string> mccMncs;
};
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;
};
struct CellIdentityOperatorNames {
/**
* Long alpha Operator Name String or Enhanced Operator Name String.
*/
string alphaLong;
/**
* Short alpha Operator Name String or Enhanced Operator Name String
*/
string alphaShort;
};
struct CellIdentityCdma {
@1.0::CellIdentityCdma base;
CellIdentityOperatorNames operatorNames;
};
struct CellIdentityGsm {
@1.0::CellIdentityGsm base;
CellIdentityOperatorNames operatorNames;
};
struct CellIdentityLte {
@1.0::CellIdentityLte base;
CellIdentityOperatorNames operatorNames;
/**
* Cell bandwidth, in kHz.
*/
int32_t bandwidth;
};
struct CellIdentityTdscdma {
@1.0::CellIdentityTdscdma base;
/**
* 16-bit UMTS Absolute RF Channel Number defined in TS 25.102 5.4.4; this value must be valid.
*/
int32_t uarfcn;
CellIdentityOperatorNames operatorNames;
};
struct CellIdentityWcdma {
@1.0::CellIdentityWcdma base;
CellIdentityOperatorNames operatorNames;
};
struct CellInfoGsm {
CellIdentityGsm cellIdentityGsm;
GsmSignalStrength signalStrengthGsm;
};
struct CellInfoWcdma {
CellIdentityWcdma cellIdentityWcdma;
WcdmaSignalStrength signalStrengthWcdma;
};
struct CellInfoCdma {
CellIdentityCdma cellIdentityCdma;
CdmaSignalStrength signalStrengthCdma;
EvdoSignalStrength signalStrengthEvdo;
};
struct CellInfoLte {
CellIdentityLte cellIdentityLte;
LteSignalStrength signalStrengthLte;
};
struct CellInfoTdscdma {
CellIdentityTdscdma cellIdentityTdscdma;
TdscdmaSignalStrength signalStrengthTdscdma;
};
struct CellInfo {
/**
* Cell type for selecting from union CellInfo.
*/
CellInfoType cellInfoType;
/**
* True if this cell is registered false if not registered.
*/
bool registered;
/**
* Type of time stamp represented by timeStamp.
*/
TimeStampType timeStampType;
/**
* Time in nanos as returned by ril_nano_time.
*/
uint64_t timeStamp;
/**
* Only one of the below vectors must be of size 1 based on the CellInfoType and others must be
* of size 0.
*/
vec<CellInfoGsm> gsm;
/**
* Valid only if type = cdma and size = 1 else must be empty.
*/
vec<CellInfoCdma> cdma;
/**
* Valid only if type = lte and size = 1 else must be empty.
*/
vec<CellInfoLte> lte;
/**
* Valid only if type = wcdma and size = 1 else must be empty.
*/
vec<CellInfoWcdma> wcdma;
/**
* Valid only if type = tdscdma and size = 1 else must be empty.
*/
vec<CellInfoTdscdma> tdscdma;
/**
* Connection status for the cell.
*/
CellConnectionStatus connectionStatus;
};
struct CardStatus {
@1.0::CardStatus base;
uint32_t physicalSlotId;
/**
* An Answer To Reset (ATR) is a message output by a Smart Card conforming to ISO/IEC 7816
* standards, following electrical reset of the card's chip. The ATR conveys information about
* the communication parameters proposed by the card, and the card's nature and state.
*
* This data is applicable only when cardState is CardState:PRESENT.
*/
string atr;
/**
* Integrated Circuit Card IDentifier (ICCID) is Unique Identifier of the SIM CARD. File is
* located in the SIM card at EFiccid (0x2FE2) as per ETSI 102.221. The ICCID is defined by
* the ITU-T recommendation E.118 ISO/IEC 7816.
*
* This data is applicable only when cardState is CardState:PRESENT.
*/
string iccid;
};
struct LinkCapacityEstimate {
/**
* Estimated downlink capacity in kbps. 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.
*/
uint32_t downlinkCapacityKbps;
/**
* Estimated uplink capacity in kbps. 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.
*/
uint32_t uplinkCapacityKbps;
};
struct PhysicalChannelConfig {
/**
* Connection status for cell. Valid values are PRIMARY_SERVING and SECONDARY_SERVING.
*/
CellConnectionStatus status;
/**
* Cell bandwidth, in kHz.
*/
int32_t cellBandwidthDownlink;
};
enum AccessNetwork : int32_t {
/** GSM EDGE Radio Access Network */
GERAN = 1,
/** Universal Terrestrial Radio Access Network */
UTRAN = 2,
/** Evolved Universal Terrestrial Radio Access Network */
EUTRAN = 3,
/** CDMA 2000 network */
CDMA2000 = 4,
/** Interworking Wireless LAN */
IWLAN = 5
};
enum DataRequestReason : int32_t {
/**
* The reason of the data request is normal
*/
NORMAL = 0x01,
/**
* The reason of the data request is device shutdown
*/
SHUTDOWN = 0x02,
/**
* The reason of the data request is IWLAN data handover to another transport
* (e.g. from cellular to wifi or vise versa)
*/
HANDOVER = 0x03,
};
struct Call {
@1.0::Call base;
AudioQuality audioQuality;
};
struct WcdmaSignalStrength {
@1.0::WcdmaSignalStrength base;
/**
* CPICH RSCP as defined in TS 25.215 5.1.1
* Valid values are (0-96, 255) as defined in TS 27.007 8.69
* INT_MAX denotes that the value is invalid/unreported.
*/
uint32_t rscp;
/**
* Ec/No value as defined in TS 25.215 5.1.5
* Valid values are (0-49, 255) as defined in TS 27.007 8.69
* INT_MAX denotes that the value is invalid/unreported.
*/
uint32_t ecno;
};
struct TdscdmaSignalStrength {
/**
* UTRA carrier RSSI as defined in TS 25.225 5.1.4
* Valid values are (0-31, 99) as defined in TS 27.007 8.5
* INT_MAX denotes that the value is invalid/unreported.
*/
uint32_t signalStrength;
/**
* Transport Channel BER as defined in TS 25.225 5.2.5
* Valid values are (0-7, 99) as defined in TS 27.007 8.5
* INT_MAX denotes that the value is invalid/unreported.
*/
uint32_t bitErrorRate;
/**
* P-CCPCH RSCP as defined in TS 25.225 5.1.1
* Valid values are (0-96, 255) as defined in TS 27.007 8.69
* INT_MAX denotes that the value is invalid/unreported.
*/
uint32_t rscp;
};
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;
};
struct CellIdentity {
/**
* Cell type for selecting from union CellInfo.
* Only one of the below vectors must be of size 1 based on a
* valid CellInfoType and others must be of size 0.
* If cell info type is NONE, then all the vectors must be of size 0.
*/
CellInfoType cellInfoType;
vec<CellIdentityGsm> cellIdentityGsm;
vec<CellIdentityWcdma> cellIdentityWcdma;
vec<CellIdentityCdma> cellIdentityCdma;
vec<CellIdentityLte> cellIdentityLte;
vec<CellIdentityTdscdma> cellIdentityTdscdma;
};
struct VoiceRegStateResult {
/**
* Valid reg states are NOT_REG_MT_NOT_SEARCHING_OP,
* REG_HOME, NOT_REG_MT_SEARCHING_OP, REG_DENIED,
* UNKNOWN, REG_ROAMING defined in RegState
*/
RegState regState;
/**
* Indicates the available voice radio technology, valid values as
* defined by RadioTechnology.
*/
int32_t rat;
/**
* concurrent services support indicator. if registered on a CDMA system.
* false - Concurrent services not supported,
* true - Concurrent services supported
*/
bool cssSupported;
/**
* TSB-58 Roaming Indicator if registered on a CDMA or EVDO system or -1 if not.
* Valid values are 0-255.
*/
int32_t roamingIndicator;
/**
* Indicates whether the current system is in the PRL if registered on a CDMA or EVDO system
* or -1 if not. 0=not in the PRL, 1=in the PRL
*/
int32_t systemIsInPrl;
/**
* Default Roaming Indicator from the PRL if registered on a CDMA or EVDO system or -1 if not.
* Valid values are 0-255.
*/
int32_t defaultRoamingIndicator;
/**
* reasonForDenial if registration state is 3
* (Registration denied) this is an enumerated reason why
* registration was denied. See 3GPP TS 24.008,
* 10.5.3.6 and Annex G.
* 0 - General
* 1 - Authentication Failure
* 2 - IMSI unknown in HLR
* 3 - Illegal MS
* 4 - Illegal ME
* 5 - PLMN not allowed
* 6 - Location area not allowed
* 7 - Roaming not allowed
* 8 - No Suitable Cells in this Location Area
* 9 - Network failure
* 10 - Persistent location update reject
* 11 - PLMN not allowed
* 12 - Location area not allowed
* 13 - Roaming not allowed in this Location Area
* 15 - No Suitable Cells in this Location Area
* 17 - Network Failure
* 20 - MAC Failure
* 21 - Sync Failure
* 22 - Congestion
* 23 - GSM Authentication unacceptable
* 25 - Not Authorized for this CSG
* 32 - Service option not supported
* 33 - Requested service option not subscribed
* 34 - Service option temporarily out of order
* 38 - Call cannot be identified
* 48-63 - Retry upon entry into a new cell
* 95 - Semantically incorrect message
* 96 - Invalid mandatory information
* 97 - Message type non-existent or not implemented
* 98 - Message type not compatible with protocol state
* 99 - Information element non-existent or not implemented
* 100 - Conditional IE error
* 101 - Message not compatible with protocol state
* 111 - Protocol error, unspecified
*/
int32_t reasonForDenial;
CellIdentity cellIdentity;
};
struct DataRegStateResult {
/**
* Valid reg states are NOT_REG_MT_NOT_SEARCHING_OP,
* REG_HOME, NOT_REG_MT_SEARCHING_OP, REG_DENIED,
* UNKNOWN, REG_ROAMING defined in RegState
*/
RegState regState;
/**
* Indicates the available data radio technology,
* valid values as defined by RadioTechnology.
*/
int32_t rat;
/**
* If registration state is 3 (Registration
* denied) this is an enumerated reason why
* registration was denied. See 3GPP TS 24.008,
* Annex G.6 "Additional cause codes for GMM".
* 7 == GPRS services not allowed
* 8 == GPRS services and non-GPRS services not allowed
* 9 == MS identity cannot be derived by the network
* 10 == Implicitly detached
* 14 == GPRS services not allowed in this PLMN
* 16 == MSC temporarily not reachable
* 40 == No PDP context activated
*/
int32_t reasonDataDenied;
/**
* The maximum number of simultaneous Data Calls must be established using setupDataCall().
*/
int32_t maxDataCalls;
CellIdentity cellIdentity;
};