Merge "Add CQI and CQI Table Index to Hal 1.6"

This commit is contained in:
Mingming Cai
2020-12-03 19:13:21 +00:00
committed by Gerrit Code Review
7 changed files with 247 additions and 2 deletions

View File

@@ -366,6 +366,20 @@ interface IRadio extends @1.5::IRadio {
*/
oneway getSystemSelectionChannels(int32_t serial);
/**
* Request all of the current cell information known to the radio. The radio
* must return list of all current cells, including the neighboring cells. If for a particular
* cell information isn't known then the appropriate unknown value will be returned.
* This does not cause or change the rate of unsolicited cellInfoList().
*
* This is identitcal to getCellInfoList in V1.0, but it requests updated version of CellInfo.
*
* @param serial Serial number of request.
*
* Response callback is IRadioResponse.getCellInfoListResponse()
*/
oneway getCellInfoList_1_6(int32_t serial);
/**
* Request current voice registration state.
*

View File

@@ -18,8 +18,10 @@ package android.hardware.radio@1.6;
import @1.0::RadioIndicationType;
import @1.5::IRadioIndication;
import @1.6::SetupDataCallResult;
import @1.6::CellInfo;
import @1.6::LinkCapacityEstimate;
import @1.6::NetworkScanResult;
import @1.6::SetupDataCallResult;
/**
* Interface declaring unsolicited radio indications.
@@ -67,4 +69,23 @@ interface IRadioIndication extends @1.5::IRadioIndication {
* @param lce LinkCapacityEstimate
*/
oneway currentLinkCapacityEstimate_1_6(RadioIndicationType type, LinkCapacityEstimate lce);
/**
* Report all of the current cell information known to the radio.
*
* This indication is updated from IRadioIndication@1.5 to report the @1.6 version of
* CellInfo.
*
* @param type Type of radio indication
* @param records Current cell information
*/
oneway cellInfoList_1_6(RadioIndicationType type, vec<CellInfo> records);
/**
* Incremental network scan results.
*
* This indication is updated from IRadioIndication@1.5 to report the @1.6 version of
* CellInfo.
*/
oneway networkScanResult_1_6(RadioIndicationType type, NetworkScanResult result);
};

View File

@@ -17,9 +17,10 @@
package android.hardware.radio@1.6;
import @1.0::SendSmsResult;
import @1.6::RadioResponseInfo;
import @1.5::IRadioResponse;
import @1.6::CellInfo;
import @1.6::RegStateResult;
import @1.6::RadioResponseInfo;
import @1.6::SetupDataCallResult;
/**
@@ -329,6 +330,19 @@ interface IRadioResponse extends @1.5::IRadioResponse {
*/
oneway getSystemSelectionChannelsResponse(RadioResponseInfo info);
/**
* This is identical to getCellInfoListResponse_1_5 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_6(RadioResponseInfo info, vec<CellInfo> cellInfo);
/**
* @param info Response info struct containing response type, serial no. and error
* @param voiceRegResponse Current Voice registration response as defined by RegStateResult

View File

@@ -16,14 +16,29 @@
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::ScanStatus;
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::RegStateResult.AccessTechnologySpecificInfo.Cdma2000RegistrationInfo;
import @1.5::RegStateResult.AccessTechnologySpecificInfo.EutranRegistrationInfo;
@@ -504,6 +519,153 @@ struct NrVopsInfo {
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], INT_MAX means invalid/unreported.
*/
vec<uint32_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.

View File

@@ -799,6 +799,11 @@ class RadioResponse_v1_6 : public ::android::hardware::radio::V1_6::IRadioRespon
Return<void> getSystemSelectionChannelsResponse(
const ::android::hardware::radio::V1_6::RadioResponseInfo& info);
Return<void> getCellInfoListResponse_1_6(
const ::android::hardware::radio::V1_6::RadioResponseInfo& info,
const ::android::hardware::hidl_vec<::android::hardware::radio::V1_6::CellInfo>&
cellInfo);
Return<void> getVoiceRegistrationStateResponse_1_6(
const ::android::hardware::radio::V1_6::RadioResponseInfo& info,
const ::android::hardware::radio::V1_6::RegStateResult& regResponse);
@@ -825,6 +830,15 @@ class RadioIndication_v1_6 : public ::android::hardware::radio::V1_6::IRadioIndi
Return<void> unthrottleApn(RadioIndicationType type,
const ::android::hardware::hidl_string& apn);
Return<void> networkScanResult_1_6(
RadioIndicationType type,
const ::android::hardware::radio::V1_6::NetworkScanResult& result);
Return<void> cellInfoList_1_6(
RadioIndicationType type,
const ::android::hardware::hidl_vec<::android::hardware::radio::V1_6::CellInfo>&
records);
/* 1.5 Api */
Return<void> uiccApplicationsEnablementChanged(RadioIndicationType type, bool enabled);

View File

@@ -386,3 +386,16 @@ Return<void> RadioIndication_v1_6::modemReset(RadioIndicationType /*type*/,
const ::android::hardware::hidl_string& /*reason*/) {
return Void();
}
Return<void> RadioIndication_v1_6::networkScanResult_1_6(
RadioIndicationType /*type*/,
const ::android::hardware::radio::V1_6::NetworkScanResult& /*result*/) {
return Void();
}
Return<void> RadioIndication_v1_6::cellInfoList_1_6(
RadioIndicationType /*type*/,
const ::android::hardware::hidl_vec<
::android::hardware::radio::V1_6::CellInfo>& /*records*/) {
return Void();
}

View File

@@ -1164,6 +1164,13 @@ Return<void> RadioResponse_v1_6::setDataThrottlingResponse(
return Void();
}
Return<void> RadioResponse_v1_6::getCellInfoListResponse_1_6(
const ::android::hardware::radio::V1_6::RadioResponseInfo& /*info*/,
const ::android::hardware::hidl_vec<
::android::hardware::radio::V1_6::CellInfo>& /*cellInfo*/) {
return Void();
}
Return<void> RadioResponse_v1_6::getSystemSelectionChannelsResponse(
const ::android::hardware::radio::V1_6::RadioResponseInfo& info) {
rspInfo = info;