diff --git a/radio/1.3/vts/functional/radio_hidl_hal_api.cpp b/radio/1.3/vts/functional/radio_hidl_hal_api.cpp index 6208c677f5..1bebae7389 100644 --- a/radio/1.3/vts/functional/radio_hidl_hal_api.cpp +++ b/radio/1.3/vts/functional/radio_hidl_hal_api.cpp @@ -75,3 +75,36 @@ TEST_F(RadioHidlTest_v1_3, getModemStackStatus) { radioRsp_v1_3->rspInfo.error, {RadioError::NONE, RadioError::RADIO_NOT_AVAILABLE, RadioError::MODEM_ERR})); } + +/* + * Test IRadio.setSystemSelectionChannels() for the response returned. + */ +TEST_F(RadioHidlTest_v1_3, setSystemSelectionChannels) { + serial = GetRandomSerialNumber(); + + RadioAccessSpecifier specifier = {.radioAccessNetwork = RadioAccessNetworks::GERAN, + .geranBands = {GeranBands::BAND_450, GeranBands::BAND_480}, + .channels = {1, 2}}; + + Return res = radio_v1_3->setSystemSelectionChannels(serial, true, {specifier}); + ASSERT_OK(res); + EXPECT_EQ(std::cv_status::no_timeout, wait()); + EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_3->rspInfo.type); + EXPECT_EQ(serial, radioRsp_v1_3->rspInfo.serial); + ALOGI("setSystemSelectionChannels, rspInfo.error = %s\n", + toString(radioRsp_v1_3->rspInfo.error).c_str()); + ASSERT_TRUE(CheckAnyOfErrors( + radioRsp_v1_3->rspInfo.error, + {RadioError::NONE, RadioError::RADIO_NOT_AVAILABLE, RadioError::INTERNAL_ERR})); + + if (radioRsp_v1_3->rspInfo.error == RadioError::NONE) { + Return res = radio_v1_3->setSystemSelectionChannels(serial, false, {specifier}); + ASSERT_OK(res); + EXPECT_EQ(std::cv_status::no_timeout, wait()); + EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_3->rspInfo.type); + EXPECT_EQ(serial, radioRsp_v1_3->rspInfo.serial); + ALOGI("setSystemSelectionChannels, rspInfo.error = %s\n", + toString(radioRsp_v1_3->rspInfo.error).c_str()); + EXPECT_EQ(RadioError::NONE, radioRsp_v1_3->rspInfo.error); + } +} \ No newline at end of file diff --git a/radio/1.3/vts/functional/radio_response.cpp b/radio/1.3/vts/functional/radio_response.cpp index 900794ec1b..84a98908b7 100644 --- a/radio/1.3/vts/functional/radio_response.cpp +++ b/radio/1.3/vts/functional/radio_response.cpp @@ -769,12 +769,14 @@ Return RadioResponse_v1_3::getDataRegistrationStateResponse_1_2( /* 1.3 Api */ Return RadioResponse_v1_3::setSystemSelectionChannelsResponse(const RadioResponseInfo& info) { rspInfo = info; + parent_v1_3.notify(info.serial); return Void(); } Return RadioResponse_v1_3::enableModemResponse(const RadioResponseInfo& info) { rspInfo = info; enableModemResponseToggle = !enableModemResponseToggle; + parent_v1_3.notify(info.serial); return Void(); } @@ -782,5 +784,6 @@ Return RadioResponse_v1_3::getModemStackStatusResponse(const RadioResponse const bool enabled) { rspInfo = info; isModemEnabled = enabled; + parent_v1_3.notify(info.serial); return Void(); } diff --git a/radio/config/1.1/vts/functional/radio_config_hidl_hal_api.cpp b/radio/config/1.1/vts/functional/radio_config_hidl_hal_api.cpp index a1639d8bb9..122ce58a3e 100644 --- a/radio/config/1.1/vts/functional/radio_config_hidl_hal_api.cpp +++ b/radio/config/1.1/vts/functional/radio_config_hidl_hal_api.cpp @@ -69,3 +69,89 @@ TEST_F(RadioConfigHidlTest, setModemsConfig_goodRequest) { ASSERT_TRUE(CheckAnyOfErrors(radioConfigRsp->rspInfo.error, {RadioError::NONE, RadioError::REQUEST_NOT_SUPPORTED})); } + +/* + * Test IRadioConfig.getPhoneCapability() + */ +TEST_F(RadioConfigHidlTest, getPhoneCapability) { + serial = GetRandomSerialNumber(); + Return res = radioConfig->getPhoneCapability(serial); + ASSERT_OK(res); + EXPECT_EQ(std::cv_status::no_timeout, wait()); + EXPECT_EQ(RadioResponseType::SOLICITED, radioConfigRsp->rspInfo.type); + EXPECT_EQ(serial, radioConfigRsp->rspInfo.serial); + ALOGI("getPhoneCapability, rspInfo.error = %s\n", + toString(radioConfigRsp->rspInfo.error).c_str()); + + ASSERT_TRUE(CheckAnyOfErrors( + radioConfigRsp->rspInfo.error, + {RadioError::NONE, RadioError::RADIO_NOT_AVAILABLE, RadioError::INTERNAL_ERR})); + + if (radioConfigRsp->rspInfo.error == RadioError ::NONE) { + // maxActiveData should be greater than or equal to maxActiveInternetData. + EXPECT_GE(radioConfigRsp->phoneCap.maxActiveData, + radioConfigRsp->phoneCap.maxActiveInternetData); + // maxActiveData and maxActiveInternetData should be 0 or positive numbers. + EXPECT_GE(radioConfigRsp->phoneCap.maxActiveInternetData, 0); + } +} + +/* + * Test IRadioConfig.getPhoneCapability() + */ +TEST_F(RadioConfigHidlTest, setPreferredDataModem) { + serial = GetRandomSerialNumber(); + Return res = radioConfig->getPhoneCapability(serial); + ASSERT_OK(res); + EXPECT_EQ(std::cv_status::no_timeout, wait()); + EXPECT_EQ(RadioResponseType::SOLICITED, radioConfigRsp->rspInfo.type); + EXPECT_EQ(serial, radioConfigRsp->rspInfo.serial); + ALOGI("getPhoneCapability, rspInfo.error = %s\n", + toString(radioConfigRsp->rspInfo.error).c_str()); + + ASSERT_TRUE(CheckAnyOfErrors( + radioConfigRsp->rspInfo.error, + {RadioError::NONE, RadioError::RADIO_NOT_AVAILABLE, RadioError::INTERNAL_ERR})); + + if (radioConfigRsp->rspInfo.error != RadioError ::NONE) { + return; + } + + if (radioConfigRsp->phoneCap.logicalModemList.size() == 0) { + return; + } + + // We get phoneCapability. send setPreferredDataModem command + serial = GetRandomSerialNumber(); + uint8_t modemId = radioConfigRsp->phoneCap.logicalModemList[0].modemId; + res = radioConfig->setPreferredDataModem(serial, modemId); + + ASSERT_OK(res); + EXPECT_EQ(std::cv_status::no_timeout, wait()); + EXPECT_EQ(RadioResponseType::SOLICITED, radioConfigRsp->rspInfo.type); + EXPECT_EQ(serial, radioConfigRsp->rspInfo.serial); + ALOGI("getModemsConfig, rspInfo.error = %s\n", toString(radioConfigRsp->rspInfo.error).c_str()); + + ASSERT_TRUE(CheckAnyOfErrors( + radioConfigRsp->rspInfo.error, + {RadioError::NONE, RadioError::RADIO_NOT_AVAILABLE, RadioError::INTERNAL_ERR})); +} + +/* + * Test IRadioConfig.getPhoneCapability() + */ +TEST_F(RadioConfigHidlTest, setPreferredDataModem_invalidArgument) { + serial = GetRandomSerialNumber(); + uint8_t modemId = -1; + Return res = radioConfig->setPreferredDataModem(serial, modemId); + + ASSERT_OK(res); + EXPECT_EQ(std::cv_status::no_timeout, wait()); + EXPECT_EQ(RadioResponseType::SOLICITED, radioConfigRsp->rspInfo.type); + EXPECT_EQ(serial, radioConfigRsp->rspInfo.serial); + ALOGI("getModemsConfig, rspInfo.error = %s\n", toString(radioConfigRsp->rspInfo.error).c_str()); + + ASSERT_TRUE(CheckAnyOfErrors(radioConfigRsp->rspInfo.error, + {RadioError::INVALID_ARGUMENTS, RadioError::RADIO_NOT_AVAILABLE, + RadioError::INTERNAL_ERR})); +} diff --git a/radio/config/1.1/vts/functional/radio_config_hidl_hal_utils.h b/radio/config/1.1/vts/functional/radio_config_hidl_hal_utils.h index 1747ce8f24..c980901014 100644 --- a/radio/config/1.1/vts/functional/radio_config_hidl_hal_utils.h +++ b/radio/config/1.1/vts/functional/radio_config_hidl_hal_utils.h @@ -51,6 +51,7 @@ class RadioConfigResponse : public IRadioConfigResponse { public: RadioResponseInfo rspInfo; + PhoneCapability phoneCap; RadioConfigResponse(RadioConfigHidlTest& parent); virtual ~RadioConfigResponse() = default; diff --git a/radio/config/1.1/vts/functional/radio_config_response.cpp b/radio/config/1.1/vts/functional/radio_config_response.cpp index 8c9e4d75e6..ce3dfdff5d 100644 --- a/radio/config/1.1/vts/functional/radio_config_response.cpp +++ b/radio/config/1.1/vts/functional/radio_config_response.cpp @@ -31,7 +31,10 @@ Return RadioConfigResponse::setSimSlotsMappingResponse(const RadioResponse } Return RadioConfigResponse::getPhoneCapabilityResponse( - const RadioResponseInfo& /* info */, const PhoneCapability& /* phoneCapability */) { + const RadioResponseInfo& info, const PhoneCapability& phoneCapability) { + rspInfo = info; + phoneCap = phoneCapability; + parent.notify(info.serial); return Void(); } @@ -47,4 +50,4 @@ Return RadioConfigResponse::getModemsConfigResponse(const RadioResponseInf Return RadioConfigResponse::setModemsConfigResponse(const RadioResponseInfo& /* info */) { return Void(); -} \ No newline at end of file +}