mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-02-01 11:36:00 +00:00
Tuner HAL VTS: Dynamically Configure LnbDescrambling
This CL allows the vendor to ommit LnbDescrambling from the configuration file. The VTS will look at the devices configured by the vendors and automatically configure the dataflows and determine which tests to run for LnbDescrambling. Bug: b/240476983 Test: Test: ts-tradefed run vts --module VtsHalTvTunerTargetTest Change-Id: I003c6405e7fcc4e3494ef976dca83b9f7d6160a6
This commit is contained in:
@@ -1297,12 +1297,20 @@ TEST_P(TunerDescramblerAidlTest, ScrambledBroadcastDataFlowMediaFiltersTestWithL
|
||||
if (!lnbDescrambling.support) {
|
||||
return;
|
||||
}
|
||||
set<FilterConfig> filterConfs;
|
||||
filterConfs.insert(static_cast<FilterConfig>(filterMap[lnbDescrambling.audioFilterId]));
|
||||
filterConfs.insert(static_cast<FilterConfig>(filterMap[lnbDescrambling.videoFilterId]));
|
||||
scrambledBroadcastTestWithLnb(filterConfs, frontendMap[lnbDescrambling.frontendId],
|
||||
descramblerMap[lnbDescrambling.descramblerId],
|
||||
lnbMap[lnbDescrambling.lnbId]);
|
||||
auto lnbDescrambling_configs = generateLnbDescramblingConfigurations();
|
||||
if (lnbDescrambling_configs.empty()) {
|
||||
ALOGD("No frontends that support satellites.");
|
||||
return;
|
||||
}
|
||||
for (auto& configuration : lnbDescrambling_configs) {
|
||||
lnbDescrambling = configuration;
|
||||
set<FilterConfig> filterConfs;
|
||||
filterConfs.insert(static_cast<FilterConfig>(filterMap[lnbDescrambling.audioFilterId]));
|
||||
filterConfs.insert(static_cast<FilterConfig>(filterMap[lnbDescrambling.videoFilterId]));
|
||||
scrambledBroadcastTestWithLnb(filterConfs, frontendMap[lnbDescrambling.frontendId],
|
||||
descramblerMap[lnbDescrambling.descramblerId],
|
||||
lnbMap[lnbDescrambling.lnbId]);
|
||||
}
|
||||
}
|
||||
|
||||
INSTANTIATE_TEST_SUITE_P(PerInstance, TunerBroadcastAidlTest,
|
||||
|
||||
@@ -533,6 +533,54 @@ static inline vector<LiveBroadcastHardwareConnections> generateLiveConfiguration
|
||||
return live_configs;
|
||||
}
|
||||
|
||||
static inline vector<LnbDescramblingHardwareConnections> generateLnbDescramblingCombinations() {
|
||||
vector<LnbDescramblingHardwareConnections> combinations;
|
||||
vector<vector<string>> deviceIds{frontendIds, audioFilterIds, lnbIds, descramblerIds};
|
||||
|
||||
const int frontendIdIndex = 0;
|
||||
const int audioFilterIdIndex = 1;
|
||||
const int lnbIdIndex = 2;
|
||||
const int descramblerIdIndex = 3;
|
||||
|
||||
auto idCombinations = generateIdCombinations(deviceIds);
|
||||
// TODO : Find a better way to vary diseqcMsgs, if at all
|
||||
for (auto& combo : idCombinations) {
|
||||
const string feId = combo[frontendIdIndex];
|
||||
auto type = frontendMap[feId].type;
|
||||
if (type == FrontendType::DVBS || type == FrontendType::ISDBS ||
|
||||
type == FrontendType::ISDBS3) {
|
||||
LnbDescramblingHardwareConnections mLnbDescrambling;
|
||||
mLnbDescrambling.support = true;
|
||||
mLnbDescrambling.frontendId = feId;
|
||||
mLnbDescrambling.audioFilterId = combo[audioFilterIdIndex];
|
||||
const int videoFilterIdIndex = find(audioFilterIds.begin(), audioFilterIds.end(),
|
||||
mLnbDescrambling.audioFilterId) -
|
||||
audioFilterIds.begin();
|
||||
mLnbDescrambling.videoFilterId = videoFilterIds[videoFilterIdIndex];
|
||||
mLnbDescrambling.lnbId = combo[lnbIdIndex];
|
||||
mLnbDescrambling.descramblerId = combo[descramblerIdIndex];
|
||||
mLnbDescrambling.diseqcMsgs = diseqcMsgs;
|
||||
combinations.push_back(mLnbDescrambling);
|
||||
}
|
||||
}
|
||||
|
||||
return combinations;
|
||||
}
|
||||
|
||||
static inline vector<LnbDescramblingHardwareConnections> generateLnbDescramblingConfigurations() {
|
||||
vector<LnbDescramblingHardwareConnections> lnbDescrambling_configs;
|
||||
if (configuredLnbDescrambling) {
|
||||
ALOGD("Using LnbDescrambling configuration provided");
|
||||
lnbDescrambling_configs = {lnbDescrambling};
|
||||
} else {
|
||||
ALOGD("LnbDescrambling not provided. Generating possible combinations. Consider adding it "
|
||||
"to the configuration file.");
|
||||
lnbDescrambling_configs = generateLnbDescramblingCombinations();
|
||||
}
|
||||
|
||||
return lnbDescrambling_configs;
|
||||
}
|
||||
|
||||
/** Config all the frontends that would be used in the tests */
|
||||
inline void initFrontendConfig() {
|
||||
// The test will use the internal default fe when default fe is connected to any data flow
|
||||
@@ -721,6 +769,15 @@ inline void determineDvrRecord() {
|
||||
record.support = true;
|
||||
}
|
||||
|
||||
inline void determineLnbDescrambling() {
|
||||
if (frontendIds.empty() || audioFilterIds.empty() || videoFilterIds.empty() || lnbIds.empty() ||
|
||||
descramblerIds.empty()) {
|
||||
return;
|
||||
}
|
||||
ALOGD("Can support LnbDescrambling.");
|
||||
lnbDescrambling.support = true;
|
||||
}
|
||||
|
||||
/** Read the vendor configurations of which hardware to use for each test cases/data flows */
|
||||
inline void connectHardwaresToTestCases() {
|
||||
TunerTestingConfigAidlReader1_0::connectLiveBroadcast(live);
|
||||
@@ -743,6 +800,7 @@ inline void determineDataFlows() {
|
||||
determineLive();
|
||||
determineDescrambling();
|
||||
determineDvrRecord();
|
||||
determineLnbDescrambling();
|
||||
}
|
||||
|
||||
inline bool validateConnections() {
|
||||
|
||||
Reference in New Issue
Block a user