mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-02-01 11:36:00 +00:00
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 Merged-In: Ic82ffd2feacc107e9b291ef3aab861d0c1496489
This commit is contained in:
@@ -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",
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
#include <android/binder_process.h>
|
||||
|
||||
#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,
|
||||
|
||||
@@ -18,12 +18,14 @@
|
||||
#include "radio_aidl_hal_utils.h"
|
||||
#include <iostream>
|
||||
#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<std::mutex> 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<std::mutex> 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<RadioConfigResponse> 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<RadioConfigResponse> radioConfigRsp =
|
||||
ndk::SharedRefBase::make<RadioConfigResponse>(*this);
|
||||
std::shared_ptr<RadioConfigIndication> radioConfigInd =
|
||||
ndk::SharedRefBase::make<RadioConfigIndication>(*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;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 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<RadioSimResponse> radioSimRsp =
|
||||
ndk::SharedRefBase::make<RadioSimResponse>(*this);
|
||||
std::shared_ptr<RadioSimIndication> radioSimInd =
|
||||
ndk::SharedRefBase::make<RadioSimIndication>(*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);
|
||||
}
|
||||
|
||||
@@ -19,15 +19,20 @@
|
||||
#include <aidl/Gtest.h>
|
||||
#include <aidl/Vintf.h>
|
||||
#include <aidl/android/hardware/radio/RadioError.h>
|
||||
#include <aidl/android/hardware/radio/config/IRadioConfig.h>
|
||||
#include <aidl/android/hardware/radio/network/RegState.h>
|
||||
#include <aidl/android/hardware/radio/sim/CardStatus.h>
|
||||
#include <aidl/android/hardware/radio/sim/IRadioSim.h>
|
||||
#include <utils/Log.h>
|
||||
#include <vector>
|
||||
|
||||
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<config::IRadioConfig> radio_config;
|
||||
std::shared_ptr<sim::IRadioSim> 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();
|
||||
};
|
||||
|
||||
24
radio/aidl/vts/radio_config_indication.cpp
Normal file
24
radio/aidl/vts/radio_config_indication.cpp
Normal file
@@ -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<SimSlotStatus>& /*slotStatus*/) {
|
||||
return ndk::ScopedAStatus::ok();
|
||||
}
|
||||
59
radio/aidl/vts/radio_config_response.cpp
Normal file
59
radio/aidl/vts/radio_config_response.cpp
Normal file
@@ -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<SimSlotStatus>& /* 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();
|
||||
}
|
||||
56
radio/aidl/vts/radio_config_test.cpp
Normal file
56
radio/aidl/vts/radio_config_test.cpp
Normal file
@@ -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 <android-base/logging.h>
|
||||
#include <android/binder_manager.h>
|
||||
|
||||
#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<RadioConfigResponse>(*this);
|
||||
ASSERT_NE(nullptr, radioRsp_config.get());
|
||||
|
||||
count_ = 0;
|
||||
|
||||
radioInd_config = ndk::SharedRefBase::make<RadioConfigIndication>(*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());
|
||||
}
|
||||
86
radio/aidl/vts/radio_config_utils.h
Normal file
86
radio/aidl/vts/radio_config_utils.h
Normal file
@@ -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 <aidl/android/hardware/radio/config/BnRadioConfigIndication.h>
|
||||
#include <aidl/android/hardware/radio/config/BnRadioConfigResponse.h>
|
||||
#include <aidl/android/hardware/radio/config/IRadioConfig.h>
|
||||
|
||||
#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<SimSlotStatus>& 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<SimSlotStatus>& slotStatus) override;
|
||||
};
|
||||
|
||||
// The main test class for Radio AIDL Config.
|
||||
class RadioConfigTest : public ::testing::TestWithParam<std::string>, public RadioServiceTest {
|
||||
public:
|
||||
virtual void SetUp() override;
|
||||
ndk::ScopedAStatus updateSimCardStatus();
|
||||
|
||||
/* radio config service handle in RadioServiceTest */
|
||||
/* radio config response handle */
|
||||
std::shared_ptr<RadioConfigResponse> radioRsp_config;
|
||||
/* radio config indication handle */
|
||||
std::shared_ptr<RadioConfigIndication> radioInd_config;
|
||||
};
|
||||
@@ -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<SetupDataCallResult>& /*dcList*/) {
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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<aidl::android::hardware::radio::config::IRadioConfig> 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() {
|
||||
|
||||
@@ -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<std::string>, public RadioResponseWaiter {
|
||||
class RadioDataTest : public ::testing::TestWithParam<std::string>, public RadioServiceTest {
|
||||
protected:
|
||||
/* Get current data call list */
|
||||
ndk::ScopedAStatus getDataCallList();
|
||||
|
||||
@@ -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*/,
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
#include "radio_messaging_utils.h"
|
||||
|
||||
RadioMessagingResponse::RadioMessagingResponse(RadioResponseWaiter& parent)
|
||||
RadioMessagingResponse::RadioMessagingResponse(RadioServiceTest& parent)
|
||||
: parent_messaging(parent) {}
|
||||
|
||||
ndk::ScopedAStatus RadioMessagingResponse::acknowledgeIncomingGsmSmsWithPduResponse(
|
||||
|
||||
@@ -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<aidl::android::hardware::radio::config::IRadioConfig> 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());
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -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<std::string>,
|
||||
public RadioResponseWaiter {
|
||||
class RadioMessagingTest : public ::testing::TestWithParam<std::string>, public RadioServiceTest {
|
||||
public:
|
||||
virtual void SetUp() override;
|
||||
|
||||
|
||||
@@ -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<HardwareConfig>& /*configs*/) {
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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<aidl::android::hardware::radio::config::IRadioConfig> 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());
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -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<std::string>, public RadioResponseWaiter {
|
||||
class RadioModemTest : public ::testing::TestWithParam<std::string>, public RadioServiceTest {
|
||||
public:
|
||||
virtual void SetUp() override;
|
||||
|
||||
|
||||
@@ -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*/,
|
||||
|
||||
@@ -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();
|
||||
@@ -109,7 +109,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();
|
||||
}
|
||||
|
||||
@@ -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<aidl::android::hardware::radio::config::IRadioConfig> 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());
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -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<OperatorInfo> networkInfos;
|
||||
bool isNrDualConnectivityEnabled;
|
||||
int networkTypeBitmapResponse;
|
||||
RegStateResult regStateResp;
|
||||
RegStateResult voiceRegResp;
|
||||
CellIdentity barringCellIdentity;
|
||||
std::vector<BarringInfo> barringInfos;
|
||||
|
||||
@@ -149,10 +149,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(
|
||||
@@ -201,7 +201,7 @@ class RadioNetworkIndication : public BnRadioNetworkIndication {
|
||||
};
|
||||
|
||||
// The main test class for Radio AIDL Network.
|
||||
class RadioNetworkTest : public ::testing::TestWithParam<std::string>, public RadioResponseWaiter {
|
||||
class RadioNetworkTest : public ::testing::TestWithParam<std::string>, public RadioServiceTest {
|
||||
public:
|
||||
virtual void SetUp() override;
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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<aidl::android::hardware::radio::config::IRadioConfig> 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);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -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<std::string>, public RadioResponseWaiter {
|
||||
protected:
|
||||
/* Update Sim Card Status */
|
||||
virtual ndk::ScopedAStatus updateSimCardStatus();
|
||||
|
||||
class RadioSimTest : public ::testing::TestWithParam<std::string>, public RadioServiceTest {
|
||||
public:
|
||||
virtual void SetUp() override;
|
||||
|
||||
/* radio SIM service handle */
|
||||
std::shared_ptr<IRadioSim> 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<RadioSimResponse> radioRsp_sim;
|
||||
/* radio SIM indication handle */
|
||||
|
||||
@@ -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*/) {
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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<aidl::android::hardware::radio::config::IRadioConfig> 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<RadioNetworkResponse>(*this);
|
||||
radioInd_network = ndk::SharedRefBase::make<RadioNetworkIndication>(*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);
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
#include <aidl/android/hardware/radio/voice/IRadioVoice.h>
|
||||
|
||||
#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<std::string>, public RadioResponseWaiter {
|
||||
class RadioVoiceTest : public ::testing::TestWithParam<std::string>, public RadioServiceTest {
|
||||
protected:
|
||||
/* Clear Potential Established Calls */
|
||||
virtual ndk::ScopedAStatus clearPotentialEstablishedCalls();
|
||||
std::shared_ptr<network::IRadioNetwork> radio_network;
|
||||
std::shared_ptr<RadioNetworkResponse> radioRsp_network;
|
||||
std::shared_ptr<RadioNetworkIndication> radioInd_network;
|
||||
|
||||
public:
|
||||
virtual void SetUp() override;
|
||||
|
||||
Reference in New Issue
Block a user