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

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

Merge "Change Tuner Frontend Callback to align with the aidl callback interface"

parents ae8ef795 d61491e8
Loading
Loading
Loading
Loading
+2 −28
Original line number Original line Diff line number Diff line
filegroup {
filegroup {
    name: "tv_tuner_aidl",
    name: "tv_tuner_aidl",
    srcs: [
    srcs: [
        "aidl/android/media/tv/tuner/ITunerFrontend.aidl",
        "aidl/android/media/tv/tuner/*.aidl",
        "aidl/android/media/tv/tuner/ITunerFrontendCallback.aidl",
        "aidl/android/media/tv/tuner/ITunerService.aidl",
        "aidl/android/media/tv/tuner/TunerAtsc3PlpInfo.aidl",
        "aidl/android/media/tv/tuner/TunerFrontendAnalogCapabilities.aidl",
        "aidl/android/media/tv/tuner/TunerFrontendAtscCapabilities.aidl",
        "aidl/android/media/tv/tuner/TunerFrontendAtsc3Capabilities.aidl",
        "aidl/android/media/tv/tuner/TunerFrontendCableCapabilities.aidl",
        "aidl/android/media/tv/tuner/TunerFrontendCapabilities.aidl",
        "aidl/android/media/tv/tuner/TunerFrontendDvbsCapabilities.aidl",
        "aidl/android/media/tv/tuner/TunerFrontendDvbtCapabilities.aidl",
        "aidl/android/media/tv/tuner/TunerFrontendIsdbsCapabilities.aidl",
        "aidl/android/media/tv/tuner/TunerFrontendIsdbs3Capabilities.aidl",
        "aidl/android/media/tv/tuner/TunerFrontendIsdbtCapabilities.aidl",
        "aidl/android/media/tv/tuner/TunerFrontendAnalogSettings.aidl",
        "aidl/android/media/tv/tuner/TunerFrontendAtsc3PlpSettings.aidl",
        "aidl/android/media/tv/tuner/TunerFrontendAtsc3Settings.aidl",
        "aidl/android/media/tv/tuner/TunerFrontendAtscSettings.aidl",
        "aidl/android/media/tv/tuner/TunerFrontendCableSettings.aidl",
        "aidl/android/media/tv/tuner/TunerFrontendDvbsCodeRate.aidl",
        "aidl/android/media/tv/tuner/TunerFrontendDvbsSettings.aidl",
        "aidl/android/media/tv/tuner/TunerFrontendDvbtSettings.aidl",
        "aidl/android/media/tv/tuner/TunerFrontendIsdbs3Settings.aidl",
        "aidl/android/media/tv/tuner/TunerFrontendIsdbsSettings.aidl",
        "aidl/android/media/tv/tuner/TunerFrontendIsdbtSettings.aidl",
        "aidl/android/media/tv/tuner/TunerFrontendSettings.aidl",
        "aidl/android/media/tv/tuner/TunerFrontendStatus.aidl",
        "aidl/android/media/tv/tuner/TunerServiceFrontendInfo.aidl",
    ],
    ],
    path: "aidl",
    path: "aidl",
}
}
@@ -67,6 +40,7 @@ cc_library {


    shared_libs: [
    shared_libs: [
        "android.hardware.tv.tuner@1.0",
        "android.hardware.tv.tuner@1.0",
        "android.hardware.tv.tuner@1.1",
        "libbase",
        "libbase",
        "libbinder_ndk",
        "libbinder_ndk",
        "libcutils",
        "libcutils",
+75 −29
Original line number Original line Diff line number Diff line
@@ -19,8 +19,8 @@
#include "TunerFrontend.h"
#include "TunerFrontend.h"
#include "TunerService.h"
#include "TunerService.h"


using ::aidl::android::media::tv::tuner::TunerAtsc3PlpInfo;
using ::aidl::android::media::tv::tuner::TunerFrontendAtsc3PlpSettings;
using ::aidl::android::media::tv::tuner::TunerFrontendAtsc3PlpSettings;
using ::aidl::android::media::tv::tuner::TunerFrontendScanAtsc3PlpInfo;
using ::android::hardware::tv::tuner::V1_0::FrontendAnalogSifStandard;
using ::android::hardware::tv::tuner::V1_0::FrontendAnalogSifStandard;
using ::android::hardware::tv::tuner::V1_0::FrontendAnalogType;
using ::android::hardware::tv::tuner::V1_0::FrontendAnalogType;
using ::android::hardware::tv::tuner::V1_0::FrontendAtscModulation;
using ::android::hardware::tv::tuner::V1_0::FrontendAtscModulation;
@@ -69,12 +69,13 @@ using ::android::hardware::tv::tuner::V1_0::FrontendScanAtsc3PlpInfo;
using ::android::hardware::tv::tuner::V1_0::FrontendScanType;
using ::android::hardware::tv::tuner::V1_0::FrontendScanType;
using ::android::hardware::tv::tuner::V1_0::FrontendSettings;;
using ::android::hardware::tv::tuner::V1_0::FrontendSettings;;
using ::android::hardware::tv::tuner::V1_0::Result;
using ::android::hardware::tv::tuner::V1_0::Result;
using ::android::hardware::tv::tuner::V1_1::FrontendModulation;


namespace android {
namespace android {


TunerFrontend::TunerFrontend(sp<ITuner> tuner, int frontendHandle) {
TunerFrontend::TunerFrontend(sp<ITuner> tuner, int id) {
    mTuner = tuner;
    mTuner = tuner;
    mId = TunerService::getResourceIdFromHandle(frontendHandle);
    mId = id;


    if (mTuner != NULL) {
    if (mTuner != NULL) {
        Result status;
        Result status;
@@ -312,6 +313,10 @@ Status TunerFrontend::getStatus(const std::vector<int32_t>& /*statusTypes*/,
    return Status::ok();
    return Status::ok();
}
}


Status TunerFrontend::getFrontendId(int* _aidl_return) {
    *_aidl_return = mId;
    return Status::ok();
}
/////////////// FrontendCallback ///////////////////////
/////////////// FrontendCallback ///////////////////////


Return<void> TunerFrontend::FrontendCallback::onEvent(FrontendEventType frontendEventType) {
Return<void> TunerFrontend::FrontendCallback::onEvent(FrontendEventType frontendEventType) {
@@ -323,59 +328,56 @@ Return<void> TunerFrontend::FrontendCallback::onEvent(FrontendEventType frontend
Return<void> TunerFrontend::FrontendCallback::onScanMessage(
Return<void> TunerFrontend::FrontendCallback::onScanMessage(
        FrontendScanMessageType type, const FrontendScanMessage& message) {
        FrontendScanMessageType type, const FrontendScanMessage& message) {
    ALOGD("FrontendCallback::onScanMessage, type=%d", type);
    ALOGD("FrontendCallback::onScanMessage, type=%d", type);
    TunerFrontendScanMessage scanMessage;
    switch(type) {
    switch(type) {
        case FrontendScanMessageType::LOCKED: {
        case FrontendScanMessageType::LOCKED: {
            if (message.isLocked()) {
            scanMessage.set<TunerFrontendScanMessage::isLocked>(message.isLocked());
                mTunerFrontendCallback->onLocked();
            }
            break;
            break;
        }
        }
        case FrontendScanMessageType::END: {
        case FrontendScanMessageType::END: {
            if (message.isEnd()) {
            scanMessage.set<TunerFrontendScanMessage::isEnd>(message.isEnd());
                mTunerFrontendCallback->onScanStopped();
            }
            break;
            break;
        }
        }
        case FrontendScanMessageType::PROGRESS_PERCENT: {
        case FrontendScanMessageType::PROGRESS_PERCENT: {
            mTunerFrontendCallback->onProgress((int)message.progressPercent());
            scanMessage.set<TunerFrontendScanMessage::progressPercent>(message.progressPercent());
            break;
            break;
        }
        }
        case FrontendScanMessageType::FREQUENCY: {
        case FrontendScanMessageType::FREQUENCY: {
            auto f = message.frequencies();
            auto f = message.frequencies();
            std::vector<int32_t> frequencies(std::begin(f), std::end(f));
            std::vector<int> frequencies(std::begin(f), std::end(f));
            mTunerFrontendCallback->onFrequenciesReport(frequencies);
            scanMessage.set<TunerFrontendScanMessage::frequencies>(frequencies);
            break;
            break;
        }
        }
        case FrontendScanMessageType::SYMBOL_RATE: {
        case FrontendScanMessageType::SYMBOL_RATE: {
            auto s = message.symbolRates();
            auto s = message.symbolRates();
            std::vector<int32_t> symbolRates(std::begin(s), std::end(s));
            std::vector<int> symbolRates(std::begin(s), std::end(s));
            mTunerFrontendCallback->onSymbolRates(symbolRates);
            scanMessage.set<TunerFrontendScanMessage::symbolRates>(symbolRates);
            break;
            break;
        }
        }
        case FrontendScanMessageType::HIERARCHY: {
        case FrontendScanMessageType::HIERARCHY: {
            mTunerFrontendCallback->onHierarchy((int)message.hierarchy());
            scanMessage.set<TunerFrontendScanMessage::hierarchy>((int)message.hierarchy());
            break;
            break;
        }
        }
        case FrontendScanMessageType::ANALOG_TYPE: {
        case FrontendScanMessageType::ANALOG_TYPE: {
            mTunerFrontendCallback->onSignalType((int)message.analogType());
            scanMessage.set<TunerFrontendScanMessage::analogType>((int)message.analogType());
            break;
            break;
        }
        }
        case FrontendScanMessageType::PLP_IDS: {
        case FrontendScanMessageType::PLP_IDS: {
            auto p = message.plpIds();
            auto p = message.plpIds();
            std::vector<int32_t> plpIds(std::begin(p), std::end(p));
            std::vector<uint8_t> plpIds(std::begin(p), std::end(p));
            mTunerFrontendCallback->onPlpIds(plpIds);
            scanMessage.set<TunerFrontendScanMessage::plpIds>(plpIds);
            break;
            break;
        }
        }
        case FrontendScanMessageType::GROUP_IDS: {
        case FrontendScanMessageType::GROUP_IDS: {
            auto g = message.groupIds();
            auto g = message.groupIds();
            std::vector<int32_t> groupIds(std::begin(g), std::end(g));
            std::vector<uint8_t> groupIds(std::begin(g), std::end(g));
            mTunerFrontendCallback->onGroupIds(groupIds);
            scanMessage.set<TunerFrontendScanMessage::groupIds>(groupIds);
            break;
            break;
        }
        }
        case FrontendScanMessageType::INPUT_STREAM_IDS: {
        case FrontendScanMessageType::INPUT_STREAM_IDS: {
            auto i = message.inputStreamIds();
            auto i = message.inputStreamIds();
            std::vector<int32_t> streamIds(std::begin(i), std::end(i));
            std::vector<char16_t> streamIds(std::begin(i), std::end(i));
            mTunerFrontendCallback->onInputStreamIds(streamIds);
            scanMessage.set<TunerFrontendScanMessage::inputStreamIds>(streamIds);
            break;
            break;
        }
        }
        case FrontendScanMessageType::STANDARD: {
        case FrontendScanMessageType::STANDARD: {
@@ -383,37 +385,81 @@ Return<void> TunerFrontend::FrontendCallback::onScanMessage(
            int standard;
            int standard;
            if (std.getDiscriminator() == FrontendScanMessage::Standard::hidl_discriminator::sStd) {
            if (std.getDiscriminator() == FrontendScanMessage::Standard::hidl_discriminator::sStd) {
                standard = (int) std.sStd();
                standard = (int) std.sStd();
                mTunerFrontendCallback->onDvbsStandard(standard);
            } else if (std.getDiscriminator() ==
            } else if (std.getDiscriminator() ==
                    FrontendScanMessage::Standard::hidl_discriminator::tStd) {
                    FrontendScanMessage::Standard::hidl_discriminator::tStd) {
                standard = (int) std.tStd();
                standard = (int) std.tStd();
                mTunerFrontendCallback->onDvbsStandard(standard);
            } else if (std.getDiscriminator() ==
            } else if (std.getDiscriminator() ==
                    FrontendScanMessage::Standard::hidl_discriminator::sifStd) {
                    FrontendScanMessage::Standard::hidl_discriminator::sifStd) {
                standard = (int) std.sifStd();
                standard = (int) std.sifStd();
                mTunerFrontendCallback->onAnalogSifStandard(standard);
            }
            }
            scanMessage.set<TunerFrontendScanMessage::std>(standard);
            break;
            break;
        }
        }
        case FrontendScanMessageType::ATSC3_PLP_INFO: {
        case FrontendScanMessageType::ATSC3_PLP_INFO: {
            std::vector<FrontendScanAtsc3PlpInfo> plpInfos = message.atsc3PlpInfos();
            std::vector<FrontendScanAtsc3PlpInfo> plpInfos = message.atsc3PlpInfos();
            std::vector<TunerAtsc3PlpInfo> tunerPlpInfos;
            std::vector<TunerFrontendScanAtsc3PlpInfo> tunerPlpInfos;
            for (int i = 0; i < plpInfos.size(); i++) {
            for (int i = 0; i < plpInfos.size(); i++) {
                auto info = plpInfos[i];
                auto info = plpInfos[i];
                int plpId = (int) info.plpId;
                int plpId = (int) info.plpId;
                bool lls = (bool) info.bLlsFlag;
                bool lls = (bool) info.bLlsFlag;
                TunerAtsc3PlpInfo plpInfo{
                TunerFrontendScanAtsc3PlpInfo plpInfo{
                    .plpId = plpId,
                    .plpId = plpId,
                    .llsFlag = lls,
                    .llsFlag = lls,
                };
                };
                tunerPlpInfos.push_back(plpInfo);
                tunerPlpInfos.push_back(plpInfo);
            }
            }
            mTunerFrontendCallback->onAtsc3PlpInfos(tunerPlpInfos);
            scanMessage.set<TunerFrontendScanMessage::atsc3PlpInfos>(tunerPlpInfos);
            break;
        }
        default:
            break;
    }
    mTunerFrontendCallback->onScanMessage((int)type, scanMessage);
    return Void();
}

Return<void> TunerFrontend::FrontendCallback::onScanMessageExt1_1(
        FrontendScanMessageTypeExt1_1 type, const FrontendScanMessageExt1_1& message) {
    ALOGD("onScanMessageExt1_1::onScanMessage, type=%d", type);
    TunerFrontendScanMessage scanMessage;
    switch(type) {
        case FrontendScanMessageTypeExt1_1::MODULATION: {
            FrontendModulation m = message.modulation();
            int modulation;
            if (m.getDiscriminator() == FrontendModulation::hidl_discriminator::dvbc) {
                modulation = (int) m.dvbc();
            } else if (m.getDiscriminator() == FrontendModulation::hidl_discriminator::dvbt) {
                modulation = (int) m.dvbt();
            } else if (m.getDiscriminator() == FrontendModulation::hidl_discriminator::dvbs) {
                modulation = (int) m.dvbs();
            } else if (m.getDiscriminator() == FrontendModulation::hidl_discriminator::isdbs) {
                modulation = (int) m.isdbs();
            } else if (m.getDiscriminator() == FrontendModulation::hidl_discriminator::isdbs3) {
                modulation = (int) m.isdbs3();
            } else if (m.getDiscriminator() == FrontendModulation::hidl_discriminator::isdbt) {
                modulation = (int) m.isdbt();
            } else if (m.getDiscriminator() == FrontendModulation::hidl_discriminator::atsc) {
                modulation = (int) m.atsc();
            } else if (m.getDiscriminator() == FrontendModulation::hidl_discriminator::atsc3) {
                modulation = (int) m.atsc3();
            } else if (m.getDiscriminator() == FrontendModulation::hidl_discriminator::dtmb) {
                modulation = (int) m.dtmb();
            }
            scanMessage.set<TunerFrontendScanMessage::modulation>(modulation);
            break;
        }
        case FrontendScanMessageTypeExt1_1::DVBC_ANNEX: {
            scanMessage.set<TunerFrontendScanMessage::annex>((int)message.annex());
            break;
        }
        case FrontendScanMessageTypeExt1_1::HIGH_PRIORITY: {
            scanMessage.set<TunerFrontendScanMessage::isHighPriority>(message.isHighPriority());
            break;
            break;
        }
        }
        default:
        default:
            break;
            break;
    }
    }
    mTunerFrontendCallback->onScanMessage((int)type, scanMessage);
    return Void();
    return Void();
}
}


+9 −3
Original line number Original line Diff line number Diff line
@@ -19,6 +19,7 @@


#include <aidl/android/media/tv/tuner/BnTunerFrontend.h>
#include <aidl/android/media/tv/tuner/BnTunerFrontend.h>
#include <android/hardware/tv/tuner/1.0/ITuner.h>
#include <android/hardware/tv/tuner/1.0/ITuner.h>
#include <android/hardware/tv/tuner/1.1/IFrontendCallback.h>
#include <media/stagefright/foundation/ADebug.h>
#include <media/stagefright/foundation/ADebug.h>
#include <utils/Log.h>
#include <utils/Log.h>


@@ -27,6 +28,7 @@ using ::aidl::android::media::tv::tuner::BnTunerFrontend;
using ::aidl::android::media::tv::tuner::ITunerFrontendCallback;
using ::aidl::android::media::tv::tuner::ITunerFrontendCallback;
using ::aidl::android::media::tv::tuner::TunerFrontendAtsc3Settings;
using ::aidl::android::media::tv::tuner::TunerFrontendAtsc3Settings;
using ::aidl::android::media::tv::tuner::TunerFrontendDvbsCodeRate;
using ::aidl::android::media::tv::tuner::TunerFrontendDvbsCodeRate;
using ::aidl::android::media::tv::tuner::TunerFrontendScanMessage;
using ::aidl::android::media::tv::tuner::TunerFrontendSettings;
using ::aidl::android::media::tv::tuner::TunerFrontendSettings;
using ::aidl::android::media::tv::tuner::TunerFrontendStatus;
using ::aidl::android::media::tv::tuner::TunerFrontendStatus;
using ::android::hardware::Return;
using ::android::hardware::Return;
@@ -39,16 +41,17 @@ using ::android::hardware::tv::tuner::V1_0::FrontendId;
using ::android::hardware::tv::tuner::V1_0::FrontendScanMessage;
using ::android::hardware::tv::tuner::V1_0::FrontendScanMessage;
using ::android::hardware::tv::tuner::V1_0::FrontendScanMessageType;
using ::android::hardware::tv::tuner::V1_0::FrontendScanMessageType;
using ::android::hardware::tv::tuner::V1_0::IFrontend;
using ::android::hardware::tv::tuner::V1_0::IFrontend;
using ::android::hardware::tv::tuner::V1_0::IFrontendCallback;
using ::android::hardware::tv::tuner::V1_0::ITuner;
using ::android::hardware::tv::tuner::V1_0::ITuner;

using ::android::hardware::tv::tuner::V1_1::IFrontendCallback;
using ::android::hardware::tv::tuner::V1_1::FrontendScanMessageExt1_1;
using ::android::hardware::tv::tuner::V1_1::FrontendScanMessageTypeExt1_1;


namespace android {
namespace android {


class TunerFrontend : public BnTunerFrontend {
class TunerFrontend : public BnTunerFrontend {


public:
public:
    TunerFrontend(sp<ITuner> tuner, int frontendHandle);
    TunerFrontend(sp<ITuner> tuner, int id);
    virtual ~TunerFrontend();
    virtual ~TunerFrontend();
    Status setCallback(
    Status setCallback(
            const std::shared_ptr<ITunerFrontendCallback>& tunerFrontendCallback) override;
            const std::shared_ptr<ITunerFrontendCallback>& tunerFrontendCallback) override;
@@ -61,6 +64,7 @@ public:
    Status close() override;
    Status close() override;
    Status getStatus(const std::vector<int32_t>& statusTypes,
    Status getStatus(const std::vector<int32_t>& statusTypes,
            std::vector<TunerFrontendStatus>* _aidl_return) override;
            std::vector<TunerFrontendStatus>* _aidl_return) override;
    Status getFrontendId(int* _aidl_return) override;


    struct FrontendCallback : public IFrontendCallback {
    struct FrontendCallback : public IFrontendCallback {
        FrontendCallback(const std::shared_ptr<ITunerFrontendCallback> tunerFrontendCallback)
        FrontendCallback(const std::shared_ptr<ITunerFrontendCallback> tunerFrontendCallback)
@@ -69,6 +73,8 @@ public:
        virtual Return<void> onEvent(FrontendEventType frontendEventType);
        virtual Return<void> onEvent(FrontendEventType frontendEventType);
        virtual Return<void> onScanMessage(
        virtual Return<void> onScanMessage(
                FrontendScanMessageType type, const FrontendScanMessage& message);
                FrontendScanMessageType type, const FrontendScanMessage& message);
        virtual Return<void> onScanMessageExt1_1(
                FrontendScanMessageTypeExt1_1 type, const FrontendScanMessageExt1_1& message);


        std::shared_ptr<ITunerFrontendCallback> mTunerFrontendCallback;
        std::shared_ptr<ITunerFrontendCallback> mTunerFrontendCallback;
    };
    };
+2 −1
Original line number Original line Diff line number Diff line
@@ -252,7 +252,8 @@ Status TunerService::openFrontend(
                static_cast<int32_t>(Result::UNAVAILABLE));
                static_cast<int32_t>(Result::UNAVAILABLE));
    }
    }


    *_aidl_return = ::ndk::SharedRefBase::make<TunerFrontend>(mTuner, frontendHandle);
    int id = getResourceIdFromHandle(frontendHandle);
    *_aidl_return = ::ndk::SharedRefBase::make<TunerFrontend>(mTuner, id);
    return Status::ok();
    return Status::ok();
}
}


+1 −0
Original line number Original line Diff line number Diff line
@@ -80,6 +80,7 @@ public:
    TunerService();
    TunerService();
    virtual ~TunerService();
    virtual ~TunerService();


    // TODO: create a map between resource id and handles.
    static int getResourceIdFromHandle(int resourceHandle) {
    static int getResourceIdFromHandle(int resourceHandle) {
        return (resourceHandle & 0x00ff0000) >> 16;
        return (resourceHandle & 0x00ff0000) >> 16;
    }
    }
Loading