Merge "Ability to configure NR dual connectivity"

This commit is contained in:
TreeHugger Robot
2020-10-26 03:33:26 +00:00
committed by Android (Google) Code Review
6 changed files with 124 additions and 1 deletions

View File

@@ -181,4 +181,28 @@ interface IRadio extends @1.5::IRadio {
*
*/
oneway sendCdmaSmsExpectMore_1_6(int32_t serial, CdmaSmsMessage sms);
/**
* Enable or disable E-UTRA-NR dual connectivity. If disabled then UE will not connect
* to secondary carrier.
*
* @param serial Serial number of request.
* @param nrDualConnectivityState expected NR dual connectivity state.
* 1. Enable NR dual connectivity {NrDualConnectivityState:ENABLE}
* 2. Disable NR dual connectivity {NrDualConnectivityState:DISABLE}
* 3. Disable NR dual connectivity and force secondary cell to be released
* {NrDualConnectivityState:DISABLE_IMMEDIATE}
* Response callback is IRadioResponse.enableNRDualConnectivityResponse()
*/
oneway enableNrDualConnectivity(int32_t serial,
NrDualConnectivityState nrDualConnectivityState);
/**
* Is E-UTRA-NR Dual Connectivity enabled
*
* @param serial Serial number of request.
* Response callback is IRadioResponse.isNRDualConnectivityEnabledResponse()
*/
oneway isNrDualConnectivityEnabled(int32_t serial);
};

View File

@@ -200,4 +200,26 @@ interface IRadioResponse extends @1.5::IRadioResponse {
* RadioError:BLOCKED_DUE_TO_CALL
*/
oneway sendCdmaSmsExpectMoreResponse_1_6(RadioResponseInfo info, SendSmsResult sms);
/**
* @param info Response info struct containing response type, serial no. and error
*
* Valid errors returned:
* RadioError:NONE
* RadioError:RADIO_NOT_AVAILABLE
* RadioError:INTERNAL_ERR
*/
oneway enableNrDualConnectivityResponse(RadioResponseInfo info);
/**
* @param info Response info struct containing response type, serial no. and error
*
* @param isEnabled Indicates whether NR dual connectivity is enabled or not, True if enabled
* else false.
* Valid errors returned:
* RadioError:NONE
* RadioError:RADIO_NOT_AVAILABLE
* RadioError:INTERNAL_ERR
*/
oneway isNrDualConnectivityEnabledResponse(RadioResponseInfo info, bool isEnabled);
};

View File

@@ -255,3 +255,24 @@ struct SetupDataCallResult {
/** Specifies the fallback mode on an IWLAN handover failure. */
HandoverFailureMode handoverFailureMode;
};
/**
* NR Dual connectivity state
*/
enum NrDualConnectivityState: int32_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,
};

View File

@@ -63,7 +63,6 @@ TEST_P(RadioHidlTest_v1_6, setupDataCall_1_6) {
EXPECT_EQ(std::cv_status::no_timeout, wait());
EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_6->rspInfo.type);
EXPECT_EQ(serial, radioRsp_v1_6->rspInfo.serial);
if (cardStatus.base.base.base.cardState == CardState::ABSENT) {
ASSERT_TRUE(CheckAnyOfErrors(
radioRsp_v1_6->rspInfo.error,
@@ -259,3 +258,40 @@ TEST_P(RadioHidlTest_v1_6, setRadioPower_1_6_emergencyCall_cancelled) {
EXPECT_EQ(serial, radioRsp_v1_6->rspInfo.serial);
EXPECT_EQ(::android::hardware::radio::V1_6::RadioError::NONE, radioRsp_v1_6->rspInfo.error);
}
/*
* Test IRadio.enableNrDualConnectivity() for the response returned.
*/
TEST_P(RadioHidlTest_v1_6, enableNrDualConnectivity) {
serial = GetRandomSerialNumber();
Return<void> res =
radio_v1_6->enableNrDualConnectivity(serial, NrDualConnectivityState::DISABLE);
ASSERT_OK(res);
EXPECT_EQ(std::cv_status::no_timeout, wait());
EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_6->rspInfo.type);
EXPECT_EQ(serial, radioRsp_v1_6->rspInfo.serial);
ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_6->rspInfo.error,
{::android::hardware::radio::V1_6::RadioError::RADIO_NOT_AVAILABLE,
::android::hardware::radio::V1_6::RadioError::INTERNAL_ERR,
::android::hardware::radio::V1_6::RadioError::NONE}));
}
/*
* Test IRadio.isNrDualConnectivityEnabled() for the response returned.
*/
TEST_P(RadioHidlTest_v1_6, isNrDualConnectivityEnabled) {
serial = GetRandomSerialNumber();
Return<void> res = radio_v1_6->isNrDualConnectivityEnabled(serial);
ASSERT_OK(res);
EXPECT_EQ(std::cv_status::no_timeout, wait());
EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_6->rspInfo.type);
EXPECT_EQ(serial, radioRsp_v1_6->rspInfo.serial);
ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_6->rspInfo.error,
{::android::hardware::radio::V1_6::RadioError::RADIO_NOT_AVAILABLE,
::android::hardware::radio::V1_6::RadioError::INTERNAL_ERR,
::android::hardware::radio::V1_6::RadioError::NONE}));
}

View File

@@ -78,6 +78,7 @@ class RadioResponse_v1_6 : public ::android::hardware::radio::V1_6::IRadioRespon
// Modem
bool isModemEnabled;
bool enableModemResponseToggle;
bool isNRDualConnectivityEnabled;
::android::hardware::hidl_bitfield<::android::hardware::radio::V1_4::RadioAccessFamily>
networkTypeBitmapResponse;
@@ -765,6 +766,11 @@ class RadioResponse_v1_6 : public ::android::hardware::radio::V1_6::IRadioRespon
Return<void> sendCdmaSmsExpectMoreResponse_1_6(
const ::android::hardware::radio::V1_6::RadioResponseInfo& info,
const SendSmsResult& sms);
Return<void> enableNrDualConnectivityResponse(
const ::android::hardware::radio::V1_6::RadioResponseInfo& info);
Return<void> isNrDualConnectivityEnabledResponse(
const ::android::hardware::radio::V1_6::RadioResponseInfo& info, bool isEnabled);
};
/* Callback class for radio indication */

View File

@@ -1055,6 +1055,12 @@ Return<void> RadioResponse_v1_6::setupDataCallResponse_1_6(
parent_v1_6.notify(info.serial);
return Void();
}
Return<void> RadioResponse_v1_6::enableNrDualConnectivityResponse(
const ::android::hardware::radio::V1_6::RadioResponseInfo& info) {
rspInfo = info;
parent_v1_6.notify(info.serial);
return Void();
}
Return<void> RadioResponse_v1_6::getDataCallListResponse_1_6(
const ::android::hardware::radio::V1_6::RadioResponseInfo& info,
@@ -1099,3 +1105,11 @@ Return<void> RadioResponse_v1_6::sendCdmaSmsExpectMoreResponse_1_6(
parent_v1_6.notify(info.serial);
return Void();
}
Return<void> RadioResponse_v1_6::isNrDualConnectivityEnabledResponse(
const ::android::hardware::radio::V1_6::RadioResponseInfo& info, bool isEnabled) {
rspInfo = info;
isNRDualConnectivityEnabled = isEnabled;
parent_v1_6.notify(info.serial);
return Void();
}