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

Commit df57fbfb authored by Amy Zhang's avatar Amy Zhang
Browse files

Improve Tuner 1.1 VTS configuration and 1.0 VTS compatibility

This CL cherry-picks most of the backported changes of Tuner 1.0 from
android 12 to android 11 vts branch to Tuner 1.1 VTS in Android 12
per BCM's suggestions

Test: atest VtsHalTvTunerV1_0TargetTest
Test: atest VtsHalTvTunerV1_1TargetTest
Bug: 182519645
Change-Id: I3651396511fa067ce053ac2531cd2324832eb5f0
parent fc68c319
Loading
Loading
Loading
Loading
+8 −9
Original line number Original line Diff line number Diff line
@@ -70,10 +70,6 @@ void FilterCallback::filterThreadLoop(DemuxFilterEvent& /* event */) {
}
}


bool FilterCallback::readFilterEventData() {
bool FilterCallback::readFilterEventData() {
    if (mFilterMQ == NULL) {
        ALOGW("[vts] FMQ is not configured and does not need to be tested.");
        return true;
    }
    bool result = false;
    bool result = false;
    DemuxFilterEvent filterEvent = mFilterEvent;
    DemuxFilterEvent filterEvent = mFilterEvent;
    ALOGW("[vts] reading from filter FMQ or buffer %d", mFilterId);
    ALOGW("[vts] reading from filter FMQ or buffer %d", mFilterId);
@@ -95,16 +91,19 @@ bool FilterCallback::readFilterEventData() {
        }
        }
        // EXPECT_TRUE(mDataLength == goldenDataOutputBuffer.size()) << "buffer size does not
        // EXPECT_TRUE(mDataLength == goldenDataOutputBuffer.size()) << "buffer size does not
        // match";
        // match";

        if (mFilterMQ != NULL) {
            mDataOutputBuffer.resize(mDataLength);
            mDataOutputBuffer.resize(mDataLength);
            result = mFilterMQ->read(mDataOutputBuffer.data(), mDataLength);
            result = mFilterMQ->read(mDataOutputBuffer.data(), mDataLength);
            EXPECT_TRUE(result) << "can't read from Filter MQ";
            EXPECT_TRUE(result) << "can't read from Filter MQ";
        }


        /*for (int i = 0; i < mDataLength; i++) {
        /*for (int i = 0; i < mDataLength; i++) {
            EXPECT_TRUE(goldenDataOutputBuffer[i] == mDataOutputBuffer[i]) << "data does not match";
            EXPECT_TRUE(goldenDataOutputBuffer[i] == mDataOutputBuffer[i]) << "data does not match";
        }*/
        }*/
    }
    }
    if (mFilterMQ != NULL) {
        mFilterMQEventFlag->wake(static_cast<uint32_t>(DemuxQueueNotifyBits::DATA_CONSUMED));
        mFilterMQEventFlag->wake(static_cast<uint32_t>(DemuxQueueNotifyBits::DATA_CONSUMED));
    }
    return result;
    return result;
}
}


+1 −1
Original line number Original line Diff line number Diff line
@@ -221,7 +221,7 @@ inline void initFrontendConfig() {
    frontendArray[DVBT].tuneStatusTypes = types;
    frontendArray[DVBT].tuneStatusTypes = types;
    frontendArray[DVBT].expectTuneStatuses = statuses;
    frontendArray[DVBT].expectTuneStatuses = statuses;
    frontendArray[DVBT].isSoftwareFe = true;
    frontendArray[DVBT].isSoftwareFe = true;
    frontendArray[DVBS].enable = true;
    frontendArray[DVBT].enable = true;
    frontendArray[DVBS].type = FrontendType::DVBS;
    frontendArray[DVBS].type = FrontendType::DVBS;
    frontendArray[DVBS].enable = true;
    frontendArray[DVBS].enable = true;
    frontendArray[DVBS].isSoftwareFe = true;
    frontendArray[DVBS].isSoftwareFe = true;
+5 −1
Original line number Original line Diff line number Diff line
@@ -252,7 +252,11 @@ AssertionResult FilterTests::configIpFilterCid(uint32_t ipCid, uint64_t filterId
    return AssertionResult(status == Result::SUCCESS);
    return AssertionResult(status == Result::SUCCESS);
}
}


