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

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

Merge "Connect TunerDescrambler and DescramblerClient" into sc-dev

parents dda564f5 38261c34
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -100,6 +100,11 @@ public:
     */
    Result close();

    /**
     * Get the Aidl demux to set as source.
     */
    shared_ptr<ITunerDemux> getAidlDemux() { return mTunerDemux; }

    void setId(int id) { mId = id; }
    int getId() { return mId; }

+40 −11
Original line number Diff line number Diff line
@@ -27,13 +27,12 @@ namespace android {

/////////////// DescramblerClient ///////////////////////

// TODO: pending aidl interface
DescramblerClient::DescramblerClient() {
    //mTunerDescrambler = tunerDescrambler;
DescramblerClient::DescramblerClient(shared_ptr<ITunerDescrambler> tunerDescrambler) {
    mTunerDescrambler = tunerDescrambler;
}

DescramblerClient::~DescramblerClient() {
    //mTunerDescrambler = NULL;
    mTunerDescrambler = NULL;
    mDescrambler = NULL;
}

@@ -47,7 +46,10 @@ Result DescramblerClient::setDemuxSource(sp<DemuxClient> demuxClient) {
        return Result::INVALID_ARGUMENT;
    }

    // TODO: pending aidl interface
    if (mTunerDescrambler != NULL) {
        Status s = mTunerDescrambler->setDemuxSource(demuxClient->getAidlDemux());
        return ClientHelper::getServiceSpecificErrorCode(s);
    }

    if (mDescrambler != NULL) {
        return mDescrambler->setDemuxSource(demuxClient->getId());
@@ -57,7 +59,10 @@ Result DescramblerClient::setDemuxSource(sp<DemuxClient> demuxClient) {
}

Result DescramblerClient::setKeyToken(vector<uint8_t> keyToken) {
    // TODO: pending aidl interface
    if (mTunerDescrambler != NULL) {
        Status s = mTunerDescrambler->setKeyToken(keyToken);
        return ClientHelper::getServiceSpecificErrorCode(s);
    }

    if (mDescrambler != NULL) {
        return mDescrambler->setKeyToken(keyToken);
@@ -67,7 +72,11 @@ Result DescramblerClient::setKeyToken(vector<uint8_t> keyToken) {
}

Result DescramblerClient::addPid(DemuxPid pid, sp<FilterClient> optionalSourceFilter) {
    // TODO: pending aidl interface
    if (mTunerDescrambler != NULL) {
        Status s = mTunerDescrambler->addPid(
                getAidlDemuxPid(pid), optionalSourceFilter->getAidlFilter());
        return ClientHelper::getServiceSpecificErrorCode(s);
    }

    if (mDescrambler != NULL) {
        return mDescrambler->addPid(pid, optionalSourceFilter->getHalFilter());
@@ -76,16 +85,24 @@ Result DescramblerClient::addPid(DemuxPid pid, sp<FilterClient> optionalSourceFi
    return Result::INVALID_STATE;}

Result DescramblerClient::removePid(DemuxPid pid, sp<FilterClient> optionalSourceFilter) {
    // TODO: pending aidl interface
    if (mTunerDescrambler != NULL) {
        Status s = mTunerDescrambler->removePid(
                getAidlDemuxPid(pid), optionalSourceFilter->getAidlFilter());
        return ClientHelper::getServiceSpecificErrorCode(s);
    }

    if (mDescrambler != NULL) {
        return mDescrambler->addPid(pid, optionalSourceFilter->getHalFilter());
        return mDescrambler->removePid(pid, optionalSourceFilter->getHalFilter());
    }

    return Result::INVALID_STATE;}
    return Result::INVALID_STATE;
}

Result DescramblerClient::close() {
    // TODO: pending aidl interface
    if (mTunerDescrambler != NULL) {
        Status s = mTunerDescrambler->close();
        return ClientHelper::getServiceSpecificErrorCode(s);
    }

    if (mDescrambler != NULL) {
        return mDescrambler->close();
@@ -95,4 +112,16 @@ Result DescramblerClient::close() {

/////////////// DescramblerClient Helper Methods ///////////////////////

TunerDemuxPid DescramblerClient::getAidlDemuxPid(DemuxPid& pid) {
    TunerDemuxPid aidlPid;
    switch (pid.getDiscriminator()) {
        case DemuxPid::hidl_discriminator::tPid:
            aidlPid.set<TunerDemuxPid::tPid>((int)pid.tPid());
            break;
        case DemuxPid::hidl_discriminator::mmtpPid:
            aidlPid.set<TunerDemuxPid::mmtpPid>((int)pid.mmtpPid());
            break;
    }
    return aidlPid;
}
}  // namespace android
+7 −6
Original line number Diff line number Diff line
@@ -17,14 +17,15 @@
#ifndef _ANDROID_MEDIA_TV_DESCRAMBLER_CLIENT_H_
#define _ANDROID_MEDIA_TV_DESCRAMBLER_CLIENT_H_

//#include <aidl/android/media/tv/tuner/ITunerDescrambler.h>
#include <aidl/android/media/tv/tuner/ITunerDescrambler.h>
#include <android/hardware/tv/tuner/1.0/IDescrambler.h>
#include <android/hardware/tv/tuner/1.1/types.h>

#include "DemuxClient.h"
#include "FilterClient.h"

//using ::aidl::android::media::tv::tuner::ITunerDescrambler;
using ::aidl::android::media::tv::tuner::ITunerDescrambler;
using ::aidl::android::media::tv::tuner::TunerDemuxPid;

using ::android::hardware::tv::tuner::V1_0::IDescrambler;
using ::android::hardware::tv::tuner::V1_0::Result;
@@ -37,8 +38,7 @@ namespace android {
struct DescramblerClient : public RefBase {

public:
    // TODO: pending hidl interface
    DescramblerClient();
    DescramblerClient(shared_ptr<ITunerDescrambler> tunerDescrambler);
    ~DescramblerClient();

    // TODO: remove after migration to Tuner Service is done.
@@ -70,12 +70,13 @@ public:
    Result close();

private:
    TunerDemuxPid getAidlDemuxPid(DemuxPid& pid);

    /**
     * An AIDL Tuner Descrambler Singleton assigned at the first time the Tuner Client
     * opens a descrambler. Default null when descrambler is not opened.
     */
    // TODO: pending on aidl interface
    //shared_ptr<ITunerDescrambler> mTunerDescrambler;
    shared_ptr<ITunerDescrambler> mTunerDescrambler;

    /**
     * A Descrambler HAL interface that is ready before migrating to the TunerDescrambler.
+8 −7
Original line number Diff line number Diff line
@@ -224,17 +224,18 @@ shared_ptr<DemuxCapabilities> TunerClient::getDemuxCaps() {
    return NULL;
}

sp<DescramblerClient> TunerClient::openDescrambler(int /*descramblerHandle*/) {
sp<DescramblerClient> TunerClient::openDescrambler(int descramblerHandle) {
    if (mTunerService != NULL) {
        // TODO: handle error code
        /*shared_ptr<ITunerDescrambler> tunerDescrambler;
        mTunerService->openDescrambler(demuxHandle, &tunerDescrambler);
        return new DescramblerClient(tunerDescrambler);*/
        shared_ptr<ITunerDescrambler> tunerDescrambler;
        Status s = mTunerService->openDescrambler(descramblerHandle, &tunerDescrambler);
        if (ClientHelper::getServiceSpecificErrorCode(s) != Result::SUCCESS) {
            return NULL;
        }
        return new DescramblerClient(tunerDescrambler);
    }

    if (mTuner != NULL) {
        // TODO: pending aidl interface
        sp<DescramblerClient> descramblerClient = new DescramblerClient();
        sp<DescramblerClient> descramblerClient = new DescramblerClient(NULL);
        sp<IDescrambler> hidlDescrambler = openHidlDescrambler();
        if (hidlDescrambler != NULL) {
            descramblerClient->setHidlDescrambler(hidlDescrambler);