/* * 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; };