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

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

IP and CID filtering configuration of IP filter

Add the cid configuration API in IFilter and some related
enums

Test: atest VtsHalTvTunerV1_1TargetTest
Bug: 153595125
Change-Id: I6e43c0f71466192f9fa69c76f9c635ecefe99d5e
parent c428f2cb
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -40,4 +40,15 @@ interface IFilter extends @1.0::IFilter {
     * @return filterId the hardware resource Id for the filter.
     */
    getId64Bit() generates (Result result, uint64_t filterId);

    /**
     * Configure additional Context ID on the IP filter.
     *
     * @param ipCid Context Id of the IP filter.
     * @return result Result status of the operation.
     *         SUCCESS if successful,
     *         INVALID_STATE if failed for wrong state.
     *         UNKNOWN_ERROR if failed for other reasons.
     */
    configureIpCid(uint32_t ipCid) generates (Result result);
};
+11 −0
Original line number Diff line number Diff line
@@ -179,6 +179,17 @@ Return<Result> Filter::close() {
    return mDemux->removeFilter(mFilterId);
}

Return<Result> Filter::configureIpCid(uint32_t ipCid) {
    ALOGV("%s", __FUNCTION__);

    if (mType.mainType != DemuxFilterMainType::IP) {
        return Result::INVALID_STATE;
    }

    mCid = ipCid;
    return Result::SUCCESS;
}

bool Filter::createFilterMQ() {
    ALOGV("%s", __FUNCTION__);

+3 −0
Original line number Diff line number Diff line
@@ -76,6 +76,8 @@ class Filter : public V1_1::IFilter {

    virtual Return<Result> close() override;

    virtual Return<Result> configureIpCid(uint32_t ipCid) override;

    /**
     * To create a FilterMQ and its Event Flag.
     *
@@ -111,6 +113,7 @@ class Filter : public V1_1::IFilter {
    sp<V1_1::IFilterCallback> mCallback_1_1 = nullptr;

    uint64_t mFilterId;
    uint32_t mCid = static_cast<uint32_t>(V1_1::Constant::INVALID_IP_FILTER_CONTEXT_ID);
    uint32_t mBufferSize;
    DemuxFilterType mType;
    bool mIsMediaFilter = false;
+5 −0
Original line number Diff line number Diff line
@@ -34,6 +34,11 @@ enum Constant : @1.0::Constant {
     * An invalid frenquency that can be used as the default value of the frontend setting.
     */
    INVALID_FRONTEND_SETTING_FREQUENCY = 0xFFFFFFFF,
    /**
     * An invalid context id that can be used as the default value of the unconfigured id. It can
     * be used to reset the configured ip context id.
     */
    INVALID_IP_FILTER_CONTEXT_ID = 0xFFFFFFFF,
};

@export
+16 −0
Original line number Diff line number Diff line
@@ -89,6 +89,22 @@ AssertionResult FilterTests::configFilter(DemuxFilterSettings setting, uint64_t
    return AssertionResult(status == Result::SUCCESS);
}

AssertionResult FilterTests::configIpFilterCid(uint32_t ipCid, uint64_t filterId) {
    Result status;
    EXPECT_TRUE(mFilters[filterId]) << "Open Ip filter first.";

    sp<android::hardware::tv::tuner::V1_1::IFilter> filter_v1_1 =
            android::hardware::tv::tuner::V1_1::IFilter::castFrom(mFilters[filterId]);
    if (filter_v1_1 != NULL) {
        status = filter_v1_1->configureIpCid(ipCid);
    } else {
        ALOGW("[vts] Can't cast IFilter into v1_1.");
        return failure();
    }

    return AssertionResult(status == Result::SUCCESS);
}

AssertionResult FilterTests::getFilterMQDescriptor(uint64_t filterId) {
    Result status;
    EXPECT_TRUE(mFilters[filterId]) << "Test with getNewlyOpenedFilterId first.";
Loading