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

Commit aaff02f4 authored by Amy Zhang's avatar Amy Zhang Committed by Android (Google) Code Review
Browse files

Merge "Add TimeFilter test in Tuner VTS" into rvc-dev

parents 416e3d94 7e4859ce
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -93,9 +93,9 @@ Return<void> Demux::openFilter(const DemuxFilterType& type, uint32_t bufferSize,
Return<void> Demux::openTimeFilter(openTimeFilter_cb _hidl_cb) {
Return<void> Demux::openTimeFilter(openTimeFilter_cb _hidl_cb) {
    ALOGV("%s", __FUNCTION__);
    ALOGV("%s", __FUNCTION__);


    sp<TimeFilter> timeFilter = new TimeFilter(this);
    mTimeFilter = new TimeFilter(this);


    _hidl_cb(Result::SUCCESS, timeFilter);
    _hidl_cb(Result::SUCCESS, mTimeFilter);
    return Void();
    return Void();
}
}


+5 −0
Original line number Original line Diff line number Diff line
@@ -152,6 +152,11 @@ class Demux : public IDemux {
     */
     */
    std::map<uint32_t, sp<Filter>> mFilters;
    std::map<uint32_t, sp<Filter>> mFilters;


    /**
     * Local reference to the opened Timer Filter instance.
     */
    sp<TimeFilter> mTimeFilter;

    /**
    /**
     * Local reference to the opened DVR object.
     * Local reference to the opened DVR object.
     */
     */
+13 −4
Original line number Original line Diff line number Diff line
@@ -34,24 +34,32 @@ TimeFilter::TimeFilter(sp<Demux> demux) {


TimeFilter::~TimeFilter() {}
TimeFilter::~TimeFilter() {}


Return<Result> TimeFilter::setTimeStamp(uint64_t /* timeStamp */) {
Return<Result> TimeFilter::setTimeStamp(uint64_t timeStamp) {
    ALOGV("%s", __FUNCTION__);
    ALOGV("%s", __FUNCTION__);
    if (timeStamp == INVALID_TIME_STAMP) {
        return Result::INVALID_ARGUMENT;
    }
    mTimeStamp = timeStamp;
    mBeginTime = time(NULL);


    return Result::SUCCESS;
    return Result::SUCCESS;
}
}


Return<Result> TimeFilter::clearTimeStamp() {
Return<Result> TimeFilter::clearTimeStamp() {
    ALOGV("%s", __FUNCTION__);
    ALOGV("%s", __FUNCTION__);
    mTimeStamp = INVALID_TIME_STAMP;


    return Result::SUCCESS;
    return Result::SUCCESS;
}
}


Return<void> TimeFilter::getTimeStamp(getTimeStamp_cb _hidl_cb) {
Return<void> TimeFilter::getTimeStamp(getTimeStamp_cb _hidl_cb) {
    ALOGV("%s", __FUNCTION__);
    ALOGV("%s", __FUNCTION__);
    if (mTimeStamp == INVALID_TIME_STAMP) {
        _hidl_cb(Result::INVALID_STATE, mTimeStamp);
    }


    uint64_t timeStamp = 0;
    uint64_t currentTimeStamp = mTimeStamp + difftime(time(NULL), mBeginTime) * 900000;

    _hidl_cb(Result::SUCCESS, currentTimeStamp);
    _hidl_cb(Result::SUCCESS, timeStamp);
    return Void();
    return Void();
}
}


@@ -66,6 +74,7 @@ Return<void> TimeFilter::getSourceTime(getSourceTime_cb _hidl_cb) {


Return<Result> TimeFilter::close() {
Return<Result> TimeFilter::close() {
    ALOGV("%s", __FUNCTION__);
    ALOGV("%s", __FUNCTION__);
    mTimeStamp = INVALID_TIME_STAMP;


    return Result::SUCCESS;
    return Result::SUCCESS;
}
}
+5 −0
Original line number Original line Diff line number Diff line
@@ -19,6 +19,7 @@


#include <android/hardware/tv/tuner/1.0/ITimeFilter.h>
#include <android/hardware/tv/tuner/1.0/ITimeFilter.h>
#include "Demux.h"
#include "Demux.h"
#include "time.h"


using namespace std;
using namespace std;


@@ -35,6 +36,8 @@ using ::android::hardware::tv::tuner::V1_0::Result;


using FilterMQ = MessageQueue<uint8_t, kSynchronizedReadWrite>;
using FilterMQ = MessageQueue<uint8_t, kSynchronizedReadWrite>;


#define INVALID_TIME_STAMP -1

class Demux;
class Demux;


class TimeFilter : public ITimeFilter {
class TimeFilter : public ITimeFilter {
@@ -57,6 +60,8 @@ class TimeFilter : public ITimeFilter {


  private:
  private:
    sp<Demux> mDemux;
    sp<Demux> mDemux;
    uint64_t mTimeStamp = INVALID_TIME_STAMP;
    time_t mBeginTime;
};
};


}  // namespace implementation
}  // namespace implementation
+56 −0
Original line number Original line Diff line number Diff line
@@ -149,6 +149,44 @@ AssertionResult FilterTests::openFilterInDemux(DemuxFilterType type, uint32_t bu
    return AssertionResult(status == Result::SUCCESS);
    return AssertionResult(status == Result::SUCCESS);
}
}


AssertionResult FilterTests::openTimeFilterInDemux() {
    if (!mDemux) {
        ALOGW("[vts] Test with openDemux first.");
        return failure();
    }

    // Add time filter to the local demux
    Result status;
    mDemux->openTimeFilter([&](Result result, const sp<ITimeFilter>& filter) {
        mTimeFilter = filter;
        status = result;
    });

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

AssertionResult FilterTests::setTimeStamp(uint64_t timeStamp) {
    if (!mTimeFilter) {
        ALOGW("[vts] Test with openTimeFilterInDemux first.");
        return failure();
    }

    mBeginTimeStamp = timeStamp;
    return AssertionResult(mTimeFilter->setTimeStamp(timeStamp) == Result::SUCCESS);
}

AssertionResult FilterTests::getTimeStamp() {
    if (!mTimeFilter) {
        ALOGW("[vts] Test with openTimeFilterInDemux first.");
        return failure();
    }

    Result status;
    mTimeFilter->getTimeStamp([&](Result result, uint64_t /*timeStamp*/) { status = result; });

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

AssertionResult FilterTests::getNewlyOpenedFilterId(uint32_t& filterId) {
AssertionResult FilterTests::getNewlyOpenedFilterId(uint32_t& filterId) {
    Result status;
    Result status;
    EXPECT_TRUE(mDemux) << "Test with openDemux first.";
    EXPECT_TRUE(mDemux) << "Test with openDemux first.";
@@ -229,6 +267,15 @@ AssertionResult FilterTests::stopFilter(uint32_t filterId) {
    return AssertionResult(status == Result::SUCCESS);
    return AssertionResult(status == Result::SUCCESS);
}
}


AssertionResult FilterTests::clearTimeStamp() {
    if (!mTimeFilter) {
        ALOGW("[vts] Test with openTimeFilterInDemux first.");
        return failure();
    }

    return AssertionResult(mTimeFilter->clearTimeStamp() == Result::SUCCESS);
}

AssertionResult FilterTests::closeFilter(uint32_t filterId) {
AssertionResult FilterTests::closeFilter(uint32_t filterId) {
    EXPECT_TRUE(mFilters[filterId]) << "Test with getNewlyOpenedFilterId first.";
    EXPECT_TRUE(mFilters[filterId]) << "Test with getNewlyOpenedFilterId first.";
    Result status = mFilters[filterId]->close();
    Result status = mFilters[filterId]->close();
@@ -244,3 +291,12 @@ AssertionResult FilterTests::closeFilter(uint32_t filterId) {
    }
    }
    return AssertionResult(status == Result::SUCCESS);
    return AssertionResult(status == Result::SUCCESS);
}
}

AssertionResult FilterTests::closeTimeFilter() {
    if (!mTimeFilter) {
        ALOGW("[vts] Test with openTimeFilterInDemux first.");
        return failure();
    }

    return AssertionResult(mTimeFilter->close() == Result::SUCCESS);
}
Loading