diff --git a/radio/1.1/vts/functional/radio_hidl_hal_test.cpp b/radio/1.1/vts/functional/radio_hidl_hal_test.cpp index 020168e0a8..509883d693 100644 --- a/radio/1.1/vts/functional/radio_hidl_hal_test.cpp +++ b/radio/1.1/vts/functional/radio_hidl_hal_test.cpp @@ -16,11 +16,40 @@ #include +bool isServiceValidForDeviceConfiguration(hidl_string& serviceName) { + if (isSsSsEnabled()) { + // Device is configured as SSSS. + if (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) { + 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) { + ALOGI("%s instance is not valid for TSTS device.", serviceName.c_str()); + return false; + } + } + return true; +} + void RadioHidlTest_v1_1::SetUp() { - radio_v1_1 = ::android::hardware::radio::V1_1::IRadio::getService(GetParam()); + hidl_string serviceName = GetParam(); + if (!isServiceValidForDeviceConfiguration(serviceName)) { + ALOGI("Skipped the test due to device configuration."); + GTEST_SKIP(); + } + radio_v1_1 = ::android::hardware::radio::V1_1::IRadio::getService(serviceName); if (radio_v1_1 == NULL) { sleep(60); - radio_v1_1 = ::android::hardware::radio::V1_1::IRadio::getService(GetParam()); + radio_v1_1 = ::android::hardware::radio::V1_1::IRadio::getService(serviceName); } ASSERT_NE(nullptr, radio_v1_1.get()); diff --git a/radio/1.1/vts/functional/radio_hidl_hal_utils_v1_1.h b/radio/1.1/vts/functional/radio_hidl_hal_utils_v1_1.h index bafde77e06..e79a4ed4e5 100644 --- a/radio/1.1/vts/functional/radio_hidl_hal_utils_v1_1.h +++ b/radio/1.1/vts/functional/radio_hidl_hal_utils_v1_1.h @@ -43,6 +43,15 @@ using ::android::sp; #define SKIP_TEST_IF_REQUEST_NOT_SUPPORTED_WITH_HAL_VERSION_AT_LEAST(__ver__) \ SKIP_TEST_IF_REQUEST_NOT_SUPPORTED_WITH_HAL(__ver__, radio_v1_1, radioRsp_v1_1) +// HAL instance name for SIM slot 1 or single SIM device +#define RADIO_SERVICE_SLOT1_NAME "slot1" + +// HAL instance name for SIM slot 2 on dual SIM device +#define RADIO_SERVICE_SLOT2_NAME "slot2" + +// HAL instance name for SIM slot 3 on triple SIM device +#define RADIO_SERVICE_SLOT3_NAME "slot3" + class RadioHidlTest_v1_1; extern CardStatus cardStatus; diff --git a/radio/1.2/vts/functional/radio_hidl_hal_test.cpp b/radio/1.2/vts/functional/radio_hidl_hal_test.cpp index 4845c7f3d2..feadafcd5f 100644 --- a/radio/1.2/vts/functional/radio_hidl_hal_test.cpp +++ b/radio/1.2/vts/functional/radio_hidl_hal_test.cpp @@ -16,11 +16,40 @@ #include +bool isServiceValidForDeviceConfiguration(hidl_string& serviceName) { + if (isSsSsEnabled()) { + // Device is configured as SSSS. + if (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) { + 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) { + ALOGI("%s instance is not valid for TSTS device.", serviceName.c_str()); + return false; + } + } + return true; +} + void RadioHidlTest_v1_2::SetUp() { - radio_v1_2 = ::android::hardware::radio::V1_2::IRadio::getService(GetParam()); + hidl_string serviceName = GetParam(); + if (!isServiceValidForDeviceConfiguration(serviceName)) { + ALOGI("Skipped the test due to device configuration."); + GTEST_SKIP(); + } + radio_v1_2 = ::android::hardware::radio::V1_2::IRadio::getService(serviceName); if (radio_v1_2 == NULL) { sleep(60); - radio_v1_2 = ::android::hardware::radio::V1_2::IRadio::getService(GetParam()); + radio_v1_2 = ::android::hardware::radio::V1_2::IRadio::getService(serviceName); } ASSERT_NE(nullptr, radio_v1_2.get()); diff --git a/radio/1.2/vts/functional/radio_hidl_hal_utils_v1_2.h b/radio/1.2/vts/functional/radio_hidl_hal_utils_v1_2.h index 81286d2930..65ef7e9321 100644 --- a/radio/1.2/vts/functional/radio_hidl_hal_utils_v1_2.h +++ b/radio/1.2/vts/functional/radio_hidl_hal_utils_v1_2.h @@ -49,10 +49,18 @@ using ::android::hardware::radio::V1_0::RadioResponseInfo; using ::android::hardware::radio::V1_0::RadioResponseType; #define TIMEOUT_PERIOD 75 -#define RADIO_SERVICE_NAME "slot1" #define SKIP_TEST_IF_REQUEST_NOT_SUPPORTED_WITH_HAL_VERSION_AT_LEAST(__ver__) \ SKIP_TEST_IF_REQUEST_NOT_SUPPORTED_WITH_HAL(__ver__, radio_v1_2, radioRsp_v1_2) +// HAL instance name for SIM slot 1 or single SIM device +#define RADIO_SERVICE_SLOT1_NAME "slot1" + +// HAL instance name for SIM slot 2 on dual SIM device +#define RADIO_SERVICE_SLOT2_NAME "slot2" + +// HAL instance name for SIM slot 3 on triple SIM device +#define RADIO_SERVICE_SLOT3_NAME "slot3" + class RadioHidlTest_v1_2; extern ::android::hardware::radio::V1_2::CardStatus cardStatus; diff --git a/radio/1.3/vts/functional/radio_hidl_hal_test.cpp b/radio/1.3/vts/functional/radio_hidl_hal_test.cpp index c6e5550995..93a6c42421 100644 --- a/radio/1.3/vts/functional/radio_hidl_hal_test.cpp +++ b/radio/1.3/vts/functional/radio_hidl_hal_test.cpp @@ -16,11 +16,40 @@ #include +bool isServiceValidForDeviceConfiguration(hidl_string& serviceName) { + if (isSsSsEnabled()) { + // Device is configured as SSSS. + if (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) { + 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) { + ALOGI("%s instance is not valid for TSTS device.", serviceName.c_str()); + return false; + } + } + return true; +} + void RadioHidlTest_v1_3::SetUp() { - radio_v1_3 = ::android::hardware::radio::V1_3::IRadio::getService(GetParam()); + hidl_string serviceName = GetParam(); + if (!isServiceValidForDeviceConfiguration(serviceName)) { + ALOGI("Skipped the test due to device configuration."); + GTEST_SKIP(); + } + radio_v1_3 = ::android::hardware::radio::V1_3::IRadio::getService(serviceName); if (radio_v1_3 == NULL) { sleep(60); - radio_v1_3 = ::android::hardware::radio::V1_3::IRadio::getService(GetParam()); + radio_v1_3 = ::android::hardware::radio::V1_3::IRadio::getService(serviceName); } ASSERT_NE(nullptr, radio_v1_3.get()); diff --git a/radio/1.3/vts/functional/radio_hidl_hal_utils_v1_3.h b/radio/1.3/vts/functional/radio_hidl_hal_utils_v1_3.h index 893eac52a2..ffda0638fd 100644 --- a/radio/1.3/vts/functional/radio_hidl_hal_utils_v1_3.h +++ b/radio/1.3/vts/functional/radio_hidl_hal_utils_v1_3.h @@ -41,7 +41,15 @@ using ::android::hardware::Return; using ::android::hardware::Void; #define TIMEOUT_PERIOD 75 -#define RADIO_SERVICE_NAME "slot1" + +// HAL instance name for SIM slot 1 or single SIM device +#define RADIO_SERVICE_SLOT1_NAME "slot1" + +// HAL instance name for SIM slot 2 on dual SIM device +#define RADIO_SERVICE_SLOT2_NAME "slot2" + +// HAL instance name for SIM slot 3 on triple SIM device +#define RADIO_SERVICE_SLOT3_NAME "slot3" class RadioHidlTest_v1_3; extern ::android::hardware::radio::V1_2::CardStatus cardStatus; diff --git a/radio/1.4/vts/functional/radio_hidl_hal_test.cpp b/radio/1.4/vts/functional/radio_hidl_hal_test.cpp index 4ac6cc9b57..af859efd98 100644 --- a/radio/1.4/vts/functional/radio_hidl_hal_test.cpp +++ b/radio/1.4/vts/functional/radio_hidl_hal_test.cpp @@ -16,12 +16,41 @@ #include +bool isServiceValidForDeviceConfiguration(hidl_string& serviceName) { + if (isSsSsEnabled()) { + // Device is configured as SSSS. + if (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) { + 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) { + ALOGI("%s instance is not valid for TSTS device.", serviceName.c_str()); + return false; + } + } + return true; +} + void RadioHidlTest_v1_4::SetUp() { - radio_v1_4 = ::android::hardware::radio::V1_4::IRadio::getService(GetParam()); + hidl_string serviceName = GetParam(); + if (!isServiceValidForDeviceConfiguration(serviceName)) { + ALOGI("Skipped the test due to device configuration."); + GTEST_SKIP(); + } + radio_v1_4 = ::android::hardware::radio::V1_4::IRadio::getService(serviceName); if (radio_v1_4 == NULL) { sleep(60); - radio_v1_4 = ::android::hardware::radio::V1_4::IRadio::getService(GetParam()); + radio_v1_4 = ::android::hardware::radio::V1_4::IRadio::getService(serviceName); } ASSERT_NE(nullptr, radio_v1_4.get()); diff --git a/radio/1.4/vts/functional/radio_hidl_hal_utils_v1_4.h b/radio/1.4/vts/functional/radio_hidl_hal_utils_v1_4.h index 8eee811f7e..8cad9b1108 100644 --- a/radio/1.4/vts/functional/radio_hidl_hal_utils_v1_4.h +++ b/radio/1.4/vts/functional/radio_hidl_hal_utils_v1_4.h @@ -47,7 +47,14 @@ using ::android::hardware::Void; #define MODEM_EMERGENCY_CALL_ESTABLISH_TIME 3 #define MODEM_EMERGENCY_CALL_DISCONNECT_TIME 3 -#define RADIO_SERVICE_NAME "slot1" +// HAL instance name for SIM slot 1 or single SIM device +#define RADIO_SERVICE_SLOT1_NAME "slot1" + +// HAL instance name for SIM slot 2 on dual SIM device +#define RADIO_SERVICE_SLOT2_NAME "slot2" + +// HAL instance name for SIM slot 3 on triple SIM device +#define RADIO_SERVICE_SLOT3_NAME "slot3" class RadioHidlTest_v1_4; extern ::android::hardware::radio::V1_4::CardStatus cardStatus; diff --git a/radio/1.5/vts/functional/radio_hidl_hal_test.cpp b/radio/1.5/vts/functional/radio_hidl_hal_test.cpp index 4155550572..67dcd7ca3e 100644 --- a/radio/1.5/vts/functional/radio_hidl_hal_test.cpp +++ b/radio/1.5/vts/functional/radio_hidl_hal_test.cpp @@ -16,8 +16,38 @@ #include +bool isServiceValidForDeviceConfiguration(hidl_string& serviceName) { + if (isSsSsEnabled()) { + // Device is configured as SSSS. + if (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) { + 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) { + ALOGI("%s instance is not valid for TSTS device.", serviceName.c_str()); + return false; + } + } + return true; +} + void RadioHidlTest_v1_5::SetUp() { - radio_v1_5 = android::hardware::radio::V1_5::IRadio::getService(GetParam()); + hidl_string serviceName = GetParam(); + if (!isServiceValidForDeviceConfiguration(serviceName)) { + ALOGI("Skipped the test due to device configuration."); + GTEST_SKIP(); + } + + radio_v1_5 = android::hardware::radio::V1_5::IRadio::getService(serviceName); ASSERT_NE(nullptr, radio_v1_5.get()); radioRsp_v1_5 = new (std::nothrow) RadioResponse_v1_5(*this); diff --git a/radio/1.5/vts/functional/radio_hidl_hal_utils_v1_5.h b/radio/1.5/vts/functional/radio_hidl_hal_utils_v1_5.h index 65442caff1..41eb3b5d52 100644 --- a/radio/1.5/vts/functional/radio_hidl_hal_utils_v1_5.h +++ b/radio/1.5/vts/functional/radio_hidl_hal_utils_v1_5.h @@ -54,7 +54,14 @@ using ::android::hardware::Void; #define VOICE_SERVICE_MAX_WAIT_TIME_SECONDS 10 #define BARRING_INFO_MAX_WAIT_TIME_SECONDS 3 -#define RADIO_SERVICE_NAME "slot1" +// HAL instance name for SIM slot 1 or single SIM device +#define RADIO_SERVICE_SLOT1_NAME "slot1" + +// HAL instance name for SIM slot 2 on dual SIM device +#define RADIO_SERVICE_SLOT2_NAME "slot2" + +// HAL instance name for SIM slot 3 on triple SIM device +#define RADIO_SERVICE_SLOT3_NAME "slot3" class RadioHidlTest_v1_5; extern ::android::hardware::radio::V1_5::CardStatus cardStatus;