diff --git a/radio/1.2/vts/functional/radio_hidl_hal_api.cpp b/radio/1.2/vts/functional/radio_hidl_hal_api.cpp index 06a7f77ce2..7e4c64db73 100644 --- a/radio/1.2/vts/functional/radio_hidl_hal_api.cpp +++ b/radio/1.2/vts/functional/radio_hidl_hal_api.cpp @@ -362,3 +362,208 @@ TEST_F(RadioHidlTest_v1_2, startNetworkScan_GoodRequest2) { ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_2->rspInfo.error, {RadioError::NONE})); } } + +/* + * Test IRadio.setIndicationFilter_1_2() + */ +TEST_F(RadioHidlTest_v1_2, setIndicationFilter_1_2) { + const int serial = GetRandomSerialNumber(); + + Return res = + radio_v1_2->setIndicationFilter_1_2(serial, static_cast(IndicationFilter::ALL)); + ASSERT_OK(res); + EXPECT_EQ(std::cv_status::no_timeout, wait()); + EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_2->rspInfo.type); + EXPECT_EQ(serial, radioRsp_v1_2->rspInfo.serial); + + ALOGI("setIndicationFilter_1_2, rspInfo.error = %s\n", + toString(radioRsp_v1_2->rspInfo.error).c_str()); + ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_2->rspInfo.error, {RadioError::NONE})); +} + +/* + * Test IRadio.setSignalStrengthReportingCriteria() with invalid hysteresisDb + */ +TEST_F(RadioHidlTest_v1_2, setSignalStrengthReportingCriteria_invalidHysteresisDb) { + const int serial = GetRandomSerialNumber(); + + Return res = radio_v1_2->setSignalStrengthReportingCriteria( + serial, 5000, + 10, // hysteresisDb too large given threshold list deltas + {-109, -103, -97, -89}, V1_2::AccessNetwork::GERAN); + ASSERT_OK(res); + EXPECT_EQ(std::cv_status::no_timeout, wait()); + EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_2->rspInfo.type); + EXPECT_EQ(serial, radioRsp_v1_2->rspInfo.serial); + + ALOGI("setSignalStrengthReportingCriteria_invalidHysteresisDb, rspInfo.error = %s\n", + toString(radioRsp_v1_2->rspInfo.error).c_str()); + ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_2->rspInfo.error, {RadioError::INVALID_ARGUMENTS})); +} + +/* + * Test IRadio.setSignalStrengthReportingCriteria() with empty parameters + */ +TEST_F(RadioHidlTest_v1_2, setSignalStrengthReportingCriteria_EmptyParams) { + const int serial = GetRandomSerialNumber(); + + Return res = radio_v1_2->setSignalStrengthReportingCriteria(serial, 0, 0, {}, + V1_2::AccessNetwork::GERAN); + ASSERT_OK(res); + EXPECT_EQ(std::cv_status::no_timeout, wait()); + EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_2->rspInfo.type); + EXPECT_EQ(serial, radioRsp_v1_2->rspInfo.serial); + + ALOGI("setSignalStrengthReportingCriteria_EmptyParams, rspInfo.error = %s\n", + toString(radioRsp_v1_2->rspInfo.error).c_str()); + ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_2->rspInfo.error, {RadioError::NONE})); +} + +/* + * Test IRadio.setSignalStrengthReportingCriteria() for GERAN + */ +TEST_F(RadioHidlTest_v1_2, setSignalStrengthReportingCriteria_Geran) { + const int serial = GetRandomSerialNumber(); + + Return res = radio_v1_2->setSignalStrengthReportingCriteria( + serial, 5000, 2, {-109, -103, -97, -89}, V1_2::AccessNetwork::GERAN); + ASSERT_OK(res); + EXPECT_EQ(std::cv_status::no_timeout, wait()); + EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_2->rspInfo.type); + EXPECT_EQ(serial, radioRsp_v1_2->rspInfo.serial); + + ALOGI("setSignalStrengthReportingCriteria_Geran, rspInfo.error = %s\n", + toString(radioRsp_v1_2->rspInfo.error).c_str()); + ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_2->rspInfo.error, {RadioError::NONE})); +} + +/* + * Test IRadio.setSignalStrengthReportingCriteria() for UTRAN + */ +TEST_F(RadioHidlTest_v1_2, setSignalStrengthReportingCriteria_Utran) { + const int serial = GetRandomSerialNumber(); + + Return res = radio_v1_2->setSignalStrengthReportingCriteria( + serial, 5000, 2, {-110, -97, -73, -49, -25}, V1_2::AccessNetwork::UTRAN); + ASSERT_OK(res); + EXPECT_EQ(std::cv_status::no_timeout, wait()); + EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_2->rspInfo.type); + EXPECT_EQ(serial, radioRsp_v1_2->rspInfo.serial); + + ALOGI("setSignalStrengthReportingCriteria_Utran, rspInfo.error = %s\n", + toString(radioRsp_v1_2->rspInfo.error).c_str()); + ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_2->rspInfo.error, {RadioError::NONE})); +} + +/* + * Test IRadio.setSignalStrengthReportingCriteria() for EUTRAN + */ +TEST_F(RadioHidlTest_v1_2, setSignalStrengthReportingCriteria_Eutran) { + const int serial = GetRandomSerialNumber(); + + Return res = radio_v1_2->setSignalStrengthReportingCriteria( + serial, 5000, 2, {-140, -128, -118, -108, -98, -44}, V1_2::AccessNetwork::EUTRAN); + ASSERT_OK(res); + EXPECT_EQ(std::cv_status::no_timeout, wait()); + EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_2->rspInfo.type); + EXPECT_EQ(serial, radioRsp_v1_2->rspInfo.serial); + + ALOGI("setSignalStrengthReportingCriteria_Eutran, rspInfo.error = %s\n", + toString(radioRsp_v1_2->rspInfo.error).c_str()); + ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_2->rspInfo.error, {RadioError::NONE})); +} + +/* + * Test IRadio.setSignalStrengthReportingCriteria() for CDMA2000 + */ +TEST_F(RadioHidlTest_v1_2, setSignalStrengthReportingCriteria_Cdma2000) { + const int serial = GetRandomSerialNumber(); + + Return res = radio_v1_2->setSignalStrengthReportingCriteria( + serial, 5000, 2, {-105, -90, -75, -65}, V1_2::AccessNetwork::CDMA2000); + ASSERT_OK(res); + EXPECT_EQ(std::cv_status::no_timeout, wait()); + EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_2->rspInfo.type); + EXPECT_EQ(serial, radioRsp_v1_2->rspInfo.serial); + + ALOGI("setSignalStrengthReportingCriteria_Cdma2000, rspInfo.error = %s\n", + toString(radioRsp_v1_2->rspInfo.error).c_str()); + ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_2->rspInfo.error, {RadioError::NONE})); +} + +/* + * Test IRadio.setLinkCapacityReportingCriteria() invalid hysteresisDlKbps + */ +TEST_F(RadioHidlTest_v1_2, setLinkCapacityReportingCriteria_invalidHysteresisDlKbps) { + const int serial = GetRandomSerialNumber(); + + Return res = radio_v1_2->setLinkCapacityReportingCriteria( + serial, 5000, + 5000, // hysteresisDlKbps too big for thresholds delta + 100, {1000, 5000, 10000, 20000}, {500, 1000, 5000, 10000}, V1_2::AccessNetwork::GERAN); + ASSERT_OK(res); + EXPECT_EQ(std::cv_status::no_timeout, wait()); + EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_2->rspInfo.type); + EXPECT_EQ(serial, radioRsp_v1_2->rspInfo.serial); + + ALOGI("setLinkCapacityReportingCriteria_invalidHysteresisDlKbps, rspInfo.error = %s\n", + toString(radioRsp_v1_2->rspInfo.error).c_str()); + ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_2->rspInfo.error, {RadioError::INVALID_ARGUMENTS})); +} + +/* + * Test IRadio.setLinkCapacityReportingCriteria() invalid hysteresisUlKbps + */ +TEST_F(RadioHidlTest_v1_2, setLinkCapacityReportingCriteria_invalidHysteresisUlKbps) { + const int serial = GetRandomSerialNumber(); + + Return res = radio_v1_2->setLinkCapacityReportingCriteria( + serial, 5000, 500, + 1000, // hysteresisUlKbps too big for thresholds delta + {1000, 5000, 10000, 20000}, {500, 1000, 5000, 10000}, V1_2::AccessNetwork::GERAN); + ASSERT_OK(res); + EXPECT_EQ(std::cv_status::no_timeout, wait()); + EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_2->rspInfo.type); + EXPECT_EQ(serial, radioRsp_v1_2->rspInfo.serial); + + ALOGI("setLinkCapacityReportingCriteria_invalidHysteresisUlKbps, rspInfo.error = %s\n", + toString(radioRsp_v1_2->rspInfo.error).c_str()); + ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_2->rspInfo.error, {RadioError::INVALID_ARGUMENTS})); +} + +/* + * Test IRadio.setLinkCapacityReportingCriteria() empty params + */ +TEST_F(RadioHidlTest_v1_2, setLinkCapacityReportingCriteria_emptyParams) { + const int serial = GetRandomSerialNumber(); + + Return res = radio_v1_2->setLinkCapacityReportingCriteria(serial, 0, 0, 0, {}, {}, + V1_2::AccessNetwork::GERAN); + ASSERT_OK(res); + EXPECT_EQ(std::cv_status::no_timeout, wait()); + EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_2->rspInfo.type); + EXPECT_EQ(serial, radioRsp_v1_2->rspInfo.serial); + + ALOGI("setLinkCapacityReportingCriteria_emptyParams, rspInfo.error = %s\n", + toString(radioRsp_v1_2->rspInfo.error).c_str()); + ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_2->rspInfo.error, {RadioError::NONE})); +} + +/* + * Test IRadio.setLinkCapacityReportingCriteria() GERAN + */ +TEST_F(RadioHidlTest_v1_2, setLinkCapacityReportingCriteria_Geran) { + const int serial = GetRandomSerialNumber(); + + Return res = radio_v1_2->setLinkCapacityReportingCriteria( + serial, 5000, 500, 100, {1000, 5000, 10000, 20000}, {500, 1000, 5000, 10000}, + V1_2::AccessNetwork::GERAN); + ASSERT_OK(res); + EXPECT_EQ(std::cv_status::no_timeout, wait()); + EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_2->rspInfo.type); + EXPECT_EQ(serial, radioRsp_v1_2->rspInfo.serial); + + ALOGI("setLinkCapacityReportingCriteria_invalidHysteresisUlKbps, rspInfo.error = %s\n", + toString(radioRsp_v1_2->rspInfo.error).c_str()); + ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_2->rspInfo.error, {RadioError::NONE})); +} 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 b3b53b148b..686f66aae9 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 @@ -32,6 +32,7 @@ using namespace ::android::hardware::radio; using namespace ::android::hardware::radio::V1_1; using namespace ::android::hardware::radio::V1_0; +using ::android::hardware::hidl_bitfield; using ::android::hardware::hidl_string; using ::android::hardware::hidl_vec; using ::android::hardware::Return; @@ -398,6 +399,11 @@ class RadioResponse_v1_2 : public V1_1::IRadioResponse { const KeepaliveStatus& status); Return stopKeepaliveResponse(const RadioResponseInfo& info); + + /* 1.2 Api */ + Return setSignalStrengthReportingCriteriaResponse(const RadioResponseInfo& info); + + Return setLinkCapacityReportingCriteriaResponse(const RadioResponseInfo& info); }; /* Callback class for radio indication */ @@ -409,6 +415,23 @@ class RadioIndication_v1_2 : public V1_1::IRadioIndication { RadioIndication_v1_2(RadioHidlTest_v1_2& parent_v1_2); virtual ~RadioIndication_v1_2() = default; + /* 1.2 Api */ + Return networkScanResult_1_2(RadioIndicationType type, + const V1_2::NetworkScanResult& result); + + Return cellInfoList_1_2(RadioIndicationType type, + const ::android::hardware::hidl_vec& records); + + Return currentLinkCapacityEstimate(RadioIndicationType type, + const V1_2::LinkCapacityEstimate& lce); + + Return currentPhysicalChannelConfigs( + RadioIndicationType type, + const ::android::hardware::hidl_vec& configs); + + Return currentSignalStrength_1_2(RadioIndicationType type, + const V1_2::SignalStrength& signalStrength); + /* 1.1 Api */ Return carrierInfoForImsiEncryption(RadioIndicationType info); diff --git a/radio/1.2/vts/functional/radio_indication.cpp b/radio/1.2/vts/functional/radio_indication.cpp index 97dee272db..57f5cb064b 100644 --- a/radio/1.2/vts/functional/radio_indication.cpp +++ b/radio/1.2/vts/functional/radio_indication.cpp @@ -18,6 +18,34 @@ RadioIndication_v1_2::RadioIndication_v1_2(RadioHidlTest_v1_2& parent) : parent_v1_2(parent) {} +/* 1.2 Apis */ +Return RadioIndication_v1_2::networkScanResult_1_2( + RadioIndicationType /*type*/, const V1_2::NetworkScanResult& /*result*/) { + return Void(); +} + +Return RadioIndication_v1_2::cellInfoList_1_2( + RadioIndicationType /*type*/, + const ::android::hardware::hidl_vec& /*records*/) { + return Void(); +} + +Return RadioIndication_v1_2::currentLinkCapacityEstimate( + RadioIndicationType /*type*/, const V1_2::LinkCapacityEstimate& /*lce*/) { + return Void(); +} + +Return RadioIndication_v1_2::currentPhysicalChannelConfigs( + RadioIndicationType /*type*/, + const ::android::hardware::hidl_vec& /*configs*/) { + return Void(); +} + +Return RadioIndication_v1_2::currentSignalStrength_1_2( + RadioIndicationType /*type*/, const V1_2::SignalStrength& /*signalStrength*/) { + return Void(); +} + /* 1.1 Apis */ Return RadioIndication_v1_2::carrierInfoForImsiEncryption(RadioIndicationType /*info*/) { return Void(); diff --git a/radio/1.2/vts/functional/radio_response.cpp b/radio/1.2/vts/functional/radio_response.cpp index 12d7005211..3079b9e099 100644 --- a/radio/1.2/vts/functional/radio_response.cpp +++ b/radio/1.2/vts/functional/radio_response.cpp @@ -657,6 +657,7 @@ Return RadioResponse_v1_2::acknowledgeRequest(int32_t /*serial*/) { return Void(); } +/* 1.1 Apis */ Return RadioResponse_v1_2::setCarrierInfoForImsiEncryptionResponse( const RadioResponseInfo& /*info*/) { return Void(); @@ -686,3 +687,18 @@ Return RadioResponse_v1_2::startKeepaliveResponse(const RadioResponseInfo& Return RadioResponse_v1_2::stopKeepaliveResponse(const RadioResponseInfo& /*info*/) { return Void(); } + +/* 1.2 Apis */ +Return RadioResponse_v1_2::setSignalStrengthReportingCriteriaResponse( + const RadioResponseInfo& info) { + rspInfo = info; + parent_v1_2.notify(); + return Void(); +} + +Return RadioResponse_v1_2::setLinkCapacityReportingCriteriaResponse( + const RadioResponseInfo& info) { + rspInfo = info; + parent_v1_2.notify(); + return Void(); +}