From c83bce4cc9c073daa900b8af4b3525ad01e6d65e Mon Sep 17 00:00:00 2001 From: Sarah Chin Date: Wed, 29 Dec 2021 00:35:12 -0800 Subject: [PATCH] Finish IRadio 1.6/IRadioConfig 1.3 AIDL VTS Implement IRadioConfig VTS and helper methods Verify that VtsHalRadioTargetTest passes Bug: 210712359 Test: atest VtsHalRadioTargetTest Change-Id: Ic82ffd2feacc107e9b291ef3aab861d0c1496489 --- radio/aidl/vts/Android.bp | 3 + radio/aidl/vts/VtsHalRadioTargetTest.cpp | 7 ++ radio/aidl/vts/radio_aidl_hal_utils.cpp | 74 +++++++++++----- radio/aidl/vts/radio_aidl_hal_utils.h | 26 +++--- radio/aidl/vts/radio_config_indication.cpp | 24 ++++++ radio/aidl/vts/radio_config_response.cpp | 59 +++++++++++++ radio/aidl/vts/radio_config_test.cpp | 56 ++++++++++++ radio/aidl/vts/radio_config_utils.h | 86 +++++++++++++++++++ radio/aidl/vts/radio_data_indication.cpp | 2 +- radio/aidl/vts/radio_data_response.cpp | 2 +- radio/aidl/vts/radio_data_test.cpp | 15 ++-- radio/aidl/vts/radio_data_utils.h | 11 ++- radio/aidl/vts/radio_messaging_indication.cpp | 2 +- radio/aidl/vts/radio_messaging_response.cpp | 2 +- radio/aidl/vts/radio_messaging_test.cpp | 15 ++-- radio/aidl/vts/radio_messaging_utils.h | 11 ++- radio/aidl/vts/radio_modem_indication.cpp | 2 +- radio/aidl/vts/radio_modem_response.cpp | 2 +- radio/aidl/vts/radio_modem_test.cpp | 15 ++-- radio/aidl/vts/radio_modem_utils.h | 11 ++- radio/aidl/vts/radio_network_indication.cpp | 2 +- radio/aidl/vts/radio_network_response.cpp | 4 +- radio/aidl/vts/radio_network_test.cpp | 15 ++-- radio/aidl/vts/radio_network_utils.h | 12 +-- radio/aidl/vts/radio_sim_indication.cpp | 2 +- radio/aidl/vts/radio_sim_response.cpp | 2 +- radio/aidl/vts/radio_sim_test.cpp | 17 ++-- radio/aidl/vts/radio_sim_utils.h | 20 ++--- radio/aidl/vts/radio_voice_indication.cpp | 2 +- radio/aidl/vts/radio_voice_response.cpp | 2 +- radio/aidl/vts/radio_voice_test.cpp | 51 ++++++----- radio/aidl/vts/radio_voice_utils.h | 14 +-- 32 files changed, 432 insertions(+), 136 deletions(-) create mode 100644 radio/aidl/vts/radio_config_indication.cpp create mode 100644 radio/aidl/vts/radio_config_response.cpp create mode 100644 radio/aidl/vts/radio_config_test.cpp create mode 100644 radio/aidl/vts/radio_config_utils.h diff --git a/radio/aidl/vts/Android.bp b/radio/aidl/vts/Android.bp index 935d2e5077..8060e4bcc3 100644 --- a/radio/aidl/vts/Android.bp +++ b/radio/aidl/vts/Android.bp @@ -29,6 +29,9 @@ cc_test { ], srcs: [ "radio_aidl_hal_utils.cpp", + "radio_config_indication.cpp", + "radio_config_response.cpp", + "radio_config_test.cpp", "radio_data_indication.cpp", "radio_data_response.cpp", "radio_data_test.cpp", diff --git a/radio/aidl/vts/VtsHalRadioTargetTest.cpp b/radio/aidl/vts/VtsHalRadioTargetTest.cpp index e829f8e253..1ebc6afa8a 100644 --- a/radio/aidl/vts/VtsHalRadioTargetTest.cpp +++ b/radio/aidl/vts/VtsHalRadioTargetTest.cpp @@ -16,6 +16,7 @@ #include +#include "radio_config_utils.h" #include "radio_data_utils.h" #include "radio_messaging_utils.h" #include "radio_modem_utils.h" @@ -23,6 +24,12 @@ #include "radio_sim_utils.h" #include "radio_voice_utils.h" +GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(RadioConfigTest); +INSTANTIATE_TEST_SUITE_P( + PerInstance, RadioConfigTest, + testing::ValuesIn(android::getAidlHalInstanceNames(IRadioConfig::descriptor)), + android::PrintInstanceNameToString); + GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(RadioDataTest); INSTANTIATE_TEST_SUITE_P( PerInstance, RadioDataTest, diff --git a/radio/aidl/vts/radio_aidl_hal_utils.cpp b/radio/aidl/vts/radio_aidl_hal_utils.cpp index 14a16c0f2b..dc61a3cfd3 100644 --- a/radio/aidl/vts/radio_aidl_hal_utils.cpp +++ b/radio/aidl/vts/radio_aidl_hal_utils.cpp @@ -18,12 +18,14 @@ #include "radio_aidl_hal_utils.h" #include #include "VtsCoreUtil.h" - -using namespace aidl::android::hardware::radio::network; +#include "radio_config_utils.h" +#include "radio_sim_utils.h" #define WAIT_TIMEOUT_PERIOD 75 -aidl::android::hardware::radio::sim::CardStatus cardStatus = {}; +sim::CardStatus cardStatus = {}; +int serial = 0; +int count_ = 0; int GetRandomSerialNumber() { return rand(); @@ -103,23 +105,33 @@ bool isVoiceEmergencyOnly(RegState state) { RegState::UNKNOWN_EM == state; } +bool stringEndsWith(std::string const& string, std::string const& end) { + if (string.size() >= end.size()) { + return (0 == string.compare(string.size() - end.size() - 1, end.size(), end)); + } else { + return false; + } +} + bool isServiceValidForDeviceConfiguration(std::string& serviceName) { if (isSsSsEnabled()) { // Device is configured as SSSS. - if (serviceName != RADIO_SERVICE_SLOT1_NAME) { + if (stringEndsWith(serviceName, RADIO_SERVICE_SLOT1_NAME)) { ALOGI("%s instance is not valid for SSSS device.", serviceName.c_str()); return false; } } else if (isDsDsEnabled()) { // Device is configured as DSDS. - if (serviceName != RADIO_SERVICE_SLOT1_NAME && serviceName != RADIO_SERVICE_SLOT2_NAME) { + if (!stringEndsWith(serviceName, RADIO_SERVICE_SLOT1_NAME) && + !stringEndsWith(serviceName, RADIO_SERVICE_SLOT2_NAME)) { ALOGI("%s instance is not valid for DSDS device.", serviceName.c_str()); return false; } } else if (isTsTsEnabled()) { // Device is configured as TSTS. - if (serviceName != RADIO_SERVICE_SLOT1_NAME && serviceName != RADIO_SERVICE_SLOT2_NAME && - serviceName != RADIO_SERVICE_SLOT3_NAME) { + if (!stringEndsWith(serviceName, RADIO_SERVICE_SLOT1_NAME) && + !stringEndsWith(serviceName, RADIO_SERVICE_SLOT2_NAME) && + !stringEndsWith(serviceName, RADIO_SERVICE_SLOT3_NAME)) { ALOGI("%s instance is not valid for TSTS device.", serviceName.c_str()); return false; } @@ -130,7 +142,7 @@ bool isServiceValidForDeviceConfiguration(std::string& serviceName) { /* * Notify that the response message is received. */ -void RadioResponseWaiter::notify(int receivedSerial) { +void RadioServiceTest::notify(int receivedSerial) { std::unique_lock lock(mtx_); if (serial == receivedSerial) { count_++; @@ -141,7 +153,7 @@ void RadioResponseWaiter::notify(int receivedSerial) { /* * Wait till the response message is notified or till WAIT_TIMEOUT_PERIOD. */ -std::cv_status RadioResponseWaiter::wait() { +std::cv_status RadioServiceTest::wait() { std::unique_lock lock(mtx_); std::cv_status status = std::cv_status::no_timeout; auto now = std::chrono::system_clock::now(); @@ -158,19 +170,37 @@ std::cv_status RadioResponseWaiter::wait() { /** * Specific features on the Radio HAL rely on Radio HAL Capabilities. * The VTS test related to those features must not run if the related capability is disabled. - * Typical usage within VTS: if (getRadioHalCapabilities()) return; + * Typical usage within VTS: + * if (getRadioHalCapabilities()) return; */ -bool RadioResponseWaiter::getRadioHalCapabilities() { - // TODO(b/210712359): implement after RadioConfig VTS is created - /** - // Get HalDeviceCapabilities from the radio config - std::shared_ptr radioConfigRsp = new (std::nothrow) - RadioConfigResponse(*this); radioConfig->setResponseFunctions(radioConfigRsp, nullptr); serial = - GetRandomSerialNumber(); - - radioConfig->getHalDeviceCapabilities(serial); +bool RadioServiceTest::getRadioHalCapabilities() { + // Get HalDeviceCapabilities from RadioConfig + std::shared_ptr radioConfigRsp = + ndk::SharedRefBase::make(*this); + std::shared_ptr radioConfigInd = + ndk::SharedRefBase::make(*this); + radio_config->setResponseFunctions(radioConfigRsp, radioConfigInd); + serial = GetRandomSerialNumber(); + radio_config->getHalDeviceCapabilities(serial); EXPECT_EQ(std::cv_status::no_timeout, wait()); return radioConfigRsp->modemReducedFeatureSet1; - **/ - return true; -} \ No newline at end of file +} + +/** + * Some VTS tests require the SIM card status to be present before running. + * Update the SIM card status, which can be accessed via the extern cardStatus. + */ +void RadioServiceTest::updateSimCardStatus() { + // Update CardStatus from RadioSim + std::shared_ptr radioSimRsp = + ndk::SharedRefBase::make(*this); + std::shared_ptr radioSimInd = + ndk::SharedRefBase::make(*this); + radio_sim->setResponseFunctions(radioSimRsp, radioSimInd); + serial = GetRandomSerialNumber(); + radio_sim->getIccCardStatus(serial); + EXPECT_EQ(std::cv_status::no_timeout, wait()); + EXPECT_EQ(RadioResponseType::SOLICITED, radioSimRsp->rspInfo.type); + EXPECT_EQ(serial, radioSimRsp->rspInfo.serial); + EXPECT_EQ(RadioError::NONE, radioSimRsp->rspInfo.error); +} diff --git a/radio/aidl/vts/radio_aidl_hal_utils.h b/radio/aidl/vts/radio_aidl_hal_utils.h index 2f31fa80a5..414ffbc456 100644 --- a/radio/aidl/vts/radio_aidl_hal_utils.h +++ b/radio/aidl/vts/radio_aidl_hal_utils.h @@ -19,15 +19,20 @@ #include #include #include +#include #include #include +#include #include #include using namespace aidl::android::hardware::radio; +using aidl::android::hardware::radio::network::RegState; using aidl::android::hardware::radio::sim::CardStatus; extern CardStatus cardStatus; +extern int serial; +extern int count_; /* * MACRO used to skip test case when radio response return error REQUEST_NOT_SUPPORTED @@ -102,12 +107,12 @@ bool isTsTsEnabled(); /* * Check if voice status is in emergency only. */ -bool isVoiceEmergencyOnly(aidl::android::hardware::radio::network::RegState state); +bool isVoiceEmergencyOnly(RegState state); /* * Check if voice status is in service. */ -bool isVoiceInService(aidl::android::hardware::radio::network::RegState state); +bool isVoiceInService(RegState state); /* * Check if service is valid for device configuration @@ -115,26 +120,25 @@ bool isVoiceInService(aidl::android::hardware::radio::network::RegState state); bool isServiceValidForDeviceConfiguration(std::string& serviceName); /** - * Used when waiting for an asynchronous response from the HAL. + * RadioServiceTest base class */ -class RadioResponseWaiter { +class RadioServiceTest { protected: std::mutex mtx_; std::condition_variable cv_; - int count_; + std::shared_ptr radio_config; + std::shared_ptr radio_sim; public: - /* Serial number for radio request */ - int serial; - /* Used as a mechanism to inform the test about data/event callback */ void notify(int receivedSerial); /* Test code calls this function to wait for response */ std::cv_status wait(); - // TODO(b/210712359): this probably isn't the best place to put this, but it works for now - // since all RadioXTest extend RadioResponseWaiter - /* Used to get the radio HAL capabilities */ + /* Get the radio HAL capabilities */ bool getRadioHalCapabilities(); + + /* Update SIM card status */ + void updateSimCardStatus(); }; diff --git a/radio/aidl/vts/radio_config_indication.cpp b/radio/aidl/vts/radio_config_indication.cpp new file mode 100644 index 0000000000..a84c20b4b7 --- /dev/null +++ b/radio/aidl/vts/radio_config_indication.cpp @@ -0,0 +1,24 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "radio_config_utils.h" + +RadioConfigIndication::RadioConfigIndication(RadioServiceTest& parent) : parent_config(parent) {} + +ndk::ScopedAStatus RadioConfigIndication::simSlotsStatusChanged( + RadioIndicationType /*type*/, const std::vector& /*slotStatus*/) { + return ndk::ScopedAStatus::ok(); +} diff --git a/radio/aidl/vts/radio_config_response.cpp b/radio/aidl/vts/radio_config_response.cpp new file mode 100644 index 0000000000..1a152fb712 --- /dev/null +++ b/radio/aidl/vts/radio_config_response.cpp @@ -0,0 +1,59 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "radio_config_utils.h" + +RadioConfigResponse::RadioConfigResponse(RadioServiceTest& parent) : parent_config(parent) {} + +ndk::ScopedAStatus RadioConfigResponse::getSimSlotsStatusResponse( + const RadioResponseInfo& /* info */, const std::vector& /* slotStatus */) { + return ndk::ScopedAStatus::ok(); +} + +ndk::ScopedAStatus RadioConfigResponse::setSimSlotsMappingResponse( + const RadioResponseInfo& /* info */) { + return ndk::ScopedAStatus::ok(); +} + +ndk::ScopedAStatus RadioConfigResponse::getPhoneCapabilityResponse( + const RadioResponseInfo& info, const PhoneCapability& phoneCapability) { + rspInfo = info; + phoneCap = phoneCapability; + parent_config.notify(info.serial); + return ndk::ScopedAStatus::ok(); +} + +ndk::ScopedAStatus RadioConfigResponse::setPreferredDataModemResponse( + const RadioResponseInfo& /* info */) { + return ndk::ScopedAStatus::ok(); +} + +ndk::ScopedAStatus RadioConfigResponse::getNumOfLiveModemsResponse( + const RadioResponseInfo& /* info */, const int8_t /* numOfLiveModems */) { + return ndk::ScopedAStatus::ok(); +} + +ndk::ScopedAStatus RadioConfigResponse::setNumOfLiveModemsResponse( + const RadioResponseInfo& /* info */) { + return ndk::ScopedAStatus::ok(); +} + +ndk::ScopedAStatus RadioConfigResponse::getHalDeviceCapabilitiesResponse( + const RadioResponseInfo& info, bool modemReducedFeatures) { + modemReducedFeatureSet1 = modemReducedFeatures; + parent_config.notify(info.serial); + return ndk::ScopedAStatus::ok(); +} diff --git a/radio/aidl/vts/radio_config_test.cpp b/radio/aidl/vts/radio_config_test.cpp new file mode 100644 index 0000000000..2d7fe01575 --- /dev/null +++ b/radio/aidl/vts/radio_config_test.cpp @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include + +#include "radio_config_utils.h" + +#define ASSERT_OK(ret) ASSERT_TRUE(ret.isOk()) + +void RadioConfigTest::SetUp() { + std::string serviceName = GetParam(); + + if (!isServiceValidForDeviceConfiguration(serviceName)) { + ALOGI("Skipped the test due to device configuration."); + GTEST_SKIP(); + } + + radio_config = IRadioConfig::fromBinder( + ndk::SpAIBinder(AServiceManager_waitForService(GetParam().c_str()))); + ASSERT_NE(nullptr, radio_config.get()); + + radioRsp_config = ndk::SharedRefBase::make(*this); + ASSERT_NE(nullptr, radioRsp_config.get()); + + count_ = 0; + + radioInd_config = ndk::SharedRefBase::make(*this); + ASSERT_NE(nullptr, radioInd_config.get()); + + radio_config->setResponseFunctions(radioRsp_config, radioInd_config); +} + +/* + * Test IRadioConfig.getHalDeviceCapabilities() for the response returned. + */ +TEST_P(RadioConfigTest, getHalDeviceCapabilities) { + serial = GetRandomSerialNumber(); + ndk::ScopedAStatus res = radio_config->getHalDeviceCapabilities(serial); + ASSERT_OK(res); + ALOGI("getHalDeviceCapabilities, rspInfo.error = %s\n", + toString(radioRsp_config->rspInfo.error).c_str()); +} diff --git a/radio/aidl/vts/radio_config_utils.h b/radio/aidl/vts/radio_config_utils.h new file mode 100644 index 0000000000..465c10653b --- /dev/null +++ b/radio/aidl/vts/radio_config_utils.h @@ -0,0 +1,86 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#pragma once + +#include +#include +#include + +#include "radio_aidl_hal_utils.h" + +using namespace aidl::android::hardware::radio::config; + +class RadioConfigTest; + +/* Callback class for radio config response */ +class RadioConfigResponse : public BnRadioConfigResponse { + protected: + RadioServiceTest& parent_config; + + public: + RadioConfigResponse(RadioServiceTest& parent_config); + virtual ~RadioConfigResponse() = default; + + RadioResponseInfo rspInfo; + PhoneCapability phoneCap; + bool modemReducedFeatureSet1; + + virtual ndk::ScopedAStatus getSimSlotsStatusResponse( + const RadioResponseInfo& info, const std::vector& slotStatus) override; + + virtual ndk::ScopedAStatus setSimSlotsMappingResponse(const RadioResponseInfo& info) override; + + virtual ndk::ScopedAStatus getPhoneCapabilityResponse( + const RadioResponseInfo& info, const PhoneCapability& phoneCapability) override; + + virtual ndk::ScopedAStatus setPreferredDataModemResponse( + const RadioResponseInfo& info) override; + + virtual ndk::ScopedAStatus getNumOfLiveModemsResponse(const RadioResponseInfo& info, + const int8_t numOfLiveModems) override; + + virtual ndk::ScopedAStatus setNumOfLiveModemsResponse(const RadioResponseInfo& info) override; + + virtual ndk::ScopedAStatus getHalDeviceCapabilitiesResponse( + const RadioResponseInfo& info, bool modemReducedFeatureSet1) override; +}; + +/* Callback class for radio config indication */ +class RadioConfigIndication : public BnRadioConfigIndication { + protected: + RadioServiceTest& parent_config; + + public: + RadioConfigIndication(RadioServiceTest& parent_config); + virtual ~RadioConfigIndication() = default; + + virtual ndk::ScopedAStatus simSlotsStatusChanged( + RadioIndicationType type, const std::vector& slotStatus) override; +}; + +// The main test class for Radio AIDL Config. +class RadioConfigTest : public ::testing::TestWithParam, public RadioServiceTest { + public: + virtual void SetUp() override; + ndk::ScopedAStatus updateSimCardStatus(); + + /* radio config service handle in RadioServiceTest */ + /* radio config response handle */ + std::shared_ptr radioRsp_config; + /* radio config indication handle */ + std::shared_ptr radioInd_config; +}; diff --git a/radio/aidl/vts/radio_data_indication.cpp b/radio/aidl/vts/radio_data_indication.cpp index 1e02fe1024..4d3c539d91 100644 --- a/radio/aidl/vts/radio_data_indication.cpp +++ b/radio/aidl/vts/radio_data_indication.cpp @@ -16,7 +16,7 @@ #include "radio_data_utils.h" -RadioDataIndication::RadioDataIndication(RadioDataTest& parent) : parent_data(parent) {} +RadioDataIndication::RadioDataIndication(RadioServiceTest& parent) : parent_data(parent) {} ndk::ScopedAStatus RadioDataIndication::dataCallListChanged( RadioIndicationType /*type*/, const std::vector& /*dcList*/) { diff --git a/radio/aidl/vts/radio_data_response.cpp b/radio/aidl/vts/radio_data_response.cpp index 682ddfbfee..9b17bfb380 100644 --- a/radio/aidl/vts/radio_data_response.cpp +++ b/radio/aidl/vts/radio_data_response.cpp @@ -16,7 +16,7 @@ #include "radio_data_utils.h" -RadioDataResponse::RadioDataResponse(RadioResponseWaiter& parent) : parent_data(parent) {} +RadioDataResponse::RadioDataResponse(RadioServiceTest& parent) : parent_data(parent) {} ndk::ScopedAStatus RadioDataResponse::acknowledgeRequest(int32_t /*serial*/) { return ndk::ScopedAStatus::ok(); diff --git a/radio/aidl/vts/radio_data_test.cpp b/radio/aidl/vts/radio_data_test.cpp index 87521cc057..8547e9d4db 100644 --- a/radio/aidl/vts/radio_data_test.cpp +++ b/radio/aidl/vts/radio_data_test.cpp @@ -46,12 +46,17 @@ void RadioDataTest::SetUp() { radio_data->setResponseFunctions(radioRsp_data, radioInd_data); + // Assert IRadioSim exists and SIM is present before testing + radio_sim = sim::IRadioSim::fromBinder(ndk::SpAIBinder( + AServiceManager_waitForService("android.hardware.radio.sim.IRadioSim/slot1"))); + ASSERT_NE(nullptr, radio_sim.get()); + updateSimCardStatus(); + EXPECT_EQ(CardStatus::STATE_PRESENT, cardStatus.cardState); + // Assert IRadioConfig exists before testing - std::shared_ptr radioConfig = - aidl::android::hardware::radio::config::IRadioConfig::fromBinder( - ndk::SpAIBinder(AServiceManager_waitForService( - "android.hardware.radio.config.IRadioConfig/default"))); - ASSERT_NE(nullptr, radioConfig.get()); + radio_config = config::IRadioConfig::fromBinder(ndk::SpAIBinder( + AServiceManager_waitForService("android.hardware.radio.config.IRadioConfig/default"))); + ASSERT_NE(nullptr, radio_config.get()); } ndk::ScopedAStatus RadioDataTest::getDataCallList() { diff --git a/radio/aidl/vts/radio_data_utils.h b/radio/aidl/vts/radio_data_utils.h index ada8ac1cc6..50c7878a2c 100644 --- a/radio/aidl/vts/radio_data_utils.h +++ b/radio/aidl/vts/radio_data_utils.h @@ -23,17 +23,16 @@ #include "radio_aidl_hal_utils.h" using namespace aidl::android::hardware::radio::data; -using aidl::android::hardware::radio::sim::CardStatus; class RadioDataTest; /* Callback class for radio data response */ class RadioDataResponse : public BnRadioDataResponse { protected: - RadioResponseWaiter& parent_data; + RadioServiceTest& parent_data; public: - RadioDataResponse(RadioResponseWaiter& parent_data); + RadioDataResponse(RadioServiceTest& parent_data); virtual ~RadioDataResponse() = default; RadioResponseInfo rspInfo; @@ -80,10 +79,10 @@ class RadioDataResponse : public BnRadioDataResponse { /* Callback class for radio data indication */ class RadioDataIndication : public BnRadioDataIndication { protected: - RadioDataTest& parent_data; + RadioServiceTest& parent_data; public: - RadioDataIndication(RadioDataTest& parent_data); + RadioDataIndication(RadioServiceTest& parent_data); virtual ~RadioDataIndication() = default; virtual ndk::ScopedAStatus dataCallListChanged( @@ -99,7 +98,7 @@ class RadioDataIndication : public BnRadioDataIndication { }; // The main test class for Radio AIDL Data. -class RadioDataTest : public ::testing::TestWithParam, public RadioResponseWaiter { +class RadioDataTest : public ::testing::TestWithParam, public RadioServiceTest { protected: /* Get current data call list */ ndk::ScopedAStatus getDataCallList(); diff --git a/radio/aidl/vts/radio_messaging_indication.cpp b/radio/aidl/vts/radio_messaging_indication.cpp index 7eeb266f4a..c69611f74d 100644 --- a/radio/aidl/vts/radio_messaging_indication.cpp +++ b/radio/aidl/vts/radio_messaging_indication.cpp @@ -16,7 +16,7 @@ #include "radio_messaging_utils.h" -RadioMessagingIndication::RadioMessagingIndication(RadioMessagingTest& parent) +RadioMessagingIndication::RadioMessagingIndication(RadioServiceTest& parent) : parent_messaging(parent) {} ndk::ScopedAStatus RadioMessagingIndication::cdmaNewSms(RadioIndicationType /*type*/, diff --git a/radio/aidl/vts/radio_messaging_response.cpp b/radio/aidl/vts/radio_messaging_response.cpp index d73278f152..718df7e60b 100644 --- a/radio/aidl/vts/radio_messaging_response.cpp +++ b/radio/aidl/vts/radio_messaging_response.cpp @@ -16,7 +16,7 @@ #include "radio_messaging_utils.h" -RadioMessagingResponse::RadioMessagingResponse(RadioResponseWaiter& parent) +RadioMessagingResponse::RadioMessagingResponse(RadioServiceTest& parent) : parent_messaging(parent) {} ndk::ScopedAStatus RadioMessagingResponse::acknowledgeIncomingGsmSmsWithPduResponse( diff --git a/radio/aidl/vts/radio_messaging_test.cpp b/radio/aidl/vts/radio_messaging_test.cpp index 58aeaab3f4..8abd91d709 100644 --- a/radio/aidl/vts/radio_messaging_test.cpp +++ b/radio/aidl/vts/radio_messaging_test.cpp @@ -44,12 +44,17 @@ void RadioMessagingTest::SetUp() { radio_messaging->setResponseFunctions(radioRsp_messaging, radioInd_messaging); + // Assert IRadioSim exists and SIM is present before testing + radio_sim = sim::IRadioSim::fromBinder(ndk::SpAIBinder( + AServiceManager_waitForService("android.hardware.radio.sim.IRadioSim/slot1"))); + ASSERT_NE(nullptr, radio_sim.get()); + updateSimCardStatus(); + EXPECT_EQ(CardStatus::STATE_PRESENT, cardStatus.cardState); + // Assert IRadioConfig exists before testing - std::shared_ptr radioConfig = - aidl::android::hardware::radio::config::IRadioConfig::fromBinder( - ndk::SpAIBinder(AServiceManager_waitForService( - "android.hardware.radio.config.IRadioConfig/default"))); - ASSERT_NE(nullptr, radioConfig.get()); + radio_config = config::IRadioConfig::fromBinder(ndk::SpAIBinder( + AServiceManager_waitForService("android.hardware.radio.config.IRadioConfig/default"))); + ASSERT_NE(nullptr, radio_config.get()); } /* diff --git a/radio/aidl/vts/radio_messaging_utils.h b/radio/aidl/vts/radio_messaging_utils.h index 96cde088f3..7bb99cdcab 100644 --- a/radio/aidl/vts/radio_messaging_utils.h +++ b/radio/aidl/vts/radio_messaging_utils.h @@ -29,10 +29,10 @@ class RadioMessagingTest; /* Callback class for radio messaging response */ class RadioMessagingResponse : public BnRadioMessagingResponse { protected: - RadioResponseWaiter& parent_messaging; + RadioServiceTest& parent_messaging; public: - RadioMessagingResponse(RadioResponseWaiter& parent_messaging); + RadioMessagingResponse(RadioServiceTest& parent_messaging); virtual ~RadioMessagingResponse() = default; RadioResponseInfo rspInfo; @@ -110,10 +110,10 @@ class RadioMessagingResponse : public BnRadioMessagingResponse { /* Callback class for radio messaging indication */ class RadioMessagingIndication : public BnRadioMessagingIndication { protected: - RadioMessagingTest& parent_messaging; + RadioServiceTest& parent_messaging; public: - RadioMessagingIndication(RadioMessagingTest& parent_messaging); + RadioMessagingIndication(RadioServiceTest& parent_messaging); virtual ~RadioMessagingIndication() = default; virtual ndk::ScopedAStatus cdmaNewSms(RadioIndicationType type, @@ -139,8 +139,7 @@ class RadioMessagingIndication : public BnRadioMessagingIndication { }; // The main test class for Radio AIDL Messaging. -class RadioMessagingTest : public ::testing::TestWithParam, - public RadioResponseWaiter { +class RadioMessagingTest : public ::testing::TestWithParam, public RadioServiceTest { public: virtual void SetUp() override; diff --git a/radio/aidl/vts/radio_modem_indication.cpp b/radio/aidl/vts/radio_modem_indication.cpp index 17f37a8dd5..0bfcd669c7 100644 --- a/radio/aidl/vts/radio_modem_indication.cpp +++ b/radio/aidl/vts/radio_modem_indication.cpp @@ -16,7 +16,7 @@ #include "radio_modem_utils.h" -RadioModemIndication::RadioModemIndication(RadioModemTest& parent) : parent_modem(parent) {} +RadioModemIndication::RadioModemIndication(RadioServiceTest& parent) : parent_modem(parent) {} ndk::ScopedAStatus RadioModemIndication::hardwareConfigChanged( RadioIndicationType /*type*/, const std::vector& /*configs*/) { diff --git a/radio/aidl/vts/radio_modem_response.cpp b/radio/aidl/vts/radio_modem_response.cpp index 7ac590f4db..53bfab40a9 100644 --- a/radio/aidl/vts/radio_modem_response.cpp +++ b/radio/aidl/vts/radio_modem_response.cpp @@ -16,7 +16,7 @@ #include "radio_modem_utils.h" -RadioModemResponse::RadioModemResponse(RadioResponseWaiter& parent) : parent_modem(parent) {} +RadioModemResponse::RadioModemResponse(RadioServiceTest& parent) : parent_modem(parent) {} ndk::ScopedAStatus RadioModemResponse::acknowledgeRequest(int32_t /*serial*/) { return ndk::ScopedAStatus::ok(); diff --git a/radio/aidl/vts/radio_modem_test.cpp b/radio/aidl/vts/radio_modem_test.cpp index 406927f5bc..b40bb7b573 100644 --- a/radio/aidl/vts/radio_modem_test.cpp +++ b/radio/aidl/vts/radio_modem_test.cpp @@ -44,12 +44,17 @@ void RadioModemTest::SetUp() { radio_modem->setResponseFunctions(radioRsp_modem, radioInd_modem); + // Assert IRadioSim exists and SIM is present before testing + radio_sim = sim::IRadioSim::fromBinder(ndk::SpAIBinder( + AServiceManager_waitForService("android.hardware.radio.sim.IRadioSim/slot1"))); + ASSERT_NE(nullptr, radio_sim.get()); + updateSimCardStatus(); + EXPECT_EQ(CardStatus::STATE_PRESENT, cardStatus.cardState); + // Assert IRadioConfig exists before testing - std::shared_ptr radioConfig = - aidl::android::hardware::radio::config::IRadioConfig::fromBinder( - ndk::SpAIBinder(AServiceManager_waitForService( - "android.hardware.radio.config.IRadioConfig/default"))); - ASSERT_NE(nullptr, radioConfig.get()); + radio_config = config::IRadioConfig::fromBinder(ndk::SpAIBinder( + AServiceManager_waitForService("android.hardware.radio.config.IRadioConfig/default"))); + ASSERT_NE(nullptr, radio_config.get()); } /* diff --git a/radio/aidl/vts/radio_modem_utils.h b/radio/aidl/vts/radio_modem_utils.h index cd9a30d315..8779e0cbd2 100644 --- a/radio/aidl/vts/radio_modem_utils.h +++ b/radio/aidl/vts/radio_modem_utils.h @@ -22,7 +22,6 @@ #include "radio_aidl_hal_utils.h" -using namespace aidl::android::hardware::radio::config; using namespace aidl::android::hardware::radio::modem; class RadioModemTest; @@ -30,10 +29,10 @@ class RadioModemTest; /* Callback class for radio modem response */ class RadioModemResponse : public BnRadioModemResponse { protected: - RadioResponseWaiter& parent_modem; + RadioServiceTest& parent_modem; public: - RadioModemResponse(RadioResponseWaiter& parent_modem); + RadioModemResponse(RadioServiceTest& parent_modem); virtual ~RadioModemResponse() = default; RadioResponseInfo rspInfo; @@ -87,10 +86,10 @@ class RadioModemResponse : public BnRadioModemResponse { /* Callback class for radio modem indication */ class RadioModemIndication : public BnRadioModemIndication { protected: - RadioModemTest& parent_modem; + RadioServiceTest& parent_modem; public: - RadioModemIndication(RadioModemTest& parent_modem); + RadioModemIndication(RadioServiceTest& parent_modem); virtual ~RadioModemIndication() = default; virtual ndk::ScopedAStatus hardwareConfigChanged( @@ -109,7 +108,7 @@ class RadioModemIndication : public BnRadioModemIndication { }; // The main test class for Radio AIDL Modem. -class RadioModemTest : public ::testing::TestWithParam, public RadioResponseWaiter { +class RadioModemTest : public ::testing::TestWithParam, public RadioServiceTest { public: virtual void SetUp() override; diff --git a/radio/aidl/vts/radio_network_indication.cpp b/radio/aidl/vts/radio_network_indication.cpp index 03caf3bbf5..7acbff4b2e 100644 --- a/radio/aidl/vts/radio_network_indication.cpp +++ b/radio/aidl/vts/radio_network_indication.cpp @@ -16,7 +16,7 @@ #include "radio_network_utils.h" -RadioNetworkIndication::RadioNetworkIndication(RadioNetworkTest& parent) : parent_network(parent) {} +RadioNetworkIndication::RadioNetworkIndication(RadioServiceTest& parent) : parent_network(parent) {} ndk::ScopedAStatus RadioNetworkIndication::barringInfoChanged( RadioIndicationType /*type*/, const CellIdentity& /*cellIdentity*/, diff --git a/radio/aidl/vts/radio_network_response.cpp b/radio/aidl/vts/radio_network_response.cpp index dc40e6f916..ccae0f3458 100644 --- a/radio/aidl/vts/radio_network_response.cpp +++ b/radio/aidl/vts/radio_network_response.cpp @@ -16,7 +16,7 @@ #include "radio_network_utils.h" -RadioNetworkResponse::RadioNetworkResponse(RadioResponseWaiter& parent) : parent_network(parent) {} +RadioNetworkResponse::RadioNetworkResponse(RadioServiceTest& parent) : parent_network(parent) {} ndk::ScopedAStatus RadioNetworkResponse::acknowledgeRequest(int32_t /*serial*/) { return ndk::ScopedAStatus::ok(); @@ -112,7 +112,7 @@ ndk::ScopedAStatus RadioNetworkResponse::getVoiceRadioTechnologyResponse( ndk::ScopedAStatus RadioNetworkResponse::getVoiceRegistrationStateResponse( const RadioResponseInfo& info, const RegStateResult& regResponse) { rspInfo = info; - regStateResp.regState = regResponse.regState; + voiceRegResp.regState = regResponse.regState; parent_network.notify(info.serial); return ndk::ScopedAStatus::ok(); } diff --git a/radio/aidl/vts/radio_network_test.cpp b/radio/aidl/vts/radio_network_test.cpp index 08af636c90..93c4c35686 100644 --- a/radio/aidl/vts/radio_network_test.cpp +++ b/radio/aidl/vts/radio_network_test.cpp @@ -45,12 +45,17 @@ void RadioNetworkTest::SetUp() { radio_network->setResponseFunctions(radioRsp_network, radioInd_network); + // Assert IRadioSim exists and SIM is present before testing + radio_sim = sim::IRadioSim::fromBinder(ndk::SpAIBinder( + AServiceManager_waitForService("android.hardware.radio.sim.IRadioSim/slot1"))); + ASSERT_NE(nullptr, radio_sim.get()); + updateSimCardStatus(); + EXPECT_EQ(CardStatus::STATE_PRESENT, cardStatus.cardState); + // Assert IRadioConfig exists before testing - std::shared_ptr radioConfig = - aidl::android::hardware::radio::config::IRadioConfig::fromBinder( - ndk::SpAIBinder(AServiceManager_waitForService( - "android.hardware.radio.config.IRadioConfig/default"))); - ASSERT_NE(nullptr, radioConfig.get()); + radio_config = config::IRadioConfig::fromBinder(ndk::SpAIBinder( + AServiceManager_waitForService("android.hardware.radio.config.IRadioConfig/default"))); + ASSERT_NE(nullptr, radio_config.get()); } /* diff --git a/radio/aidl/vts/radio_network_utils.h b/radio/aidl/vts/radio_network_utils.h index 79367215eb..9f7676969d 100644 --- a/radio/aidl/vts/radio_network_utils.h +++ b/radio/aidl/vts/radio_network_utils.h @@ -29,10 +29,10 @@ class RadioNetworkTest; /* Callback class for radio network response */ class RadioNetworkResponse : public BnRadioNetworkResponse { protected: - RadioResponseWaiter& parent_network; + RadioServiceTest& parent_network; public: - RadioNetworkResponse(RadioResponseWaiter& parent_network); + RadioNetworkResponse(RadioServiceTest& parent_network); virtual ~RadioNetworkResponse() = default; RadioResponseInfo rspInfo; @@ -40,7 +40,7 @@ class RadioNetworkResponse : public BnRadioNetworkResponse { std::vector networkInfos; bool isNrDualConnectivityEnabled; int networkTypeBitmapResponse; - RegStateResult regStateResp; + RegStateResult voiceRegResp; CellIdentity barringCellIdentity; std::vector barringInfos; UsageSetting usageSetting; @@ -150,10 +150,10 @@ class RadioNetworkResponse : public BnRadioNetworkResponse { /* Callback class for radio network indication */ class RadioNetworkIndication : public BnRadioNetworkIndication { protected: - RadioNetworkTest& parent_network; + RadioServiceTest& parent_network; public: - RadioNetworkIndication(RadioNetworkTest& parent_network); + RadioNetworkIndication(RadioServiceTest& parent_network); virtual ~RadioNetworkIndication() = default; virtual ndk::ScopedAStatus barringInfoChanged( @@ -202,7 +202,7 @@ class RadioNetworkIndication : public BnRadioNetworkIndication { }; // The main test class for Radio AIDL Network. -class RadioNetworkTest : public ::testing::TestWithParam, public RadioResponseWaiter { +class RadioNetworkTest : public ::testing::TestWithParam, public RadioServiceTest { public: virtual void SetUp() override; diff --git a/radio/aidl/vts/radio_sim_indication.cpp b/radio/aidl/vts/radio_sim_indication.cpp index 03858458b1..c03d947828 100644 --- a/radio/aidl/vts/radio_sim_indication.cpp +++ b/radio/aidl/vts/radio_sim_indication.cpp @@ -16,7 +16,7 @@ #include "radio_sim_utils.h" -RadioSimIndication::RadioSimIndication(RadioSimTest& parent) : parent_sim(parent) {} +RadioSimIndication::RadioSimIndication(RadioServiceTest& parent) : parent_sim(parent) {} ndk::ScopedAStatus RadioSimIndication::carrierInfoForImsiEncryption(RadioIndicationType /*info*/) { return ndk::ScopedAStatus::ok(); diff --git a/radio/aidl/vts/radio_sim_response.cpp b/radio/aidl/vts/radio_sim_response.cpp index 2c796faa12..a783f43e0a 100644 --- a/radio/aidl/vts/radio_sim_response.cpp +++ b/radio/aidl/vts/radio_sim_response.cpp @@ -16,7 +16,7 @@ #include "radio_sim_utils.h" -RadioSimResponse::RadioSimResponse(RadioResponseWaiter& parent) : parent_sim(parent) {} +RadioSimResponse::RadioSimResponse(RadioServiceTest& parent) : parent_sim(parent) {} ndk::ScopedAStatus RadioSimResponse::acknowledgeRequest(int32_t /*serial*/) { return ndk::ScopedAStatus::ok(); diff --git a/radio/aidl/vts/radio_sim_test.cpp b/radio/aidl/vts/radio_sim_test.cpp index c70219ff94..5db77f6600 100644 --- a/radio/aidl/vts/radio_sim_test.cpp +++ b/radio/aidl/vts/radio_sim_test.cpp @@ -43,20 +43,23 @@ void RadioSimTest::SetUp() { ASSERT_NE(nullptr, radioInd_sim.get()); radio_sim->setResponseFunctions(radioRsp_sim, radioInd_sim); + // Assert SIM is present before testing + updateSimCardStatus(); + EXPECT_EQ(CardStatus::STATE_PRESENT, cardStatus.cardState); // Assert IRadioConfig exists before testing - std::shared_ptr radioConfig = - aidl::android::hardware::radio::config::IRadioConfig::fromBinder( - ndk::SpAIBinder(AServiceManager_waitForService( - "android.hardware.radio.config.IRadioConfig/default"))); - ASSERT_NE(nullptr, radioConfig.get()); + radio_config = config::IRadioConfig::fromBinder(ndk::SpAIBinder( + AServiceManager_waitForService("android.hardware.radio.config.IRadioConfig/default"))); + ASSERT_NE(nullptr, radio_config.get()); } -ndk::ScopedAStatus RadioSimTest::updateSimCardStatus() { +void RadioSimTest::updateSimCardStatus() { serial = GetRandomSerialNumber(); radio_sim->getIccCardStatus(serial); EXPECT_EQ(std::cv_status::no_timeout, wait()); - return ndk::ScopedAStatus::ok(); + EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_sim->rspInfo.type); + EXPECT_EQ(serial, radioRsp_sim->rspInfo.serial); + EXPECT_EQ(RadioError::NONE, radioRsp_sim->rspInfo.error); } /* diff --git a/radio/aidl/vts/radio_sim_utils.h b/radio/aidl/vts/radio_sim_utils.h index 6cb6790453..b5e365d436 100644 --- a/radio/aidl/vts/radio_sim_utils.h +++ b/radio/aidl/vts/radio_sim_utils.h @@ -29,10 +29,10 @@ class RadioSimTest; /* Callback class for radio SIM response */ class RadioSimResponse : public BnRadioSimResponse { protected: - RadioResponseWaiter& parent_sim; + RadioServiceTest& parent_sim; public: - RadioSimResponse(RadioResponseWaiter& parent_sim); + RadioSimResponse(RadioServiceTest& parent_sim); virtual ~RadioSimResponse() = default; RadioResponseInfo rspInfo; @@ -152,10 +152,10 @@ class RadioSimResponse : public BnRadioSimResponse { /* Callback class for radio SIM indication */ class RadioSimIndication : public BnRadioSimIndication { protected: - RadioSimTest& parent_sim; + RadioServiceTest& parent_sim; public: - RadioSimIndication(RadioSimTest& parent_sim); + RadioSimIndication(RadioServiceTest& parent_sim); virtual ~RadioSimIndication() = default; virtual ndk::ScopedAStatus carrierInfoForImsiEncryption(RadioIndicationType info) override; @@ -190,16 +190,14 @@ class RadioSimIndication : public BnRadioSimIndication { }; // The main test class for Radio AIDL SIM. -class RadioSimTest : public ::testing::TestWithParam, public RadioResponseWaiter { - protected: - /* Update Sim Card Status */ - virtual ndk::ScopedAStatus updateSimCardStatus(); - +class RadioSimTest : public ::testing::TestWithParam, public RadioServiceTest { public: virtual void SetUp() override; - /* radio SIM service handle */ - std::shared_ptr radio_sim; + /* Override updateSimCardStatus in RadioServiceTest to not call setResponseFunctions */ + void updateSimCardStatus(); + + /* radio SIM service handle in RadioServiceTest */ /* radio SIM response handle */ std::shared_ptr radioRsp_sim; /* radio SIM indication handle */ diff --git a/radio/aidl/vts/radio_voice_indication.cpp b/radio/aidl/vts/radio_voice_indication.cpp index 2c468174e8..d814c1857e 100644 --- a/radio/aidl/vts/radio_voice_indication.cpp +++ b/radio/aidl/vts/radio_voice_indication.cpp @@ -16,7 +16,7 @@ #include "radio_voice_utils.h" -RadioVoiceIndication::RadioVoiceIndication(RadioVoiceTest& parent) : parent_voice(parent) {} +RadioVoiceIndication::RadioVoiceIndication(RadioServiceTest& parent) : parent_voice(parent) {} ndk::ScopedAStatus RadioVoiceIndication::callRing(RadioIndicationType /*type*/, bool /*isGsm*/, const CdmaSignalInfoRecord& /*record*/) { diff --git a/radio/aidl/vts/radio_voice_response.cpp b/radio/aidl/vts/radio_voice_response.cpp index ca350c6660..a491613b60 100644 --- a/radio/aidl/vts/radio_voice_response.cpp +++ b/radio/aidl/vts/radio_voice_response.cpp @@ -16,7 +16,7 @@ #include "radio_voice_utils.h" -RadioVoiceResponse::RadioVoiceResponse(RadioResponseWaiter& parent) : parent_voice(parent) {} +RadioVoiceResponse::RadioVoiceResponse(RadioServiceTest& parent) : parent_voice(parent) {} ndk::ScopedAStatus RadioVoiceResponse::acceptCallResponse(const RadioResponseInfo& /*info*/) { return ndk::ScopedAStatus::ok(); diff --git a/radio/aidl/vts/radio_voice_test.cpp b/radio/aidl/vts/radio_voice_test.cpp index 7a0bedd3ee..717f3f0be9 100644 --- a/radio/aidl/vts/radio_voice_test.cpp +++ b/radio/aidl/vts/radio_voice_test.cpp @@ -45,12 +45,26 @@ void RadioVoiceTest::SetUp() { radio_voice->setResponseFunctions(radioRsp_voice, radioInd_voice); + // Assert IRadioSim exists and SIM is present before testing + radio_sim = sim::IRadioSim::fromBinder(ndk::SpAIBinder( + AServiceManager_waitForService("android.hardware.radio.sim.IRadioSim/slot1"))); + ASSERT_NE(nullptr, radio_sim.get()); + updateSimCardStatus(); + EXPECT_EQ(CardStatus::STATE_PRESENT, cardStatus.cardState); + // Assert IRadioConfig exists before testing - std::shared_ptr radioConfig = - aidl::android::hardware::radio::config::IRadioConfig::fromBinder( - ndk::SpAIBinder(AServiceManager_waitForService( - "android.hardware.radio.config.IRadioConfig/default"))); - ASSERT_NE(nullptr, radioConfig.get()); + radio_config = config::IRadioConfig::fromBinder(ndk::SpAIBinder( + AServiceManager_waitForService("android.hardware.radio.config.IRadioConfig/default"))); + ASSERT_NE(nullptr, radio_config.get()); + + if (isDsDsEnabled() || isTsTsEnabled()) { + radio_network = IRadioNetwork::fromBinder(ndk::SpAIBinder(AServiceManager_waitForService( + "android.hardware.radio.network.IRadioNetwork/slot1"))); + ASSERT_NE(nullptr, radio_network.get()); + radioRsp_network = ndk::SharedRefBase::make(*this); + radioInd_network = ndk::SharedRefBase::make(*this); + radio_network->setResponseFunctions(radioRsp_network, radioInd_network); + } } ndk::ScopedAStatus RadioVoiceTest::clearPotentialEstablishedCalls() { @@ -113,16 +127,13 @@ TEST_P(RadioVoiceTest, emergencyDial) { // In DSDS or TSTS, we only check the result if the current slot is IN_SERVICE // or Emergency_Only. if (isDsDsEnabled() || isTsTsEnabled()) { - // TODO(b/210712359): maybe create a local RadioNetwork instance - /** serial = GetRandomSerialNumber(); - radio_v1_6->getVoiceRegistrationState(serial); + radio_network->getVoiceRegistrationState(serial); EXPECT_EQ(std::cv_status::no_timeout, wait()); - if (isVoiceEmergencyOnly(radioRsp_v1_6->voiceRegResp.regState) || - isVoiceInService(radioRsp_v1_6->voiceRegResp.regState)) { + if (isVoiceEmergencyOnly(radioRsp_network->voiceRegResp.regState) || + isVoiceInService(radioRsp_network->voiceRegResp.regState)) { EXPECT_EQ(RadioError::NONE, rspEmergencyDial); } - **/ } else { EXPECT_EQ(RadioError::NONE, rspEmergencyDial); } @@ -171,16 +182,13 @@ TEST_P(RadioVoiceTest, emergencyDial_withServices) { // In DSDS or TSTS, we only check the result if the current slot is IN_SERVICE // or Emergency_Only. if (isDsDsEnabled() || isTsTsEnabled()) { - // TODO(b/210712359): maybe create a local RadioNetwork instance - /** serial = GetRandomSerialNumber(); - radio_v1_6->getVoiceRegistrationState_1_6(serial); + radio_network->getVoiceRegistrationState(serial); EXPECT_EQ(std::cv_status::no_timeout, wait()); - if (isVoiceEmergencyOnly(radioRsp_v1_6->voiceRegResp.regState) || - isVoiceInService(radioRsp_v1_6->voiceRegResp.regState)) { + if (isVoiceEmergencyOnly(radioRsp_network->voiceRegResp.regState) || + isVoiceInService(radioRsp_network->voiceRegResp.regState)) { EXPECT_EQ(RadioError::NONE, rspEmergencyDial); } - **/ } else { EXPECT_EQ(RadioError::NONE, rspEmergencyDial); } @@ -228,16 +236,13 @@ TEST_P(RadioVoiceTest, emergencyDial_withEmergencyRouting) { // In DSDS or TSTS, we only check the result if the current slot is IN_SERVICE // or Emergency_Only. if (isDsDsEnabled() || isTsTsEnabled()) { - // TODO(b/210712359): maybe create a local RadioNetwork instance - /** serial = GetRandomSerialNumber(); - radio_v1_6->getVoiceRegistrationState_1_6(serial); + radio_network->getVoiceRegistrationState(serial); EXPECT_EQ(std::cv_status::no_timeout, wait()); - if (isVoiceEmergencyOnly(radioRsp_v1_6->voiceRegResp.regState) || - isVoiceInService(radioRsp_v1_6->voiceRegResp.regState)) { + if (isVoiceEmergencyOnly(radioRsp_network->voiceRegResp.regState) || + isVoiceInService(radioRsp_network->voiceRegResp.regState)) { EXPECT_EQ(RadioError::NONE, rspEmergencyDial); } - **/ } else { EXPECT_EQ(RadioError::NONE, rspEmergencyDial); } diff --git a/radio/aidl/vts/radio_voice_utils.h b/radio/aidl/vts/radio_voice_utils.h index a676a7fcbb..d61bf1eee8 100644 --- a/radio/aidl/vts/radio_voice_utils.h +++ b/radio/aidl/vts/radio_voice_utils.h @@ -21,6 +21,7 @@ #include #include "radio_aidl_hal_utils.h" +#include "radio_network_utils.h" using namespace aidl::android::hardware::radio::voice; @@ -29,10 +30,10 @@ class RadioVoiceTest; /* Callback class for radio voice response */ class RadioVoiceResponse : public BnRadioVoiceResponse { protected: - RadioResponseWaiter& parent_voice; + RadioServiceTest& parent_voice; public: - RadioVoiceResponse(RadioResponseWaiter& parent_voice); + RadioVoiceResponse(RadioServiceTest& parent_voice); virtual ~RadioVoiceResponse() = default; RadioResponseInfo rspInfo; @@ -130,10 +131,10 @@ class RadioVoiceResponse : public BnRadioVoiceResponse { /* Callback class for radio voice indication */ class RadioVoiceIndication : public BnRadioVoiceIndication { protected: - RadioVoiceTest& parent_voice; + RadioServiceTest& parent_voice; public: - RadioVoiceIndication(RadioVoiceTest& parent_voice); + RadioVoiceIndication(RadioServiceTest& parent_voice); virtual ~RadioVoiceIndication() = default; virtual ndk::ScopedAStatus callRing(RadioIndicationType type, bool isGsm, @@ -175,10 +176,13 @@ class RadioVoiceIndication : public BnRadioVoiceIndication { }; // The main test class for Radio AIDL Voice. -class RadioVoiceTest : public ::testing::TestWithParam, public RadioResponseWaiter { +class RadioVoiceTest : public ::testing::TestWithParam, public RadioServiceTest { protected: /* Clear Potential Established Calls */ virtual ndk::ScopedAStatus clearPotentialEstablishedCalls(); + std::shared_ptr radio_network; + std::shared_ptr radioRsp_network; + std::shared_ptr radioInd_network; public: virtual void SetUp() override;