Loading radio/1.6/IRadio.hal +24 −0 Original line number Original line Diff line number Diff line Loading @@ -181,4 +181,28 @@ interface IRadio extends @1.5::IRadio { * * */ */ oneway sendCdmaSmsExpectMore_1_6(int32_t serial, CdmaSmsMessage sms); 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); }; }; radio/1.6/IRadioResponse.hal +22 −0 Original line number Original line Diff line number Diff line Loading @@ -200,4 +200,26 @@ interface IRadioResponse extends @1.5::IRadioResponse { * RadioError:BLOCKED_DUE_TO_CALL * RadioError:BLOCKED_DUE_TO_CALL */ */ oneway sendCdmaSmsExpectMoreResponse_1_6(RadioResponseInfo info, SendSmsResult sms); 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); }; }; radio/1.6/types.hal +21 −0 Original line number Original line Diff line number Diff line Loading @@ -255,3 +255,24 @@ struct SetupDataCallResult { /** Specifies the fallback mode on an IWLAN handover failure. */ /** Specifies the fallback mode on an IWLAN handover failure. */ HandoverFailureMode handoverFailureMode; 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, }; radio/1.6/vts/functional/radio_hidl_hal_api.cpp +37 −1 Original line number Original line Diff line number Diff line Loading @@ -63,7 +63,6 @@ TEST_P(RadioHidlTest_v1_6, setupDataCall_1_6) { EXPECT_EQ(std::cv_status::no_timeout, wait()); EXPECT_EQ(std::cv_status::no_timeout, wait()); EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_6->rspInfo.type); EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_6->rspInfo.type); EXPECT_EQ(serial, radioRsp_v1_6->rspInfo.serial); EXPECT_EQ(serial, radioRsp_v1_6->rspInfo.serial); if (cardStatus.base.base.base.cardState == CardState::ABSENT) { if (cardStatus.base.base.base.cardState == CardState::ABSENT) { ASSERT_TRUE(CheckAnyOfErrors( ASSERT_TRUE(CheckAnyOfErrors( radioRsp_v1_6->rspInfo.error, radioRsp_v1_6->rspInfo.error, Loading Loading @@ -259,3 +258,40 @@ TEST_P(RadioHidlTest_v1_6, setRadioPower_1_6_emergencyCall_cancelled) { EXPECT_EQ(serial, radioRsp_v1_6->rspInfo.serial); EXPECT_EQ(serial, radioRsp_v1_6->rspInfo.serial); EXPECT_EQ(::android::hardware::radio::V1_6::RadioError::NONE, radioRsp_v1_6->rspInfo.error); 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})); } radio/1.6/vts/functional/radio_hidl_hal_utils_v1_6.h +6 −0 Original line number Original line Diff line number Diff line Loading @@ -78,6 +78,7 @@ class RadioResponse_v1_6 : public ::android::hardware::radio::V1_6::IRadioRespon // Modem // Modem bool isModemEnabled; bool isModemEnabled; bool enableModemResponseToggle; bool enableModemResponseToggle; bool isNRDualConnectivityEnabled; ::android::hardware::hidl_bitfield<::android::hardware::radio::V1_4::RadioAccessFamily> ::android::hardware::hidl_bitfield<::android::hardware::radio::V1_4::RadioAccessFamily> networkTypeBitmapResponse; networkTypeBitmapResponse; Loading Loading @@ -765,6 +766,11 @@ class RadioResponse_v1_6 : public ::android::hardware::radio::V1_6::IRadioRespon Return<void> sendCdmaSmsExpectMoreResponse_1_6( Return<void> sendCdmaSmsExpectMoreResponse_1_6( const ::android::hardware::radio::V1_6::RadioResponseInfo& info, const ::android::hardware::radio::V1_6::RadioResponseInfo& info, const SendSmsResult& sms); 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 */ /* Callback class for radio indication */ Loading Loading
radio/1.6/IRadio.hal +24 −0 Original line number Original line Diff line number Diff line Loading @@ -181,4 +181,28 @@ interface IRadio extends @1.5::IRadio { * * */ */ oneway sendCdmaSmsExpectMore_1_6(int32_t serial, CdmaSmsMessage sms); 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); }; };
radio/1.6/IRadioResponse.hal +22 −0 Original line number Original line Diff line number Diff line Loading @@ -200,4 +200,26 @@ interface IRadioResponse extends @1.5::IRadioResponse { * RadioError:BLOCKED_DUE_TO_CALL * RadioError:BLOCKED_DUE_TO_CALL */ */ oneway sendCdmaSmsExpectMoreResponse_1_6(RadioResponseInfo info, SendSmsResult sms); 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); }; };
radio/1.6/types.hal +21 −0 Original line number Original line Diff line number Diff line Loading @@ -255,3 +255,24 @@ struct SetupDataCallResult { /** Specifies the fallback mode on an IWLAN handover failure. */ /** Specifies the fallback mode on an IWLAN handover failure. */ HandoverFailureMode handoverFailureMode; 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, };
radio/1.6/vts/functional/radio_hidl_hal_api.cpp +37 −1 Original line number Original line Diff line number Diff line Loading @@ -63,7 +63,6 @@ TEST_P(RadioHidlTest_v1_6, setupDataCall_1_6) { EXPECT_EQ(std::cv_status::no_timeout, wait()); EXPECT_EQ(std::cv_status::no_timeout, wait()); EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_6->rspInfo.type); EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_6->rspInfo.type); EXPECT_EQ(serial, radioRsp_v1_6->rspInfo.serial); EXPECT_EQ(serial, radioRsp_v1_6->rspInfo.serial); if (cardStatus.base.base.base.cardState == CardState::ABSENT) { if (cardStatus.base.base.base.cardState == CardState::ABSENT) { ASSERT_TRUE(CheckAnyOfErrors( ASSERT_TRUE(CheckAnyOfErrors( radioRsp_v1_6->rspInfo.error, radioRsp_v1_6->rspInfo.error, Loading Loading @@ -259,3 +258,40 @@ TEST_P(RadioHidlTest_v1_6, setRadioPower_1_6_emergencyCall_cancelled) { EXPECT_EQ(serial, radioRsp_v1_6->rspInfo.serial); EXPECT_EQ(serial, radioRsp_v1_6->rspInfo.serial); EXPECT_EQ(::android::hardware::radio::V1_6::RadioError::NONE, radioRsp_v1_6->rspInfo.error); 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})); }
radio/1.6/vts/functional/radio_hidl_hal_utils_v1_6.h +6 −0 Original line number Original line Diff line number Diff line Loading @@ -78,6 +78,7 @@ class RadioResponse_v1_6 : public ::android::hardware::radio::V1_6::IRadioRespon // Modem // Modem bool isModemEnabled; bool isModemEnabled; bool enableModemResponseToggle; bool enableModemResponseToggle; bool isNRDualConnectivityEnabled; ::android::hardware::hidl_bitfield<::android::hardware::radio::V1_4::RadioAccessFamily> ::android::hardware::hidl_bitfield<::android::hardware::radio::V1_4::RadioAccessFamily> networkTypeBitmapResponse; networkTypeBitmapResponse; Loading Loading @@ -765,6 +766,11 @@ class RadioResponse_v1_6 : public ::android::hardware::radio::V1_6::IRadioRespon Return<void> sendCdmaSmsExpectMoreResponse_1_6( Return<void> sendCdmaSmsExpectMoreResponse_1_6( const ::android::hardware::radio::V1_6::RadioResponseInfo& info, const ::android::hardware::radio::V1_6::RadioResponseInfo& info, const SendSmsResult& sms); 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 */ /* Callback class for radio indication */ Loading