mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-02-01 16:50:18 +00:00
Ability to configure NR dual connectivity
Provide ability to configure EUTRANR dual connectivity Bug: 162373679 Test: build Change-Id: I628edc2d6157ab2db279c2f32deb57798f2dd9ce
This commit is contained in:
@@ -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);
|
||||
};
|
||||
|
||||
@@ -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);
|
||||
};
|
||||
|
||||
@@ -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,
|
||||
};
|
||||
|
||||
@@ -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}));
|
||||
}
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user