From 5046193cd321ddebc19bcab1d1b39590800c5838 Mon Sep 17 00:00:00 2001 From: Frankie Lizcano Date: Tue, 28 Jun 2022 21:36:26 +0000 Subject: [PATCH] Improve Tuner VTS Configuration This CL allows vendors to configure the DVR Playback data flow in their configuration files for the Tuner Hardware. Their connections were checked to ensure their validity. Additionally, vendors can now give an extra list of optional filters that can be utilized in the DVR Playback data flow. Bug: b/182519645 Test: vts-tradefed run vts --module VtsHalTvTunerTargetTest Change-Id: Ie77337508444672e327ac88a91e73c96bd80fb22 --- .../functional/VtsHalTvTunerTestConfigurations.h | 16 ++++++++++++++++ .../config/TunerTestingConfigAidlReaderV1_0.h | 10 +++++++++- tv/tuner/config/api/current.txt | 13 +++++++++++++ .../tuner_testing_dynamic_configuration.xsd | 12 +++++++++++- 4 files changed, 49 insertions(+), 2 deletions(-) diff --git a/tv/tuner/aidl/vts/functional/VtsHalTvTunerTestConfigurations.h b/tv/tuner/aidl/vts/functional/VtsHalTvTunerTestConfigurations.h index a88b105ce3..f093b8eb93 100644 --- a/tv/tuner/aidl/vts/functional/VtsHalTvTunerTestConfigurations.h +++ b/tv/tuner/aidl/vts/functional/VtsHalTvTunerTestConfigurations.h @@ -191,6 +191,7 @@ inline void connectHardwaresToTestCases() { TunerTestingConfigAidlReader1_0::connectDescrambling(descrambling); TunerTestingConfigAidlReader1_0::connectLnbLive(lnbLive); TunerTestingConfigAidlReader1_0::connectLnbRecord(lnbRecord); + TunerTestingConfigAidlReader1_0::connectDvrPlayback(playback); }; inline bool validateConnections() { @@ -248,6 +249,8 @@ inline bool validateConnections() { dvrIsValid &= lnbRecord.support ? dvrMap.find(lnbRecord.dvrRecordId) != dvrMap.end() : true; + dvrIsValid &= playback.support ? dvrMap.find(playback.dvrId) != dvrMap.end() : true; + if (!dvrIsValid) { ALOGW("[vts config] dynamic config dvr connection is invalid."); return false; @@ -285,6 +288,19 @@ inline bool validateConnections() { filterIsValid &= filterMap.find(filterId) != filterMap.end(); } + filterIsValid &= playback.support + ? filterMap.find(playback.audioFilterId) != filterMap.end() && + filterMap.find(playback.videoFilterId) != filterMap.end() + : true; + filterIsValid &= playback.sectionFilterId.compare(emptyHardwareId) == 0 + ? true + : filterMap.find(playback.sectionFilterId) != filterMap.end(); + + for (auto& filterId : playback.extraFilters) { + filterIsValid &= + playback.hasExtraFilters ? filterMap.find(filterId) != filterMap.end() : true; + } + if (!filterIsValid) { ALOGW("[vts config] dynamic config filter connection is invalid."); return false; diff --git a/tv/tuner/config/TunerTestingConfigAidlReaderV1_0.h b/tv/tuner/config/TunerTestingConfigAidlReaderV1_0.h index 12ccb80911..3991267eba 100644 --- a/tv/tuner/config/TunerTestingConfigAidlReaderV1_0.h +++ b/tv/tuner/config/TunerTestingConfigAidlReaderV1_0.h @@ -146,12 +146,13 @@ struct ScanHardwareConnections { struct DvrPlaybackHardwareConnections { bool support; + bool hasExtraFilters = false; string frontendId; string dvrId; string audioFilterId; string videoFilterId; string sectionFilterId; - /* list string of extra filters; */ + vector extraFilters; }; struct DvrRecordHardwareConnections { @@ -533,6 +534,13 @@ struct TunerTestingConfigAidlReader1_0 { } else { playback.sectionFilterId = emptyHardwareId; } + if (playbackConfig.hasOptionalFilters() && !playback.hasExtraFilters) { + auto optionalFilters = playbackConfig.getFirstOptionalFilters()->getOptionalFilter(); + for (size_t i = 0; i < optionalFilters.size(); ++i) { + playback.extraFilters.push_back(optionalFilters[i].getFilterId()); + } + playback.hasExtraFilters = true; + } } static void connectDvrRecord(DvrRecordHardwareConnections& record) { diff --git a/tv/tuner/config/api/current.txt b/tv/tuner/config/api/current.txt index 53720ac06d..36dd54ab9c 100644 --- a/tv/tuner/config/api/current.txt +++ b/tv/tuner/config/api/current.txt @@ -83,14 +83,21 @@ package android.media.tuner.testing.configuration.V1_0 { ctor public DataFlowConfiguration.DvrPlayback(); method @Nullable public String getAudioFilterConnection(); method @Nullable public String getDvrConnection(); + method @Nullable public android.media.tuner.testing.configuration.V1_0.DataFlowConfiguration.DvrPlayback.OptionalFilters getOptionalFilters(); method @Nullable public String getSectionFilterConnection(); method @Nullable public String getVideoFilterConnection(); method public void setAudioFilterConnection(@Nullable String); method public void setDvrConnection(@Nullable String); + method public void setOptionalFilters(@Nullable android.media.tuner.testing.configuration.V1_0.DataFlowConfiguration.DvrPlayback.OptionalFilters); method public void setSectionFilterConnection(@Nullable String); method public void setVideoFilterConnection(@Nullable String); } + public static class DataFlowConfiguration.DvrPlayback.OptionalFilters { + ctor public DataFlowConfiguration.DvrPlayback.OptionalFilters(); + method @Nullable public java.util.List getOptionalFilter(); + } + public static class DataFlowConfiguration.DvrRecord { ctor public DataFlowConfiguration.DvrRecord(); method @Nullable public String getDvrRecordConnection(); @@ -496,6 +503,12 @@ package android.media.tuner.testing.configuration.V1_0 { enum_constant public static final android.media.tuner.testing.configuration.V1_0.LnbVoltageEnum VOLTAGE_5V; } + public class OptionalFilter { + ctor public OptionalFilter(); + method @Nullable public String getFilterId(); + method public void setFilterId(@Nullable String); + } + public class RecordFilterSettings { ctor public RecordFilterSettings(); method @Nullable public android.media.tuner.testing.configuration.V1_0.ScIndexTypeEnum getScIndexType(); diff --git a/tv/tuner/config/tuner_testing_dynamic_configuration.xsd b/tv/tuner/config/tuner_testing_dynamic_configuration.xsd index f5a7eed871..8ac25e9662 100644 --- a/tv/tuner/config/tuner_testing_dynamic_configuration.xsd +++ b/tv/tuner/config/tuner_testing_dynamic_configuration.xsd @@ -664,7 +664,14 @@ - + + + + + + + + @@ -743,4 +750,7 @@ + + +