mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-02-01 16:50:18 +00:00
Add Multi-PLMN and CSG support
Non-functional changes:
-Clarify that the MCC+MNC in the CellIdentity should be used to
report the Primary PLMN only; (this PLMN is globally unique, and
can be used to construct a CGI/ECGI whereas other PLMN-IDs cannot).
-Add clarification for the reporting of multi-PLMN 5G networks.
Functional changes:
-Add a list of PLMNs for MOCN Networks. This allows cells that are
shared by multiple operators to be properly reported.
-Add support for Closed Subscriber Group reporting to allow
identification of small-cell deployments.
Bug: 135921133
Test: make VtsHalRadioV1_5Target
&& make aosp_cf_x86_64_phone-userdebug
Change-Id: Ibb0682de8ae9c4421e79086773c977a4e76ac4f1
This commit is contained in:
committed by
Sarah Chin
parent
8f6b67b0a6
commit
500733c459
@@ -666,10 +666,10 @@ def77c7db95d374f11a111bfc4ed60f92451303642a43276c4e291988fcee625 android.hardwar
|
||||
##
|
||||
# BEGIN Radio HAL Merge Conflict Avoidance Buffer - STOPSHIP if present
|
||||
##
|
||||
b3f250fe4f5f01ea3a2387eb7ae7e975699f6871e09b797d5ebfe18c2a489e98 android.hardware.radio@1.5::types
|
||||
b48e25c1b90da7a011ccfd76d9e551c105783ef2b9fea4921d4fc5978b215e98 android.hardware.radio@1.5::types
|
||||
6268d208631b21d1e85bfad338642ac5ca7ac6c83b411283515a4342b5d673f7 android.hardware.radio@1.5::IRadio
|
||||
20d52e66fd548f89bcb98cda42749a591ce8f439a2a7148617adac0c967ad937 android.hardware.radio@1.5::IRadioIndication
|
||||
1344e7cfaa2cf259b05ea4f65a731552f0254df6604938cf8be94e04fd62a6a9 android.hardware.radio@1.5::IRadioResponse
|
||||
e96ae1c3a9c0689002ec2318e9c587f4f607c16a75a3cd38788b77eb91072021 android.hardware.radio@1.5::IRadioIndication
|
||||
64e06cd5251bec38c402f71d05a6d52b89819a20c9099a192a694059ce4336fc android.hardware.radio@1.5::IRadioResponse
|
||||
5971a891d7d8843e9fb9f44583a9a0a265ec42fd5e4e1c95c9803454d21fabf7 android.hardware.radio.config@1.3::types
|
||||
a2977755bc5f1ef47f04b7f2400632efda6218e1515dba847da487145cfabc4f android.hardware.radio.config@1.3::IRadioConfig
|
||||
742360c775313438b0f82256eac62fb5bbc76a6ae6f388573f3aa142fb2c1eea android.hardware.radio.config@1.3::IRadioConfigIndication
|
||||
|
||||
@@ -76,4 +76,23 @@ interface IRadioIndication extends @1.4::IRadioIndication {
|
||||
*/
|
||||
oneway barringInfoChanged(
|
||||
RadioIndicationType type, CellIdentity cellIdentity, vec<BarringInfo> barringInfos);
|
||||
|
||||
/**
|
||||
* Report all of the current cell information known to the radio.
|
||||
*
|
||||
* This indication is updated from IRadioIndication@1.4 to report the @1.5 version of
|
||||
* CellInfo.
|
||||
*
|
||||
* @param type Type of radio indication
|
||||
* @param records Current cell information
|
||||
*/
|
||||
oneway cellInfoList_1_5(RadioIndicationType type, vec<CellInfo> records);
|
||||
|
||||
/**
|
||||
* Incremental network scan results.
|
||||
*
|
||||
* This indication is updated from IRadioIndication@1.4 to report the @1.5 version of
|
||||
* CellInfo.
|
||||
*/
|
||||
oneway networkScanResult_1_5(RadioIndicationType type, NetworkScanResult result);
|
||||
};
|
||||
|
||||
@@ -19,6 +19,7 @@ package android.hardware.radio@1.5;
|
||||
import @1.0::RadioResponseInfo;
|
||||
import @1.4::IRadioResponse;
|
||||
import @1.5::BarringInfo;
|
||||
import @1.5::CellInfo;
|
||||
import @1.5::SetupDataCallResult;
|
||||
import @1.5::RegStateResult;
|
||||
|
||||
@@ -198,4 +199,17 @@ interface IRadioResponse extends @1.4::IRadioResponse {
|
||||
*/
|
||||
oneway getDataRegistrationStateResponse_1_5(RadioResponseInfo info,
|
||||
RegStateResult dataRegResponse);
|
||||
|
||||
/**
|
||||
* This is identitcal to getCellInfoListResponse_1_4 but uses an updated version of CellInfo.
|
||||
*
|
||||
* @param info Response info struct containing response type, serial no. and error
|
||||
* @param cellInfo List of current cell information known to radio
|
||||
*
|
||||
* Valid errors returned:
|
||||
* RadioError:NONE
|
||||
* RadioError:RADIO_NOT_AVAILABLE
|
||||
* RadioError:INTERNAL_ERR
|
||||
*/
|
||||
oneway getCellInfoListResponse_1_5(RadioResponseInfo info, vec<CellInfo> cellInfo);
|
||||
};
|
||||
|
||||
@@ -19,21 +19,32 @@ package android.hardware.radio@1.5;
|
||||
import @1.0::ApnAuthType;
|
||||
import @1.0::DataProfileId;
|
||||
import @1.0::DataProfileInfoType;
|
||||
import @1.0::CdmaSignalStrength;
|
||||
import @1.0::EvdoSignalStrength;
|
||||
import @1.0::GsmSignalStrength;
|
||||
import @1.0::LteSignalStrength;
|
||||
import @1.0::RadioAccessFamily;
|
||||
import @1.0::RadioError;
|
||||
import @1.0::RegState;
|
||||
import @1.0::TimeStampType;
|
||||
import @1.1::EutranBands;
|
||||
import @1.1::GeranBands;
|
||||
import @1.1::RadioAccessNetworks;
|
||||
import @1.1::RadioAccessSpecifier;
|
||||
import @1.1::ScanStatus;
|
||||
import @1.1::ScanType;
|
||||
import @1.1::UtranBands;
|
||||
import @1.2::CellConnectionStatus;
|
||||
import @1.2::CellIdentityCdma;
|
||||
import @1.2::CellIdentityGsm;
|
||||
import @1.2::CellIdentityWcdma;
|
||||
import @1.2::CellIdentityTdscdma;
|
||||
import @1.2::CellIdentityLte;
|
||||
import @1.2::CellInfoCdma;
|
||||
import @1.2::IndicationFilter;
|
||||
import @1.2::NetworkScanRequest;
|
||||
import @1.2::TdscdmaSignalStrength;
|
||||
import @1.2::WcdmaSignalStrength;
|
||||
import @1.4::AccessNetwork;
|
||||
import @1.4::ApnTypes;
|
||||
import @1.4::CellIdentityNr;
|
||||
@@ -42,6 +53,7 @@ import @1.4::DataConnActiveStatus;
|
||||
import @1.4::DataProfileInfo;
|
||||
import @1.4::LteVopsInfo;
|
||||
import @1.4::NrIndicators;
|
||||
import @1.4::NrSignalStrength;
|
||||
import @1.4::PdpProtocolType;
|
||||
import @1.4::RadioTechnology;
|
||||
|
||||
@@ -500,6 +512,166 @@ enum Domain : int32_t {
|
||||
PS = 1 << 1,
|
||||
};
|
||||
|
||||
struct ClosedSubscriberGroupInfo {
|
||||
/**
|
||||
* Indicates whether the cell is restricted to only CSG members. A cell not broadcasting the
|
||||
* CSG Indication but reporting CSG information is considered a Hybrid Cell.
|
||||
* Refer to the "csg-Indication" field in 3GPP TS 36.331 section 6.2.2
|
||||
* SystemInformationBlockType1.
|
||||
* Also refer to "CSG Indicator" in 3GPP TS 25.331 section 10.2.48.8.1 and TS 25.304.
|
||||
*/
|
||||
bool csgIndication;
|
||||
|
||||
/**
|
||||
* The human-readable name of the closed subscriber group operating this cell.
|
||||
* Refer to "hnb-Name" in TS 36.331 section 6.2.2 SystemInformationBlockType9.
|
||||
* Also refer to "HNB Name" in 3GPP TS25.331 section 10.2.48.8.23 and TS 23.003 section 4.8.
|
||||
*/
|
||||
string homeNodebName;
|
||||
|
||||
/**
|
||||
* The identity of the closed subscriber group that the cell belongs to.
|
||||
* Refer to "CSG-Identity" in TS 36.336 section 6.3.4.
|
||||
* Also refer to "CSG Identity" in 3GPP TS 25.331 section 10.3.2.8 and TS 23.003 section 4.7.
|
||||
*/
|
||||
int32_t csgIdentity;
|
||||
};
|
||||
|
||||
safe_union OptionalCsgInfo {
|
||||
/**
|
||||
* If no CSG info is provided by the cell, then this structure shall be present.
|
||||
*/
|
||||
Monostate noinit;
|
||||
|
||||
/**
|
||||
* If CSG info is provided by the cell, this structure shall be present.
|
||||
*/
|
||||
ClosedSubscriberGroupInfo csgInfo;
|
||||
};
|
||||
|
||||
struct CellIdentityGsm {
|
||||
/**
|
||||
* The fields "mcc" and "mnc" must contain the PLMN-ID of the primary PLMN of this cell.
|
||||
*/
|
||||
@1.2::CellIdentityGsm base;
|
||||
|
||||
/** Additional PLMN-IDs beyond the primary PLMN broadcast for this cell */
|
||||
vec<string> additionalPlmns;
|
||||
};
|
||||
|
||||
struct CellIdentityWcdma {
|
||||
/**
|
||||
* The fields "mcc" and "mnc" must contain the PLMN-ID of the primary PLMN of this cell.
|
||||
*/
|
||||
@1.2::CellIdentityWcdma base;
|
||||
|
||||
/** Additional PLMN-IDs beyond the primary PLMN broadcast for this cell */
|
||||
vec<string> additionalPlmns;
|
||||
|
||||
/** Information about any closed subscriber group ID for this cell */
|
||||
OptionalCsgInfo optionalCsgInfo;
|
||||
};
|
||||
|
||||
struct CellIdentityTdscdma {
|
||||
/**
|
||||
* The fields "mcc" and "mnc" must contain the PLMN-ID of the primary PLMN of this cell.
|
||||
*/
|
||||
@1.2::CellIdentityTdscdma base;
|
||||
|
||||
/** Additional PLMN-IDs beyond the primary PLMN broadcast for this cell */
|
||||
vec<string> additionalPlmns;
|
||||
|
||||
/** Information about any closed subscriber group ID for this cell */
|
||||
OptionalCsgInfo optionalCsgInfo;
|
||||
};
|
||||
|
||||
struct CellIdentityLte {
|
||||
/**
|
||||
* The fields "mcc" and "mnc" must contain the PLMN-ID of the primary PLMN of this cell.
|
||||
*/
|
||||
@1.2::CellIdentityLte base;
|
||||
|
||||
/** Additional PLMN-IDs beyond the primary PLMN broadcast for this cell */
|
||||
vec<string> additionalPlmns;
|
||||
|
||||
/** Information about any closed subscriber group ID for this cell */
|
||||
OptionalCsgInfo optionalCsgInfo;
|
||||
};
|
||||
|
||||
/**
|
||||
* The CellIdentity structure should be reported once for each element of the PLMN-IdentityInfoList
|
||||
* broadcast in SIB1 CellAccessRelatedInfo as per 3GPP TS 38.331 Section 6.3.2.
|
||||
*/
|
||||
struct CellIdentityNr {
|
||||
/**
|
||||
* The fields "mcc" and "mnc" must contain the PLMN-ID of the primary PLMN of this cell.
|
||||
*/
|
||||
@1.4::CellIdentityNr base;
|
||||
|
||||
/** Additional PLMN-IDs beyond the primary PLMN broadcast for this cell */
|
||||
vec<string> additionalPlmns;
|
||||
};
|
||||
|
||||
struct CellInfoGsm {
|
||||
CellIdentityGsm cellIdentityGsm;
|
||||
GsmSignalStrength signalStrengthGsm;
|
||||
};
|
||||
|
||||
struct CellInfoWcdma {
|
||||
CellIdentityWcdma cellIdentityWcdma;
|
||||
WcdmaSignalStrength signalStrengthWcdma;
|
||||
};
|
||||
|
||||
struct CellInfoTdscdma {
|
||||
CellIdentityTdscdma cellIdentityTdscdma;
|
||||
TdscdmaSignalStrength signalStrengthTdscdma;
|
||||
};
|
||||
|
||||
struct CellInfoLte {
|
||||
CellIdentityLte cellIdentityLte;
|
||||
LteSignalStrength signalStrengthLte;
|
||||
};
|
||||
|
||||
struct CellInfoNr {
|
||||
CellIdentityNr cellIdentityNr;
|
||||
NrSignalStrength signalStrengthNr;
|
||||
};
|
||||
|
||||
struct CellInfo {
|
||||
/**
|
||||
* 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;
|
||||
/**
|
||||
* 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;
|
||||
};
|
||||
|
||||
/** A union representing the CellIdentity of a single cell */
|
||||
safe_union CellIdentity {
|
||||
Monostate noinit;
|
||||
@@ -825,3 +997,21 @@ struct RegStateResult {
|
||||
} eutranInfo;
|
||||
} accessTechnologySpecificInfo;
|
||||
};
|
||||
|
||||
/** Overwritten from @1.4::NetworkScanResult in order to update the CellInfo to 1.5 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;
|
||||
};
|
||||
|
||||
@@ -566,6 +566,11 @@ class RadioResponse_v1_5 : public ::android::hardware::radio::V1_5::IRadioRespon
|
||||
Return<void> getDataRegistrationStateResponse_1_5(
|
||||
const RadioResponseInfo& info,
|
||||
const ::android::hardware::radio::V1_5::RegStateResult& regResponse);
|
||||
|
||||
Return<void> getCellInfoListResponse_1_5(
|
||||
const RadioResponseInfo& info,
|
||||
const ::android::hardware::hidl_vec<::android::hardware::radio::V1_5::CellInfo>&
|
||||
cellInfo);
|
||||
};
|
||||
|
||||
/* Callback class for radio indication */
|
||||
@@ -580,6 +585,15 @@ class RadioIndication_v1_5 : public ::android::hardware::radio::V1_5::IRadioIndi
|
||||
/* 1.5 Api */
|
||||
Return<void> uiccApplicationsEnablementChanged(RadioIndicationType type, bool enabled);
|
||||
|
||||
Return<void> networkScanResult_1_5(
|
||||
RadioIndicationType type,
|
||||
const ::android::hardware::radio::V1_5::NetworkScanResult& result);
|
||||
|
||||
Return<void> cellInfoList_1_5(
|
||||
RadioIndicationType type,
|
||||
const ::android::hardware::hidl_vec<::android::hardware::radio::V1_5::CellInfo>&
|
||||
records);
|
||||
|
||||
/* 1.4 Api */
|
||||
Return<void> currentEmergencyNumberList(
|
||||
RadioIndicationType type,
|
||||
|
||||
@@ -350,3 +350,16 @@ Return<void> RadioIndication_v1_5::barringInfoChanged(
|
||||
/*barringInfos*/) {
|
||||
return Void();
|
||||
}
|
||||
|
||||
Return<void> RadioIndication_v1_5::networkScanResult_1_5(
|
||||
RadioIndicationType /*type*/,
|
||||
const ::android::hardware::radio::V1_5::NetworkScanResult& /*result*/) {
|
||||
return Void();
|
||||
}
|
||||
|
||||
Return<void> RadioIndication_v1_5::cellInfoList_1_5(
|
||||
RadioIndicationType /*type*/,
|
||||
const ::android::hardware::hidl_vec<
|
||||
::android::hardware::radio::V1_5::CellInfo>& /*records*/) {
|
||||
return Void();
|
||||
}
|
||||
|
||||
@@ -985,3 +985,10 @@ Return<void> RadioResponse_v1_5::getDataRegistrationStateResponse_1_5(
|
||||
parent_v1_5.notify(info.serial);
|
||||
return Void();
|
||||
}
|
||||
|
||||
Return<void> RadioResponse_v1_5::getCellInfoListResponse_1_5(
|
||||
const RadioResponseInfo& /*info*/,
|
||||
const ::android::hardware::hidl_vec<
|
||||
::android::hardware::radio::V1_5::CellInfo>& /*cellInfo*/) {
|
||||
return Void();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user