Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5046193c authored by Frankie Lizcano's avatar Frankie Lizcano
Browse files

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
parent 647d5aa8
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -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;
+9 −1
Original line number Diff line number Diff line
@@ -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<string> 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) {
+13 −0
Original line number Diff line number Diff line
@@ -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<android.media.tuner.testing.configuration.V1_0.OptionalFilter> 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();
+11 −1
Original line number Diff line number Diff line
@@ -664,7 +664,14 @@
                    <xs:attribute name="audioFilterConnection" type="filterId" use="required"/>
                    <xs:attribute name="videoFilterConnection" type="filterId" use="required"/>
                    <xs:attribute name="sectionFilterConnection" type="filterId" use="optional"/>
                    <!-- TODO: b/182519645 allow the users to insert extra filters -->
                    <xs:element name="optionalFilters" minOccurs="0" maxOccurs="1">
                      <xs:complexType>
                          <xs:sequence>
                            <xs:element name="optionalFilter" type="optionalFilter" minOccurs="1" maxOccurs="unbounded"/>
                          </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                    <!--TODO: b/182519645 allow the users to insert extra filters/-->
                </xs:complexType>
            </xs:element>
            <xs:element name="dvrRecord" minOccurs="0" maxOccurs="1">
@@ -743,4 +750,7 @@
            <xs:field xpath="@id"/>
        </xs:key>
    </xs:element>
    <xs:complexType name="optionalFilter">
        <xs:attribute name="filterId" type="filterId" use="required"/>
    </xs:complexType>
</xs:schema>