From da3a54da937027534cb1a59488bb7f6545eee8d7 Mon Sep 17 00:00:00 2001 From: Amy Zhang Date: Thu, 18 Feb 2021 21:47:00 -0800 Subject: [PATCH] Add VTS to test link/unlinkCicam in IFrontend Test: atest VtsHalTvTunerV1_1TargetTest Bug: 158818696 Change-Id: If741e7c5482ab1a65fc74b02b0be6c7fdb784e02 --- tv/tuner/1.1/vts/functional/FilterTests.cpp | 1 + tv/tuner/1.1/vts/functional/FrontendTests.cpp | 34 +++++++++++++++++++ tv/tuner/1.1/vts/functional/FrontendTests.h | 3 ++ .../VtsHalTvTunerV1_1TargetTest.cpp | 5 +++ .../VtsHalTvTunerV1_1TestConfigurations.h | 5 +++ 5 files changed, 48 insertions(+) diff --git a/tv/tuner/1.1/vts/functional/FilterTests.cpp b/tv/tuner/1.1/vts/functional/FilterTests.cpp index d8fad3d5d2..1617642693 100644 --- a/tv/tuner/1.1/vts/functional/FilterTests.cpp +++ b/tv/tuner/1.1/vts/functional/FilterTests.cpp @@ -274,6 +274,7 @@ AssertionResult FilterTests::startFilter(uint64_t filterId) { AssertionResult FilterTests::stopFilter(uint64_t filterId) { EXPECT_TRUE(mFilters[filterId]) << "Test with getNewlyOpenedFilterId first."; Result status = mFilters[filterId]->stop(); + return AssertionResult(status == Result::SUCCESS); } diff --git a/tv/tuner/1.1/vts/functional/FrontendTests.cpp b/tv/tuner/1.1/vts/functional/FrontendTests.cpp index 0948f743ad..887f8b8131 100644 --- a/tv/tuner/1.1/vts/functional/FrontendTests.cpp +++ b/tv/tuner/1.1/vts/functional/FrontendTests.cpp @@ -305,6 +305,36 @@ AssertionResult FrontendTests::getFrontendDtmbCaps(uint32_t id) { return AssertionResult(status == Result::SUCCESS); } +AssertionResult FrontendTests::linkCiCam(uint32_t ciCamId) { + sp frontend_1_1; + frontend_1_1 = android::hardware::tv::tuner::V1_1::IFrontend::castFrom(mFrontend); + if (frontend_1_1 == nullptr) { + EXPECT_TRUE(false) << "Couldn't get 1.1 IFrontend from the Hal implementation."; + return failure(); + } + + Result status; + uint32_t ltsId; + frontend_1_1->linkCiCam(ciCamId, [&](Result r, uint32_t id) { + status = r; + ltsId = id; + }); + + return AssertionResult(status == Result::SUCCESS); +} + +AssertionResult FrontendTests::unlinkCiCam(uint32_t ciCamId) { + sp frontend_1_1; + frontend_1_1 = android::hardware::tv::tuner::V1_1::IFrontend::castFrom(mFrontend); + if (frontend_1_1 == nullptr) { + EXPECT_TRUE(false) << "Couldn't get 1.1 IFrontend from the Hal implementation."; + return failure(); + } + + Result status = frontend_1_1->unlinkCiCam(ciCamId); + return AssertionResult(status == Result::SUCCESS); +} + void FrontendTests::verifyFrontendStatusExt1_1(vector statusTypes, vector expectStatuses) { ASSERT_TRUE(mFrontend) << "Frontend is not opened yet."; @@ -465,6 +495,10 @@ void FrontendTests::tuneTest(FrontendConfig frontendConf) { ASSERT_TRUE(feId != INVALID_ID); ASSERT_TRUE(openFrontendById(feId)); ASSERT_TRUE(setFrontendCallback()); + if (frontendConf.canConnectToCiCam) { + ASSERT_TRUE(linkCiCam(frontendConf.ciCamId)); + ASSERT_TRUE(unlinkCiCam(frontendConf.ciCamId)); + } ASSERT_TRUE(tuneFrontend(frontendConf, false /*testWithDemux*/)); verifyFrontendStatusExt1_1(frontendConf.tuneStatusTypes, frontendConf.expectTuneStatuses); ASSERT_TRUE(stopTuneFrontend(false /*testWithDemux*/)); diff --git a/tv/tuner/1.1/vts/functional/FrontendTests.h b/tv/tuner/1.1/vts/functional/FrontendTests.h index 243d9decd7..43c1579cb7 100644 --- a/tv/tuner/1.1/vts/functional/FrontendTests.h +++ b/tv/tuner/1.1/vts/functional/FrontendTests.h @@ -123,6 +123,9 @@ class FrontendTests { AssertionResult closeFrontend(); AssertionResult getFrontendDtmbCaps(uint32_t); + AssertionResult linkCiCam(uint32_t ciCamId); + AssertionResult unlinkCiCam(uint32_t ciCamId); + void getFrontendIdByType(FrontendType feType, uint32_t& feId); void tuneTest(FrontendConfig frontendConf); void scanTest(FrontendConfig frontend, FrontendScanType type); diff --git a/tv/tuner/1.1/vts/functional/VtsHalTvTunerV1_1TargetTest.cpp b/tv/tuner/1.1/vts/functional/VtsHalTvTunerV1_1TargetTest.cpp index 2dcb9a14e5..2e6c87fb5a 100644 --- a/tv/tuner/1.1/vts/functional/VtsHalTvTunerV1_1TargetTest.cpp +++ b/tv/tuner/1.1/vts/functional/VtsHalTvTunerV1_1TargetTest.cpp @@ -211,6 +211,11 @@ TEST_P(TunerFrontendHidlTest, GetFrontendDtmbCaps) { mFrontendTests.getFrontendDtmbCapsTest(); } +TEST_P(TunerFrontendHidlTest, LinkToCiCam) { + description("Test Frontend link to CiCam"); + mFrontendTests.tuneTest(frontendArray[defaultFrontend]); +} + INSTANTIATE_TEST_SUITE_P( PerInstance, TunerBroadcastHidlTest, testing::ValuesIn(android::hardware::getAllHalInstanceNames(ITuner::descriptor)), diff --git a/tv/tuner/1.1/vts/functional/VtsHalTvTunerV1_1TestConfigurations.h b/tv/tuner/1.1/vts/functional/VtsHalTvTunerV1_1TestConfigurations.h index beae223e4b..ecdf683b24 100644 --- a/tv/tuner/1.1/vts/functional/VtsHalTvTunerV1_1TestConfigurations.h +++ b/tv/tuner/1.1/vts/functional/VtsHalTvTunerV1_1TestConfigurations.h @@ -103,6 +103,8 @@ struct FilterConfig { struct FrontendConfig { bool isSoftwareFe; + bool canConnectToCiCam; + uint32_t ciCamId; FrontendType type; FrontendSettings settings; FrontendSettingsExt1_1 settingsExt1_1; @@ -121,6 +123,7 @@ static FrontendConfig frontendArray[FILTER_MAX]; static FrontendConfig frontendScanArray[SCAN_MAX]; static FilterConfig filterArray[FILTER_MAX]; static DvrConfig dvrArray[DVR_MAX]; +static int defaultFrontend = DVBT; /** Configuration array for the frontend tune test */ inline void initFrontendConfig() { @@ -150,6 +153,8 @@ inline void initFrontendConfig() { frontendArray[DVBT].tuneStatusTypes = types; frontendArray[DVBT].expectTuneStatuses = statuses; frontendArray[DVBT].isSoftwareFe = true; + frontendArray[DVBT].canConnectToCiCam = true; + frontendArray[DVBT].ciCamId = 0; frontendArray[DVBT].settingsExt1_1.settingExt.dvbt({ .transmissionMode = android::hardware::tv::tuner::V1_1::FrontendDvbtTransmissionMode::MODE_8K_E,