diff --git a/tv/tuner/1.0/vts/functional/LnbTests.cpp b/tv/tuner/1.0/vts/functional/LnbTests.cpp index 9080f59762..9338c7341c 100644 --- a/tv/tuner/1.0/vts/functional/LnbTests.cpp +++ b/tv/tuner/1.0/vts/functional/LnbTests.cpp @@ -48,10 +48,11 @@ AssertionResult LnbTests::openLnbById(uint32_t lnbId) { return AssertionResult(status == Result::SUCCESS); } -AssertionResult LnbTests::openLnbByName(string lnbName) { +AssertionResult LnbTests::openLnbByName(string lnbName, uint32_t& id) { Result status; - mService->openLnbByName(lnbName, [&](Result result, uint32_t /*lnbId*/, const sp& lnb) { + mService->openLnbByName(lnbName, [&](Result result, uint32_t lnbId, const sp& lnb) { mLnb = lnb; + id = lnbId; status = result; }); diff --git a/tv/tuner/1.0/vts/functional/LnbTests.h b/tv/tuner/1.0/vts/functional/LnbTests.h index 2fdbe2ce26..62b42ff937 100644 --- a/tv/tuner/1.0/vts/functional/LnbTests.h +++ b/tv/tuner/1.0/vts/functional/LnbTests.h @@ -64,7 +64,7 @@ class LnbTests { AssertionResult getLnbIds(vector& ids); AssertionResult openLnbById(uint32_t lnbId); - AssertionResult openLnbByName(string lnbName); + AssertionResult openLnbByName(string lnbName, uint32_t& lnbId); AssertionResult setLnbCallback(); AssertionResult setVoltage(LnbVoltage voltage); AssertionResult setTone(LnbTone tone); diff --git a/tv/tuner/1.0/vts/functional/VtsHalTvTunerV1_0TargetTest.cpp b/tv/tuner/1.0/vts/functional/VtsHalTvTunerV1_0TargetTest.cpp index 491318e5c1..9c1d45791e 100644 --- a/tv/tuner/1.0/vts/functional/VtsHalTvTunerV1_0TargetTest.cpp +++ b/tv/tuner/1.0/vts/functional/VtsHalTvTunerV1_0TargetTest.cpp @@ -56,7 +56,7 @@ void TunerFilterHidlTest::configSingleFilterInDemuxTest(FilterConfig filterConf, } void TunerFilterHidlTest::testTimeFilter(TimeFilterConfig filterConf) { - if (!filterConf.supportTimeFilter) { + if (!timeFilter.support) { return; } uint32_t demuxId; @@ -64,11 +64,8 @@ void TunerFilterHidlTest::testTimeFilter(TimeFilterConfig filterConf) { DemuxCapabilities caps; ASSERT_TRUE(mDemuxTests.openDemux(demux, demuxId)); - // TODO: add time filter hardware support checker ASSERT_TRUE(mDemuxTests.getDemuxCaps(caps)); - if (!caps.bTimeFilter) { - return; - } + ASSERT_TRUE(caps.bTimeFilter); mFilterTests.setDemux(demux); ASSERT_TRUE(mFilterTests.openTimeFilterInDemux()); ASSERT_TRUE(mFilterTests.setTimeStamp(filterConf.timeStamp)); @@ -116,14 +113,16 @@ void TunerBroadcastHidlTest::broadcastSingleFilterTest(FilterConfig filterConf, void TunerBroadcastHidlTest::broadcastSingleFilterTestWithLnb(FilterConfig filterConf, FrontendConfig frontendConf, LnbConfig lnbConf) { - vector ids; - ASSERT_TRUE(mLnbTests.getLnbIds(ids)); - if (ids.size() == 0) { - return; + if (lnbConf.name.compare(emptyHardwareId) == 0) { + vector ids; + ASSERT_TRUE(mLnbTests.getLnbIds(ids)); + ASSERT_TRUE(ids.size() > 0); + ASSERT_TRUE(mLnbTests.openLnbById(ids[0])); + mLnbId = &ids[0]; + } else { + mLnbId = (uint32_t*)malloc(sizeof(uint32_t)); + ASSERT_TRUE(mLnbTests.openLnbByName(lnbConf.name, *mLnbId)); } - ASSERT_TRUE(ids.size() > 0); - ASSERT_TRUE(mLnbTests.openLnbById(ids[0])); - mLnbId = &ids[0]; ASSERT_TRUE(mLnbTests.setLnbCallback()); ASSERT_TRUE(mLnbTests.setVoltage(lnbConf.voltage)); ASSERT_TRUE(mLnbTests.setTone(lnbConf.tone)); @@ -212,18 +211,23 @@ void TunerRecordHidlTest::recordSingleFilterTest(FilterConfig filterConf, void TunerRecordHidlTest::recordSingleFilterTestWithLnb(FilterConfig filterConf, FrontendConfig frontendConf, DvrConfig dvrConf, LnbConfig lnbConf) { - vector ids; - ASSERT_TRUE(mLnbTests.getLnbIds(ids)); - if (ids.size() == 0) { - return; + if (lnbConf.name.compare(emptyHardwareId) == 0) { + vector ids; + ASSERT_TRUE(mLnbTests.getLnbIds(ids)); + ASSERT_TRUE(ids.size() > 0); + ASSERT_TRUE(mLnbTests.openLnbById(ids[0])); + mLnbId = &ids[0]; + } else { + mLnbId = (uint32_t*)malloc(sizeof(uint32_t)); + ASSERT_TRUE(mLnbTests.openLnbByName(lnbConf.name, *mLnbId)); } - ASSERT_TRUE(ids.size() > 0); - ASSERT_TRUE(mLnbTests.openLnbById(ids[0])); - mLnbId = &ids[0]; ASSERT_TRUE(mLnbTests.setLnbCallback()); ASSERT_TRUE(mLnbTests.setVoltage(lnbConf.voltage)); ASSERT_TRUE(mLnbTests.setTone(lnbConf.tone)); ASSERT_TRUE(mLnbTests.setSatellitePosition(lnbConf.position)); + for (auto msgName : lnbRecord.diseqcMsgs) { + ASSERT_TRUE(mLnbTests.sendDiseqcMessage(diseqcMsgMap[msgName])); + } recordSingleFilterTest(filterConf, frontendConf, dvrConf); ASSERT_TRUE(mLnbTests.closeLnb()); mLnbId = nullptr; @@ -343,37 +347,24 @@ TEST_P(TunerFrontendHidlTest, BlindScanFrontend) { mFrontendTests.scanTest(frontendMap[scan.frontendId], FrontendScanType::SCAN_BLIND); } -TEST_P(TunerLnbHidlTest, OpenLnbByName) { - description("Open and configure an Lnb with name then send a diseqc msg to it."); - // TODO: add lnb hardware support checker - vector ids; - ASSERT_TRUE(mLnbTests.getLnbIds(ids)); - if (ids.size() == 0) { - return; - } - ASSERT_TRUE(mLnbTests.openLnbByName(lnbArray[LNB_EXTERNAL].name)); - ASSERT_TRUE(mLnbTests.setLnbCallback()); - ASSERT_TRUE(mLnbTests.setVoltage(lnbArray[LNB_EXTERNAL].voltage)); - ASSERT_TRUE(mLnbTests.setTone(lnbArray[LNB_EXTERNAL].tone)); - ASSERT_TRUE(mLnbTests.setSatellitePosition(lnbArray[LNB_EXTERNAL].position)); - ASSERT_TRUE(mLnbTests.sendDiseqcMessage(diseqcMsgArray[DISEQC_POWER_ON])); - ASSERT_TRUE(mLnbTests.closeLnb()); -} - TEST_P(TunerLnbHidlTest, SendDiseqcMessageToLnb) { description("Open and configure an Lnb with specific settings then send a diseqc msg to it."); - vector ids; - ASSERT_TRUE(mLnbTests.getLnbIds(ids)); - if (ids.size() == 0) { - return; + if (lnbMap[lnbLive.lnbId].name.compare(emptyHardwareId) == 0) { + vector ids; + ASSERT_TRUE(mLnbTests.getLnbIds(ids)); + ASSERT_TRUE(ids.size() > 0); + ASSERT_TRUE(mLnbTests.openLnbById(ids[0])); + } else { + uint32_t id; + ASSERT_TRUE(mLnbTests.openLnbByName(lnbMap[lnbLive.lnbId].name, id)); } - ASSERT_TRUE(ids.size() > 0); - ASSERT_TRUE(mLnbTests.openLnbById(ids[0])); ASSERT_TRUE(mLnbTests.setLnbCallback()); - ASSERT_TRUE(mLnbTests.setVoltage(lnbArray[LNB0].voltage)); - ASSERT_TRUE(mLnbTests.setTone(lnbArray[LNB0].tone)); - ASSERT_TRUE(mLnbTests.setSatellitePosition(lnbArray[LNB0].position)); - ASSERT_TRUE(mLnbTests.sendDiseqcMessage(diseqcMsgArray[DISEQC_POWER_ON])); + ASSERT_TRUE(mLnbTests.setVoltage(lnbMap[lnbLive.lnbId].voltage)); + ASSERT_TRUE(mLnbTests.setTone(lnbMap[lnbLive.lnbId].tone)); + ASSERT_TRUE(mLnbTests.setSatellitePosition(lnbMap[lnbLive.lnbId].position)); + for (auto msgName : lnbLive.diseqcMsgs) { + ASSERT_TRUE(mLnbTests.sendDiseqcMessage(diseqcMsgMap[msgName])); + } ASSERT_TRUE(mLnbTests.closeLnb()); } @@ -469,7 +460,7 @@ TEST_P(TunerFilterHidlTest, SetFilterLinkage) { TEST_P(TunerFilterHidlTest, testTimeFilter) { description("Open a timer filter in Demux and set time stamp."); // TODO use paramterized tests - testTimeFilter(timeFilterArray[TIMER0]); + testTimeFilter(timeFilterMap[timeFilter.timeFilterId]); } TEST_P(TunerBroadcastHidlTest, BroadcastDataFlowVideoFilterTest) { @@ -501,7 +492,7 @@ TEST_P(TunerBroadcastHidlTest, LnbBroadcastDataFlowVideoFilterTest) { return; } broadcastSingleFilterTestWithLnb(filterMap[lnbLive.videoFilterId], - frontendMap[lnbLive.frontendId], lnbArray[LNB0]); + frontendMap[lnbLive.frontendId], lnbMap[lnbLive.lnbId]); } TEST_P(TunerPlaybackHidlTest, PlaybackDataFlowWithTsSectionFilterTest) { @@ -538,7 +529,7 @@ TEST_P(TunerRecordHidlTest, LnbRecordDataFlowWithTsRecordFilterTest) { } recordSingleFilterTestWithLnb(filterMap[lnbRecord.recordFilterId], frontendMap[lnbRecord.frontendId], dvrMap[lnbRecord.dvrRecordId], - lnbArray[LNB0]); + lnbMap[lnbRecord.lnbId]); } TEST_P(TunerDescramblerHidlTest, CreateDescrambler) { diff --git a/tv/tuner/1.0/vts/functional/VtsHalTvTunerV1_0TargetTest.h b/tv/tuner/1.0/vts/functional/VtsHalTvTunerV1_0TargetTest.h index 07ce201746..bf8e383294 100644 --- a/tv/tuner/1.0/vts/functional/VtsHalTvTunerV1_0TargetTest.h +++ b/tv/tuner/1.0/vts/functional/VtsHalTvTunerV1_0TargetTest.h @@ -35,14 +35,14 @@ bool initConfiguration() { initFrontendConfig(); initFilterConfig(); initDvrConfig(); + initLnbConfig(); + initTimeFilterConfig(); connectHardwaresToTestCases(); if (!validateConnections()) { ALOGW("[vts] failed to validate connections."); return false; } - initLnbConfig(); - initTimeFilterConfig(); initDescramblerConfig(); return true; diff --git a/tv/tuner/1.0/vts/functional/VtsHalTvTunerV1_0TestConfigurations.h b/tv/tuner/1.0/vts/functional/VtsHalTvTunerV1_0TestConfigurations.h index 8537fe8410..bdf94dc4e6 100644 --- a/tv/tuner/1.0/vts/functional/VtsHalTvTunerV1_0TestConfigurations.h +++ b/tv/tuner/1.0/vts/functional/VtsHalTvTunerV1_0TestConfigurations.h @@ -79,46 +79,17 @@ const uint32_t FMQ_SIZE_16M = 0x1000000; " \"track_types\": [ ] " \ "} " -typedef enum { - TIMER0, - TIMER_MAX, -} TimeFilter; - typedef enum { SOURCE, SINK, LINKAGE_DIR, } Linkage; -typedef enum { - LNB0, - LNB_EXTERNAL, - LNB_MAX, -} Lnb; - -typedef enum { - DISEQC_POWER_ON, - DISEQC_MAX, -} Diseqc; - typedef enum { DESC_0, DESC_MAX, } Descrambler; -struct TimeFilterConfig { - bool supportTimeFilter; - uint64_t timeStamp; -}; - -struct LnbConfig { - bool usingLnb; - string name; - LnbVoltage voltage; - LnbTone tone; - LnbPosition position; -}; - struct DescramblerConfig { uint32_t casSystemId; string provisionStr; @@ -126,9 +97,6 @@ struct DescramblerConfig { }; // TODO: remove all the manual config array after the dynamic config refactoring is done. -static LnbConfig lnbArray[LNB_MAX]; -static vector diseqcMsgArray[DISEQC_MAX]; -static TimeFilterConfig timeFilterArray[TIMER_MAX]; static DemuxFilterType filterLinkageTypes[LINKAGE_DIR][FILTER_MAIN_TYPE_BIT_COUNT]; static DescramblerConfig descramblerArray[DESC_MAX]; @@ -136,6 +104,9 @@ static DescramblerConfig descramblerArray[DESC_MAX]; static map frontendMap; static map filterMap; static map dvrMap; +static map lnbMap; +static map timeFilterMap; +static map> diseqcMsgMap; // Hardware and test cases connections static LiveBroadcastHardwareConnections live; @@ -145,6 +116,7 @@ static DvrRecordHardwareConnections record; static DescramblingHardwareConnections descrambling; static LnbLiveHardwareConnections lnbLive; static LnbRecordHardwareConnections lnbRecord; +static TimeFilterHardwareConnections timeFilter; /** Config all the frontends that would be used in the tests */ inline void initFrontendConfig() { @@ -202,6 +174,19 @@ inline void initDvrConfig() { TunerTestingConfigReader::readDvrConfig1_0(dvrMap); }; +/** Config all the lnbs that would be used in the tests */ +inline void initLnbConfig() { + // Read customized config + TunerTestingConfigReader::readLnbConfig1_0(lnbMap); + TunerTestingConfigReader::readDiseqcMessages(diseqcMsgMap); +}; + +/** Config all the time filters that would be used in the tests */ +inline void initTimeFilterConfig() { + // Read customized config + TunerTestingConfigReader::readTimeFilterConfig1_0(timeFilterMap); +}; + /** Read the vendor configurations of which hardware to use for each test cases/data flows */ inline void connectHardwaresToTestCases() { TunerTestingConfigReader::connectLiveBroadcast(live); @@ -211,6 +196,7 @@ inline void connectHardwaresToTestCases() { TunerTestingConfigReader::connectDescrambling(descrambling); TunerTestingConfigReader::connectLnbLive(lnbLive); TunerTestingConfigReader::connectLnbRecord(lnbRecord); + TunerTestingConfigReader::connectTimeFilter(timeFilter); }; inline bool validateConnections() { @@ -233,14 +219,12 @@ inline bool validateConnections() { ? dvrMap.find(live.dvrSoftwareFeId) != dvrMap.end() : true; dvrIsValid &= playback.support ? dvrMap.find(playback.dvrId) != dvrMap.end() : true; - if (record.support) { if (frontendMap[record.frontendId].isSoftwareFe) { dvrIsValid &= dvrMap.find(record.dvrSoftwareFeId) != dvrMap.end(); } dvrIsValid &= dvrMap.find(record.dvrRecordId) != dvrMap.end(); } - if (descrambling.support && frontendMap[descrambling.frontendId].isSoftwareFe) { dvrIsValid &= dvrMap.find(descrambling.dvrSoftwareFeId) != dvrMap.end(); } @@ -252,24 +236,19 @@ inline bool validateConnections() { bool filterIsValid = filterMap.find(live.audioFilterId) != filterMap.end() && filterMap.find(live.videoFilterId) != filterMap.end(); - filterIsValid &= playback.support ? (filterMap.find(playback.audioFilterId) != filterMap.end() && filterMap.find(playback.videoFilterId) != filterMap.end()) : true; - filterIsValid &= record.support ? filterMap.find(record.recordFilterId) != filterMap.end() : true; - filterIsValid &= descrambling.support ? (filterMap.find(descrambling.audioFilterId) != filterMap.end() && filterMap.find(descrambling.videoFilterId) != filterMap.end()) : true; - filterIsValid &= lnbLive.support ? (filterMap.find(lnbLive.audioFilterId) != filterMap.end() && filterMap.find(lnbLive.videoFilterId) != filterMap.end()) : true; - filterIsValid &= lnbRecord.support ? filterMap.find(lnbRecord.recordFilterId) != filterMap.end() : true; @@ -278,34 +257,35 @@ inline bool validateConnections() { return false; } + bool lnbIsValid = lnbLive.support ? lnbMap.find(lnbLive.lnbId) != lnbMap.end() : true; + lnbIsValid &= lnbRecord.support ? lnbMap.find(lnbRecord.lnbId) != lnbMap.end() : true; + + if (!lnbIsValid) { + ALOGW("[vts config] dynamic config lnb connection is invalid."); + return false; + } + + bool diseqcMsgIsValid = true; + if (lnbLive.support) { + for (auto msgName : lnbLive.diseqcMsgs) { + diseqcMsgIsValid &= diseqcMsgMap.find(msgName) != diseqcMsgMap.end(); + } + } + if (lnbRecord.support) { + for (auto msgName : lnbRecord.diseqcMsgs) { + diseqcMsgIsValid &= diseqcMsgMap.find(msgName) != diseqcMsgMap.end(); + } + } + + if (!diseqcMsgIsValid) { + ALOGW("[vts config] dynamic config diseqcMsg sender is invalid."); + return false; + } + return true; } // TODO: remove all the manual configs after the dynamic config refactoring is done. -/** Configuration array for the Lnb test */ -inline void initLnbConfig() { - lnbArray[LNB0].usingLnb = true; - lnbArray[LNB0].voltage = LnbVoltage::VOLTAGE_12V; - lnbArray[LNB0].tone = LnbTone::NONE; - lnbArray[LNB0].position = LnbPosition::UNDEFINED; - lnbArray[LNB_EXTERNAL].usingLnb = true; - lnbArray[LNB_EXTERNAL].name = "default_lnb_external"; - lnbArray[LNB_EXTERNAL].voltage = LnbVoltage::VOLTAGE_5V; - lnbArray[LNB_EXTERNAL].tone = LnbTone::NONE; - lnbArray[LNB_EXTERNAL].position = LnbPosition::UNDEFINED; -}; - -/** Diseqc messages array for the Lnb test */ -inline void initDiseqcMsg() { - diseqcMsgArray[DISEQC_POWER_ON] = {0xE, 0x0, 0x0, 0x0, 0x0, 0x3}; -}; - -/** Configuration array for the timer filter test */ -inline void initTimeFilterConfig() { - timeFilterArray[TIMER0].supportTimeFilter = true; - timeFilterArray[TIMER0].timeStamp = 1; -} - /** Configuration array for the descrambler test */ inline void initDescramblerConfig() { descramblerArray[DESC_0].casSystemId = CLEAR_KEY_SYSTEM_ID; diff --git a/tv/tuner/config/TunerTestingConfigReader.h b/tv/tuner/config/TunerTestingConfigReader.h index 9ee509c6c1..bc35ac4128 100644 --- a/tv/tuner/config/TunerTestingConfigReader.h +++ b/tv/tuner/config/TunerTestingConfigReader.h @@ -90,6 +90,17 @@ struct DvrConfig { string playbackInputFile; }; +struct LnbConfig { + string name; + LnbVoltage voltage; + LnbTone tone; + LnbPosition position; +}; + +struct TimeFilterConfig { + uint64_t timeStamp; +}; + struct LiveBroadcastHardwareConnections { string frontendId; string dvrSoftwareFeId; @@ -137,8 +148,9 @@ struct LnbLiveHardwareConnections { string frontendId; string audioFilterId; string videoFilterId; - /* list string of extra filters; - string lnbId; */ + string lnbId; + vector diseqcMsgs; + /* list string of extra filters; */ }; struct LnbRecordHardwareConnections { @@ -146,8 +158,14 @@ struct LnbRecordHardwareConnections { string frontendId; string dvrRecordId; string recordFilterId; - /* list string of extra filters; - string lnbId; */ + string lnbId; + vector diseqcMsgs; + /* list string of extra filters; */ +}; + +struct TimeFilterHardwareConnections { + bool support; + string timeFilterId; }; struct TunerTestingConfigReader { @@ -290,6 +308,49 @@ struct TunerTestingConfigReader { } } + static void readLnbConfig1_0(map& lnbMap) { + auto hardwareConfig = getHardwareConfig(); + if (hardwareConfig.hasLnbs()) { + auto lnbs = *hardwareConfig.getFirstLnbs(); + for (auto lnbConfig : lnbs.getLnb()) { + string id = lnbConfig.getId(); + if (lnbConfig.hasName()) { + lnbMap[id].name = lnbConfig.getName(); + } else { + lnbMap[id].name = emptyHardwareId; + } + lnbMap[id].voltage = static_cast(lnbConfig.getVoltage()); + lnbMap[id].tone = static_cast(lnbConfig.getTone()); + lnbMap[id].position = static_cast(lnbConfig.getPosition()); + } + } + } + + static void readDiseqcMessages(map>& diseqcMsgMap) { + auto hardwareConfig = getHardwareConfig(); + if (hardwareConfig.hasDiseqcMessages()) { + auto msgs = *hardwareConfig.getFirstDiseqcMessages(); + for (auto msgConfig : msgs.getDiseqcMessage()) { + string name = msgConfig.getMsgName(); + for (uint8_t atom : msgConfig.getMsgBody()) { + diseqcMsgMap[name].push_back(atom); + } + } + } + } + + static void readTimeFilterConfig1_0(map& timeFilterMap) { + auto hardwareConfig = getHardwareConfig(); + if (hardwareConfig.hasTimeFilters()) { + auto timeFilters = *hardwareConfig.getFirstTimeFilters(); + for (auto timeFilterConfig : timeFilters.getTimeFilter()) { + string id = timeFilterConfig.getId(); + timeFilterMap[id].timeStamp = + static_cast(timeFilterConfig.getTimeStamp()); + } + } + } + static void connectLiveBroadcast(LiveBroadcastHardwareConnections& live) { auto liveConfig = *getDataFlowConfiguration().getFirstClearLiveBroadcast(); live.frontendId = liveConfig.getFrontendConnection(); @@ -377,6 +438,12 @@ struct TunerTestingConfigReader { lnbLive.frontendId = lnbLiveConfig.getFrontendConnection(); lnbLive.audioFilterId = lnbLiveConfig.getAudioFilterConnection(); lnbLive.videoFilterId = lnbLiveConfig.getVideoFilterConnection(); + lnbLive.lnbId = lnbLiveConfig.getLnbConnection(); + if (lnbLiveConfig.hasDiseqcMsgSender()) { + for (auto msgName : lnbLiveConfig.getDiseqcMsgSender()) { + lnbLive.diseqcMsgs.push_back(msgName); + } + } } static void connectLnbRecord(LnbRecordHardwareConnections& lnbRecord) { @@ -390,6 +457,23 @@ struct TunerTestingConfigReader { lnbRecord.frontendId = lnbRecordConfig.getFrontendConnection(); lnbRecord.recordFilterId = lnbRecordConfig.getRecordFilterConnection(); lnbRecord.dvrRecordId = lnbRecordConfig.getDvrRecordConnection(); + lnbRecord.lnbId = lnbRecordConfig.getLnbConnection(); + if (lnbRecordConfig.hasDiseqcMsgSender()) { + for (auto msgName : lnbRecordConfig.getDiseqcMsgSender()) { + lnbRecord.diseqcMsgs.push_back(msgName); + } + } + } + + static void connectTimeFilter(TimeFilterHardwareConnections& timeFilter) { + auto dataFlow = getDataFlowConfiguration(); + if (dataFlow.hasTimeFilter()) { + timeFilter.support = true; + } else { + return; + } + auto timeFilterConfig = *dataFlow.getFirstTimeFilter(); + timeFilter.timeFilterId = timeFilterConfig.getTimeFilterConnection(); } private: diff --git a/tv/tuner/config/api/current.txt b/tv/tuner/config/api/current.txt index a768acbb0d..78e958be44 100644 --- a/tv/tuner/config/api/current.txt +++ b/tv/tuner/config/api/current.txt @@ -16,6 +16,7 @@ package android.media.tuner.testing.configuration.V1_0 { method @Nullable public android.media.tuner.testing.configuration.V1_0.DataFlowConfiguration.LnbLive getLnbLive(); method @Nullable public android.media.tuner.testing.configuration.V1_0.DataFlowConfiguration.LnbRecord getLnbRecord(); method @Nullable public android.media.tuner.testing.configuration.V1_0.DataFlowConfiguration.Scan getScan(); + method @Nullable public android.media.tuner.testing.configuration.V1_0.DataFlowConfiguration.TimeFilter getTimeFilter(); method public void setClearLiveBroadcast(@Nullable android.media.tuner.testing.configuration.V1_0.DataFlowConfiguration.ClearLiveBroadcast); method public void setDescrambling(@Nullable android.media.tuner.testing.configuration.V1_0.DataFlowConfiguration.Descrambling); method public void setDvrPlayback(@Nullable android.media.tuner.testing.configuration.V1_0.DataFlowConfiguration.DvrPlayback); @@ -23,6 +24,7 @@ package android.media.tuner.testing.configuration.V1_0 { method public void setLnbLive(@Nullable android.media.tuner.testing.configuration.V1_0.DataFlowConfiguration.LnbLive); method public void setLnbRecord(@Nullable android.media.tuner.testing.configuration.V1_0.DataFlowConfiguration.LnbRecord); method public void setScan(@Nullable android.media.tuner.testing.configuration.V1_0.DataFlowConfiguration.Scan); + method public void setTimeFilter(@Nullable android.media.tuner.testing.configuration.V1_0.DataFlowConfiguration.TimeFilter); } public static class DataFlowConfiguration.ClearLiveBroadcast { @@ -80,20 +82,28 @@ package android.media.tuner.testing.configuration.V1_0 { public static class DataFlowConfiguration.LnbLive { ctor public DataFlowConfiguration.LnbLive(); method @Nullable public String getAudioFilterConnection(); + method @Nullable public java.util.List getDiseqcMsgSender(); method @Nullable public String getFrontendConnection(); + method @Nullable public String getLnbConnection(); method @Nullable public String getVideoFilterConnection(); method public void setAudioFilterConnection(@Nullable String); + method public void setDiseqcMsgSender(@Nullable java.util.List); method public void setFrontendConnection(@Nullable String); + method public void setLnbConnection(@Nullable String); method public void setVideoFilterConnection(@Nullable String); } public static class DataFlowConfiguration.LnbRecord { ctor public DataFlowConfiguration.LnbRecord(); + method @Nullable public java.util.List getDiseqcMsgSender(); method @Nullable public String getDvrRecordConnection(); method @Nullable public String getFrontendConnection(); + method @Nullable public String getLnbConnection(); method @Nullable public String getRecordFilterConnection(); + method public void setDiseqcMsgSender(@Nullable java.util.List); method public void setDvrRecordConnection(@Nullable String); method public void setFrontendConnection(@Nullable String); + method public void setLnbConnection(@Nullable String); method public void setRecordFilterConnection(@Nullable String); } @@ -103,6 +113,20 @@ package android.media.tuner.testing.configuration.V1_0 { method public void setFrontendConnection(@Nullable String); } + public static class DataFlowConfiguration.TimeFilter { + ctor public DataFlowConfiguration.TimeFilter(); + method @Nullable public String getTimeFilterConnection(); + method public void setTimeFilterConnection(@Nullable String); + } + + public class DiseqcMessage { + ctor public DiseqcMessage(); + method @Nullable public java.util.List getMsgBody(); + method @Nullable public String getMsgName(); + method public void setMsgBody(@Nullable java.util.List); + method public void setMsgName(@Nullable String); + } + public class DvbsFrontendSettings { ctor public DvbsFrontendSettings(); method @Nullable public java.math.BigInteger getInputStreamId(); @@ -245,12 +269,23 @@ package android.media.tuner.testing.configuration.V1_0 { public class HardwareConfiguration { ctor public HardwareConfiguration(); + method @Nullable public android.media.tuner.testing.configuration.V1_0.HardwareConfiguration.DiseqcMessages getDiseqcMessages(); method @Nullable public android.media.tuner.testing.configuration.V1_0.HardwareConfiguration.Dvrs getDvrs(); method @Nullable public android.media.tuner.testing.configuration.V1_0.HardwareConfiguration.Filters getFilters(); method @Nullable public android.media.tuner.testing.configuration.V1_0.HardwareConfiguration.Frontends getFrontends(); + method @Nullable public android.media.tuner.testing.configuration.V1_0.HardwareConfiguration.Lnbs getLnbs(); + method @Nullable public android.media.tuner.testing.configuration.V1_0.HardwareConfiguration.TimeFilters getTimeFilters(); + method public void setDiseqcMessages(@Nullable android.media.tuner.testing.configuration.V1_0.HardwareConfiguration.DiseqcMessages); method public void setDvrs(@Nullable android.media.tuner.testing.configuration.V1_0.HardwareConfiguration.Dvrs); method public void setFilters(@Nullable android.media.tuner.testing.configuration.V1_0.HardwareConfiguration.Filters); method public void setFrontends(@Nullable android.media.tuner.testing.configuration.V1_0.HardwareConfiguration.Frontends); + method public void setLnbs(@Nullable android.media.tuner.testing.configuration.V1_0.HardwareConfiguration.Lnbs); + method public void setTimeFilters(@Nullable android.media.tuner.testing.configuration.V1_0.HardwareConfiguration.TimeFilters); + } + + public static class HardwareConfiguration.DiseqcMessages { + ctor public HardwareConfiguration.DiseqcMessages(); + method @Nullable public java.util.List getDiseqcMessage(); } public static class HardwareConfiguration.Dvrs { @@ -268,6 +303,56 @@ package android.media.tuner.testing.configuration.V1_0 { method @Nullable public java.util.List getFrontend(); } + public static class HardwareConfiguration.Lnbs { + ctor public HardwareConfiguration.Lnbs(); + method @Nullable public java.util.List getLnb(); + } + + public static class HardwareConfiguration.TimeFilters { + ctor public HardwareConfiguration.TimeFilters(); + method @Nullable public java.util.List getTimeFilter(); + } + + public class Lnb { + ctor public Lnb(); + method @Nullable public String getId(); + method @Nullable public String getName(); + method @Nullable public android.media.tuner.testing.configuration.V1_0.LnbPositionEnum getPosition(); + method @Nullable public android.media.tuner.testing.configuration.V1_0.LnbToneEnum getTone(); + method @Nullable public android.media.tuner.testing.configuration.V1_0.LnbVoltageEnum getVoltage(); + method public void setId(@Nullable String); + method public void setName(@Nullable String); + method public void setPosition(@Nullable android.media.tuner.testing.configuration.V1_0.LnbPositionEnum); + method public void setTone(@Nullable android.media.tuner.testing.configuration.V1_0.LnbToneEnum); + method public void setVoltage(@Nullable android.media.tuner.testing.configuration.V1_0.LnbVoltageEnum); + } + + public enum LnbPositionEnum { + method @NonNull public String getRawName(); + enum_constant public static final android.media.tuner.testing.configuration.V1_0.LnbPositionEnum POSITION_A; + enum_constant public static final android.media.tuner.testing.configuration.V1_0.LnbPositionEnum POSITION_B; + enum_constant public static final android.media.tuner.testing.configuration.V1_0.LnbPositionEnum UNDEFINED; + } + + public enum LnbToneEnum { + method @NonNull public String getRawName(); + enum_constant public static final android.media.tuner.testing.configuration.V1_0.LnbToneEnum CONTINUOUS; + enum_constant public static final android.media.tuner.testing.configuration.V1_0.LnbToneEnum NONE; + } + + public enum LnbVoltageEnum { + method @NonNull public String getRawName(); + enum_constant public static final android.media.tuner.testing.configuration.V1_0.LnbVoltageEnum NONE; + enum_constant public static final android.media.tuner.testing.configuration.V1_0.LnbVoltageEnum VOLTAGE_11V; + enum_constant public static final android.media.tuner.testing.configuration.V1_0.LnbVoltageEnum VOLTAGE_12V; + enum_constant public static final android.media.tuner.testing.configuration.V1_0.LnbVoltageEnum VOLTAGE_13V; + enum_constant public static final android.media.tuner.testing.configuration.V1_0.LnbVoltageEnum VOLTAGE_14V; + enum_constant public static final android.media.tuner.testing.configuration.V1_0.LnbVoltageEnum VOLTAGE_15V; + enum_constant public static final android.media.tuner.testing.configuration.V1_0.LnbVoltageEnum VOLTAGE_18V; + enum_constant public static final android.media.tuner.testing.configuration.V1_0.LnbVoltageEnum VOLTAGE_19V; + enum_constant public static final android.media.tuner.testing.configuration.V1_0.LnbVoltageEnum VOLTAGE_5V; + } + public class RecordFilterSettings { ctor public RecordFilterSettings(); method @Nullable public android.media.tuner.testing.configuration.V1_0.ScIndexTypeEnum getScIndexType(); @@ -293,6 +378,14 @@ package android.media.tuner.testing.configuration.V1_0 { method public void setIsRepeat(@Nullable boolean); } + public class TimeFilter { + ctor public TimeFilter(); + method @Nullable public String getId(); + method @Nullable public java.math.BigInteger getTimeStamp(); + method public void setId(@Nullable String); + method public void setTimeStamp(@Nullable java.math.BigInteger); + } + public class TunerConfiguration { ctor public TunerConfiguration(); method @Nullable public android.media.tuner.testing.configuration.V1_0.DataFlowConfiguration getDataFlowConfiguration(); diff --git a/tv/tuner/config/sample_tuner_vts_config.xml b/tv/tuner/config/sample_tuner_vts_config.xml index 44120f7e66..6a3e814e83 100644 --- a/tv/tuner/config/sample_tuner_vts_config.xml +++ b/tv/tuner/config/sample_tuner_vts_config.xml @@ -133,6 +133,41 @@ statusMask="15" lowThreshold="4096" highThreshold="32767" dataFormat="ES" packetSize="188" inputFilePath="/data/local/tmp/test.es"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Each lnb element contain the following attributes: + "id": unique id of the lnb that could be used to connect to the test the + "dataFlowConfiguration" + "name": the external lnb device name. + "voltage": the voltage used to config the lnb. + "tone": the voltage used to config the lnb. + "position": the voltage used to config the lnb. + + + + + + + + + + + + + + + + + + + + + + Each timeFilter element contain the following attributes: + "id": unique id of the time filter that could be used to connect to the test the + "dataFlowConfiguration" + "timeStamp": the time stamp used to config the time filter. + + + + + + @@ -341,6 +434,55 @@ + + + + + This section contains configurations of all the diseqc messages that + would be used in the lnb tests. + - This section is optional and can be skipped if lnb is not suppoted + - The users can configure 1 or more message elements in the + diseqcMessages sections. + + + + + + + + + + + + This section contains configurations of all the lnbs that would be used + in the tests. + - This section is optional and can be skipped if lnb is not suppoted + - The users can configure 1 or more lnb elements in the lnbs + sections. + + + + + + + + + + + + This section contains configurations of all the time filters that would + be used in the tests. + - This section is optional and can be skipped if time filter is + not supported. + - The users can configure 1 or more time filter elements in the + time filters sections. + + + + + + + @@ -397,6 +539,8 @@ + + @@ -405,6 +549,13 @@ + + + + + + + @@ -431,5 +582,13 @@ + + + + + + + +