AssertionResult FilterTests::getFilterMQDescriptor(uint64_t filterId) {
AssertionResult FilterTests::getFilterMQDescriptor(uint64_t filterId, bool getMqDesc) {
    if (!getMqDesc) {
        ALOGE("[vts] Filter does not need FMQ.");
        return success();
    }
    Result status;
    Result status;
    EXPECT_TRUE(mFilters[filterId]) << "Test with getNewlyOpenedFilterId first.";
    EXPECT_TRUE(mFilters[filterId]) << "Test with getNewlyOpenedFilterId first.";
    EXPECT_TRUE(mFilterCallbacks[filterId]) << "Test with getNewlyOpenedFilterId first.";
    EXPECT_TRUE(mFilterCallbacks[filterId]) << "Test with getNewlyOpenedFilterId first.";
+1 −1
Original line number Original line Diff line number Diff line
@@ -161,7 +161,7 @@ class FilterTests {
    AssertionResult configAvFilterStreamType(AvStreamType type, uint64_t filterId);
    AssertionResult configAvFilterStreamType(AvStreamType type, uint64_t filterId);
    AssertionResult configIpFilterCid(uint32_t ipCid, uint64_t filterId);
    AssertionResult configIpFilterCid(uint32_t ipCid, uint64_t filterId);
    AssertionResult configureMonitorEvent(uint64_t filterId, uint32_t monitorEventTypes);
    AssertionResult configureMonitorEvent(uint64_t filterId, uint32_t monitorEventTypes);
    AssertionResult getFilterMQDescriptor(uint64_t filterId);
    AssertionResult getFilterMQDescriptor(uint64_t filterId, bool getMqDesc);
    AssertionResult startFilter(uint64_t filterId);
    AssertionResult startFilter(uint64_t filterId);
    AssertionResult stopFilter(uint64_t filterId);
    AssertionResult stopFilter(uint64_t filterId);
    AssertionResult closeFilter(uint64_t filterId);
    AssertionResult closeFilter(uint64_t filterId);
+28 −27
Original line number Original line Diff line number Diff line
@@ -130,7 +130,7 @@ void FrontendCallback::scanTest(sp<IFrontend>& frontend, FrontendConfig config,
        return;
        return;
    }
    }


    uint32_t targetFrequency = getTargetFrequency(config.settings, config.type);
    uint32_t targetFrequency = getTargetFrequency(config.settings);
    if (type == FrontendScanType::SCAN_BLIND) {
    if (type == FrontendScanType::SCAN_BLIND) {
        // reset the frequency in the scan configuration to test blind scan. The settings param of
        // reset the frequency in the scan configuration to test blind scan. The settings param of
        // passed in means the real input config on the transponder connected to the DUT.
        // passed in means the real input config on the transponder connected to the DUT.
@@ -184,64 +184,59 @@ wait:
    mScanMsgProcessed = true;
    mScanMsgProcessed = true;
}
}


uint32_t FrontendCallback::getTargetFrequency(FrontendSettings settings, FrontendType type) {
uint32_t FrontendCallback::getTargetFrequency(FrontendSettings settings) {
    switch (type) {
    switch (settings.getDiscriminator()) {
        case FrontendType::ANALOG:
        case FrontendSettings::hidl_discriminator::analog:
            return settings.analog().frequency;
            return settings.analog().frequency;
        case FrontendType::ATSC:
        case FrontendSettings::hidl_discriminator::atsc:
            return settings.atsc().frequency;
            return settings.atsc().frequency;
        case FrontendType::ATSC3:
        case FrontendSettings::hidl_discriminator::atsc3:
            return settings.atsc3().frequency;
            return settings.atsc3().frequency;
        case FrontendType::DVBC:
        case FrontendSettings::hidl_discriminator::dvbc:
            return settings.dvbc().frequency;
            return settings.dvbc().frequency;
        case FrontendType::DVBS:
        case FrontendSettings::hidl_discriminator::dvbs:
            return settings.dvbs().frequency;
            return settings.dvbs().frequency;
        case FrontendType::DVBT:
        case FrontendSettings::hidl_discriminator::dvbt:
            return settings.dvbt().frequency;
            return settings.dvbt().frequency;
        case FrontendType::ISDBS:
        case FrontendSettings::hidl_discriminator::isdbs:
            return settings.isdbs().frequency;
            return settings.isdbs().frequency;
        case FrontendType::ISDBS3:
        case FrontendSettings::hidl_discriminator::isdbs3:
            return settings.isdbs3().frequency;
            return settings.isdbs3().frequency;
        case FrontendType::ISDBT:
        case FrontendSettings::hidl_discriminator::isdbt:
            return settings.isdbt().frequency;
            return settings.isdbt().frequency;
        default:
            return 0;
    }
    }
}
}


void FrontendCallback::resetBlindScanStartingFrequency(FrontendConfig& config,
void FrontendCallback::resetBlindScanStartingFrequency(FrontendConfig& config,
                                                       uint32_t resetingFreq) {
                                                       uint32_t resetingFreq) {
    switch (config.type) {
    switch (config.settings.getDiscriminator()) {
        case FrontendType::ANALOG:
        case FrontendSettings::hidl_discriminator::analog:
            config.settings.analog().frequency = resetingFreq;
            config.settings.analog().frequency = resetingFreq;
            break;
            break;
        case FrontendType::ATSC:
        case FrontendSettings::hidl_discriminator::atsc:
            config.settings.atsc().frequency = resetingFreq;
            config.settings.atsc().frequency = resetingFreq;
            break;
            break;
        case FrontendType::ATSC3:
        case FrontendSettings::hidl_discriminator::atsc3:
            config.settings.atsc3().frequency = resetingFreq;
            config.settings.atsc3().frequency = resetingFreq;
            break;
            break;
        case FrontendType::DVBC:
        case FrontendSettings::hidl_discriminator::dvbc:
            config.settings.dvbc().frequency = resetingFreq;
            config.settings.dvbc().frequency = resetingFreq;
            break;
            break;
        case FrontendType::DVBS:
        case FrontendSettings::hidl_discriminator::dvbs:
            config.settings.dvbs().frequency = resetingFreq;
            config.settings.dvbs().frequency = resetingFreq;
            break;
            break;
        case FrontendType::DVBT:
        case FrontendSettings::hidl_discriminator::dvbt:
            config.settings.dvbt().frequency = resetingFreq;
            config.settings.dvbt().frequency = resetingFreq;
            break;
            break;
        case FrontendType::ISDBS:
        case FrontendSettings::hidl_discriminator::isdbs:
            config.settings.isdbs().frequency = resetingFreq;
            config.settings.isdbs().frequency = resetingFreq;
            break;
            break;
        case FrontendType::ISDBS3:
        case FrontendSettings::hidl_discriminator::isdbs3:
            config.settings.isdbs3().frequency = resetingFreq;
            config.settings.isdbs3().frequency = resetingFreq;
            break;
            break;
        case FrontendType::ISDBT:
        case FrontendSettings::hidl_discriminator::isdbt:
            config.settings.isdbt().frequency = resetingFreq;
            config.settings.isdbt().frequency = resetingFreq;
            break;
            break;
        default:
            // do nothing
            return;
    }
    }
}
}


@@ -490,6 +485,9 @@ void FrontendTests::getFrontendIdByType(FrontendType feType, uint32_t& feId) {
}
}


void FrontendTests::tuneTest(FrontendConfig frontendConf) {
void FrontendTests::tuneTest(FrontendConfig frontendConf) {
    if (!frontendConf.enable) {
        return;
    }
    uint32_t feId;
    uint32_t feId;
    getFrontendIdByType(frontendConf.type, feId);
    getFrontendIdByType(frontendConf.type, feId);
    ASSERT_TRUE(feId != INVALID_ID);
    ASSERT_TRUE(feId != INVALID_ID);
@@ -506,6 +504,9 @@ void FrontendTests::tuneTest(FrontendConfig frontendConf) {
}
}


void FrontendTests::scanTest(FrontendConfig frontendConf, FrontendScanType scanType) {
void FrontendTests::scanTest(FrontendConfig frontendConf, FrontendScanType scanType) {
    if (!frontendConf.enable) {
        return;
    }
    uint32_t feId;
    uint32_t feId;
    getFrontendIdByType(frontendConf.type, feId);
    getFrontendIdByType(frontendConf.type, feId);
    ASSERT_TRUE(feId != INVALID_ID);
    ASSERT_TRUE(feId != INVALID_ID);
Loading