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

Commit c45168ad authored by Hongguang Chen's avatar Hongguang Chen Committed by Android (Google) Code Review
Browse files

Merge "Make the default tuner HAL to be a dynamic AIDL"

parents cd3049dc 4a8ac292
Loading
Loading
Loading
Loading
+17 −3
Original line number Diff line number Diff line
@@ -7,10 +7,9 @@ package {
    default_applicable_licenses: ["hardware_interfaces_license"],
}

cc_binary {
    name: "android.hardware.tv.tuner-service.example",
cc_defaults {
    name: "tuner_hal_example_defaults",
    relative_install_path: "hw",
    init_rc: ["tuner-default.rc"],
    vintf_fragments: ["tuner-default.xml"],
    vendor: true,
    compile_multilib: "first",
@@ -44,3 +43,18 @@ cc_binary {
        "media_plugin_headers",
    ],
}

cc_binary {
    name: "android.hardware.tv.tuner-service.example",
    defaults: ["tuner_hal_example_defaults"],
    init_rc: ["tuner-default.rc"],
}

cc_binary {
    name: "android.hardware.tv.tuner-service.example-lazy",
    defaults: ["tuner_hal_example_defaults"],
    init_rc: ["tuner-default-lazy.rc"],
    cflags: [
        "-DLAZY_HAL",
    ],
}
+5 −1
Original line number Diff line number Diff line
@@ -37,6 +37,7 @@ Demux::Demux(int32_t demuxId, std::shared_ptr<Tuner> tuner) {
}

Demux::~Demux() {
    ALOGV("%s", __FUNCTION__);
    close();
}

@@ -180,7 +181,10 @@ Demux::~Demux() {
    mRecordFilterIds.clear();
    mFilters.clear();
    mLastUsedFilterId = -1;
    if (mTuner != nullptr) {
        mTuner->removeDemux(mDemuxId);
        mTuner = nullptr;
    }

    return ::ndk::ScopedAStatus::ok();
}
+13 −3
Original line number Diff line number Diff line
@@ -28,10 +28,10 @@ namespace hardware {
namespace tv {
namespace tuner {

Frontend::Frontend(FrontendType type, int32_t id, std::shared_ptr<Tuner> tuner) {
Frontend::Frontend(FrontendType type, int32_t id) {
    mType = type;
    mId = id;
    mTuner = tuner;
    mTuner = nullptr;
    // Init callback to nullptr
    mCallback = nullptr;

@@ -170,7 +170,12 @@ Frontend::Frontend(FrontendType type, int32_t id, std::shared_ptr<Tuner> tuner)
    }
}

Frontend::~Frontend() {}
Frontend::~Frontend() {
    ALOGV("%s", __FUNCTION__);
    mCallback = nullptr;
    mIsLocked = false;
    mTuner = nullptr;
}

::ndk::ScopedAStatus Frontend::close() {
    ALOGV("%s", __FUNCTION__);
@@ -178,6 +183,7 @@ Frontend::~Frontend() {}
    mCallback = nullptr;
    mIsLocked = false;
    mTuner->removeFrontend(mId);
    mTuner = nullptr;

    return ::ndk::ScopedAStatus::ok();
}
@@ -233,6 +239,10 @@ Frontend::~Frontend() {}
    return ::ndk::ScopedAStatus::ok();
}

void Frontend::setTunerService(std::shared_ptr<Tuner> tuner) {
    mTuner = tuner;
}

void Frontend::scanThreadLoop() {
    if (mIsLocked) {
        FrontendScanMessage msg;
+2 −1
Original line number Diff line number Diff line
@@ -34,7 +34,7 @@ class Tuner;

class Frontend : public BnFrontend {
  public:
    Frontend(FrontendType type, int32_t id, std::shared_ptr<Tuner> tuner);
    Frontend(FrontendType type, int32_t id);

    ::ndk::ScopedAStatus setCallback(
            const std::shared_ptr<IFrontendCallback>& in_callback) override;
@@ -62,6 +62,7 @@ class Frontend : public BnFrontend {
    string getSourceFile();
    bool isLocked();
    void getFrontendInfo(FrontendInfo* _aidl_return);
    void setTunerService(std::shared_ptr<Tuner> tuner);

  private:
    virtual ~Frontend();
+11 −10
Original line number Diff line number Diff line
@@ -38,16 +38,16 @@ void Tuner::init() {
    // Static Frontends array to maintain local frontends information
    // Array index matches their FrontendId in the default impl
    mFrontendSize = 10;
    mFrontends[0] = ndk::SharedRefBase::make<Frontend>(FrontendType::ISDBS, 0, this->ref<Tuner>());
    mFrontends[1] = ndk::SharedRefBase::make<Frontend>(FrontendType::ATSC3, 1, this->ref<Tuner>());
    mFrontends[2] = ndk::SharedRefBase::make<Frontend>(FrontendType::DVBC, 2, this->ref<Tuner>());
    mFrontends[3] = ndk::SharedRefBase::make<Frontend>(FrontendType::DVBS, 3, this->ref<Tuner>());
    mFrontends[4] = ndk::SharedRefBase::make<Frontend>(FrontendType::DVBT, 4, this->ref<Tuner>());
    mFrontends[5] = ndk::SharedRefBase::make<Frontend>(FrontendType::ISDBT, 5, this->ref<Tuner>());
    mFrontends[6] = ndk::SharedRefBase::make<Frontend>(FrontendType::ANALOG, 6, this->ref<Tuner>());
    mFrontends[7] = ndk::SharedRefBase::make<Frontend>(FrontendType::ATSC, 7, this->ref<Tuner>());
    mFrontends[8] = ndk::SharedRefBase::make<Frontend>(FrontendType::ISDBS3, 8, this->ref<Tuner>());
    mFrontends[9] = ndk::SharedRefBase::make<Frontend>(FrontendType::DTMB, 9, this->ref<Tuner>());
    mFrontends[0] = ndk::SharedRefBase::make<Frontend>(FrontendType::ISDBS, 0);
    mFrontends[1] = ndk::SharedRefBase::make<Frontend>(FrontendType::ATSC3, 1);
    mFrontends[2] = ndk::SharedRefBase::make<Frontend>(FrontendType::DVBC, 2);
    mFrontends[3] = ndk::SharedRefBase::make<Frontend>(FrontendType::DVBS, 3);
    mFrontends[4] = ndk::SharedRefBase::make<Frontend>(FrontendType::DVBT, 4);
    mFrontends[5] = ndk::SharedRefBase::make<Frontend>(FrontendType::ISDBT, 5);
    mFrontends[6] = ndk::SharedRefBase::make<Frontend>(FrontendType::ANALOG, 6);
    mFrontends[7] = ndk::SharedRefBase::make<Frontend>(FrontendType::ATSC, 7);
    mFrontends[8] = ndk::SharedRefBase::make<Frontend>(FrontendType::ISDBS3, 8);
    mFrontends[9] = ndk::SharedRefBase::make<Frontend>(FrontendType::DTMB, 9);

    mMaxUsableFrontends[FrontendType::ISDBS] = 1;
    mMaxUsableFrontends[FrontendType::ATSC3] = 1;
@@ -89,6 +89,7 @@ Tuner::~Tuner() {}
                static_cast<int32_t>(Result::INVALID_ARGUMENT));
    }

    mFrontends[in_frontendId]->setTunerService(this->ref<Tuner>());
    *_aidl_return = mFrontends[in_frontendId];
    return ::ndk::ScopedAStatus::ok();
}
Loading