diff options
Diffstat (limited to 'broadcastradio/2.0/vts/functional/VtsHalBroadcastradioV2_0TargetTest.cpp')
-rw-r--r-- | broadcastradio/2.0/vts/functional/VtsHalBroadcastradioV2_0TargetTest.cpp | 43 |
1 files changed, 41 insertions, 2 deletions
diff --git a/broadcastradio/2.0/vts/functional/VtsHalBroadcastradioV2_0TargetTest.cpp b/broadcastradio/2.0/vts/functional/VtsHalBroadcastradioV2_0TargetTest.cpp index 615fde0343..63e3b554dd 100644 --- a/broadcastradio/2.0/vts/functional/VtsHalBroadcastradioV2_0TargetTest.cpp +++ b/broadcastradio/2.0/vts/functional/VtsHalBroadcastradioV2_0TargetTest.cpp @@ -514,9 +514,48 @@ TEST_P(BroadcastRadioHalTest, DabTune) { ASSERT_TRUE(openSession()); + auto programList = getProgramList(); + + if (!programList) { + printSkipped("Empty Station-List, tune cannot be performed"); + return; + } + ProgramSelector sel = {}; - uint64_t freq = config[config.size() / 2].frequency; - sel.primaryId = make_identifier(IdentifierType::DAB_FREQUENCY,freq); + uint64_t freq = 0; + bool dabStnPresent = false; + + for (auto&& programInfo : *programList) { + if (utils::hasId(programInfo.selector, IdentifierType::DAB_FREQUENCY)) { + for (auto&& config_entry : config) { + if (config_entry.frequency == utils::getId(programInfo.selector, + IdentifierType::DAB_FREQUENCY, 0)) { + freq = config_entry.frequency; + break; + } + } + // Do not trigger a tune request if the programList entry does not contain + // a valid DAB frequency + if (freq == 0) { + continue; + } + uint64_t dabSidExt = utils::getId(programInfo.selector, IdentifierType::DAB_SID_EXT, 0); + uint64_t dabEns = utils::getId(programInfo.selector, IdentifierType::DAB_ENSEMBLE, 0); + sel.primaryId = make_identifier(IdentifierType::DAB_SID_EXT, dabSidExt); + hidl_vec<ProgramIdentifier> secondaryIds = { + make_identifier(IdentifierType::DAB_ENSEMBLE, dabEns), + make_identifier(IdentifierType::DAB_FREQUENCY, freq) + }; + sel.secondaryIds = secondaryIds; + dabStnPresent = true; + break; + } + } + + if (!dabStnPresent) { + printSkipped("No DAB stations in the list, tune cannot be performed"); + return; + } std::this_thread::sleep_for(gTuneWorkaround); |