Loading services/tuner/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -111,6 +111,7 @@ cc_binary { shared_libs: [ "android.hardware.tv.tuner@1.0", "android.hardware.tv.tuner@1.1", "libbase", "libbinder", "libfmq", Loading services/tuner/TunerFrontend.cpp +61 −4 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ #define LOG_TAG "TunerFrontend" #include "TunerFrontend.h" #include "TunerLnb.h" using ::aidl::android::media::tv::tuner::TunerFrontendAtsc3PlpSettings; using ::aidl::android::media::tv::tuner::TunerFrontendScanAtsc3PlpInfo; Loading Loading @@ -206,14 +207,70 @@ Status TunerFrontend::stopScan() { return Status::fromServiceSpecificError(static_cast<int32_t>(status)); } Status TunerFrontend::setLnb(int /*lnbHandle*/) { Status TunerFrontend::setLnb(const shared_ptr<ITunerLnb>& lnb) { if (mFrontend == NULL) { ALOGD("IFrontend is not initialized"); return Status::fromServiceSpecificError(static_cast<int32_t>(Result::UNAVAILABLE)); } Result status = mFrontend->setLnb(static_cast<TunerLnb*>(lnb.get())->getId()); if (status == Result::SUCCESS) { return Status::ok(); } Status TunerFrontend::setLna(bool /*bEnable*/) { return Status::fromServiceSpecificError(static_cast<int32_t>(status)); } Status TunerFrontend::setLna(bool bEnable) { if (mFrontend == NULL) { ALOGD("IFrontend is not initialized"); return Status::fromServiceSpecificError(static_cast<int32_t>(Result::UNAVAILABLE)); } Result status = mFrontend->setLna(bEnable); if (status == Result::SUCCESS) { return Status::ok(); } return Status::fromServiceSpecificError(static_cast<int32_t>(status)); } Status TunerFrontend::linkCiCamToFrontend(int ciCamId, int32_t* _aidl_return) { if (mFrontend_1_1 == NULL) { ALOGD("IFrontend_1_1 is not initialized"); return Status::fromServiceSpecificError(static_cast<int32_t>(Result::UNAVAILABLE)); } int ltsId; Result status; mFrontend_1_1->linkCiCam(static_cast<uint32_t>(ciCamId), [&](Result r, uint32_t id) { status = r; ltsId = id; }); if (status == Result::SUCCESS) { *_aidl_return = ltsId; return Status::ok(); } return Status::fromServiceSpecificError(static_cast<int32_t>(status)); } Status TunerFrontend::unlinkCiCamToFrontend(int ciCamId) { if (mFrontend_1_1 == NULL) { ALOGD("IFrontend_1_1 is not initialized"); return Status::fromServiceSpecificError(static_cast<int32_t>(Result::UNAVAILABLE)); } Result status = mFrontend_1_1->unlinkCiCam(ciCamId); if (status == Result::SUCCESS) { return Status::ok(); } return Status::fromServiceSpecificError(static_cast<int32_t>(status)); } Status TunerFrontend::close() { if (mFrontend == NULL) { ALOGD("IFrontend is not initialized"); Loading services/tuner/TunerFrontend.h +4 −1 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ using Status = ::ndk::ScopedAStatus; using ::aidl::android::media::tv::tuner::BnTunerFrontend; using ::aidl::android::media::tv::tuner::ITunerFrontendCallback; using ::aidl::android::media::tv::tuner::ITunerLnb; using ::aidl::android::media::tv::tuner::TunerFrontendAtsc3Settings; using ::aidl::android::media::tv::tuner::TunerFrontendDvbsCodeRate; using ::aidl::android::media::tv::tuner::TunerFrontendScanMessage; Loading Loading @@ -65,8 +66,10 @@ public: Status stopTune() override; Status scan(const TunerFrontendSettings& settings, int frontendScanType) override; Status stopScan() override; Status setLnb(int lnbHandle) override; Status setLnb(const shared_ptr<ITunerLnb>& lnb) override; Status setLna(bool bEnable) override; Status linkCiCamToFrontend(int ciCamId, int32_t* _aidl_return) override; Status unlinkCiCamToFrontend(int ciCamId) override; Status close() override; Status getStatus(const vector<int32_t>& statusTypes, vector<TunerFrontendStatus>* _aidl_return) override; Loading services/tuner/TunerLnb.h +2 −0 Original line number Diff line number Diff line Loading @@ -49,6 +49,8 @@ public: Status sendDiseqcMessage(const vector<uint8_t>& diseqcMessage) override; Status close() override; int getId() { return mId; } struct LnbCallback : public ILnbCallback { LnbCallback(const shared_ptr<ITunerLnbCallback> tunerLnbCallback) : mTunerLnbCallback(tunerLnbCallback) {}; Loading services/tuner/TunerService.cpp +63 −74 Original line number Diff line number Diff line Loading @@ -17,7 +17,6 @@ #define LOG_TAG "TunerService" #include <android/binder_manager.h> #include <fmq/ConvertMQDescriptors.h> #include <utils/Log.h> #include "TunerService.h" #include "TunerFrontend.h" Loading Loading @@ -46,6 +45,7 @@ using ::android::hardware::tv::tuner::V1_0::IFrontend; using ::android::hardware::tv::tuner::V1_0::ILnb; using ::android::hardware::tv::tuner::V1_0::LnbId; using ::android::hardware::tv::tuner::V1_0::Result; using ::android::hardware::tv::tuner::V1_1::FrontendDtmbCapabilities; namespace android { Loading @@ -58,8 +58,8 @@ void TunerService::instantiate() { AServiceManager_addService(service->asBinder().get(), getServiceName()); } bool TunerService::getITuner() { ALOGD("getITuner"); bool TunerService::hasITuner() { ALOGD("hasITuner"); if (mTuner != nullptr) { return true; } Loading @@ -71,10 +71,26 @@ bool TunerService::getITuner() { return true; } bool TunerService::hasITuner_1_1() { ALOGD("hasITuner_1_1"); if (mTuner_1_1 != nullptr) { return true; } if (!hasITuner()) { return false; } mTuner_1_1 = ::android::hardware::tv::tuner::V1_1::ITuner::castFrom(mTuner); if (mTuner_1_1 == nullptr) { ALOGE("Failed to get ITuner_1_1 service"); return false; } return true; } Status TunerService::openDemux( int /* demuxHandle */, std::shared_ptr<ITunerDemux>* _aidl_return) { ALOGD("openDemux"); if (!getITuner()) { if (!hasITuner()) { return Status::fromServiceSpecificError(static_cast<int32_t>(Result::NOT_INITIALIZED)); } Result res; Loading @@ -99,7 +115,7 @@ Status TunerService::openDemux( Status TunerService::getDemuxCaps(TunerDemuxCapabilities* _aidl_return) { ALOGD("getDemuxCaps"); if (!getITuner()) { if (!hasITuner()) { return Status::fromServiceSpecificError(static_cast<int32_t>(Result::NOT_INITIALIZED)); } Result res; Loading @@ -117,48 +133,8 @@ Status TunerService::getDemuxCaps(TunerDemuxCapabilities* _aidl_return) { return Status::fromServiceSpecificError(static_cast<int32_t>(res)); } Result TunerService::configFilter() { ALOGD("configFilter"); if (mFilter == NULL) { ALOGD("Failed to configure filter: filter not found"); return Result::NOT_INITIALIZED; } DemuxFilterSettings filterSettings; DemuxTsFilterSettings tsFilterSettings { .tpid = 256, }; DemuxFilterAvSettings filterAvSettings { .isPassthrough = false, }; tsFilterSettings.filterSettings.av(filterAvSettings); filterSettings.ts(tsFilterSettings); Result res = mFilter->configure(filterSettings); if (res != Result::SUCCESS) { ALOGD("config filter failed, res = %d", res); return res; } Result getQueueDescResult = Result::UNKNOWN_ERROR; mFilter->getQueueDesc( [&](Result r, const MQDescriptorSync<uint8_t>& desc) { mFilterMQDesc = desc; getQueueDescResult = r; ALOGD("getFilterQueueDesc"); }); if (getQueueDescResult == Result::SUCCESS) { unsafeHidlToAidlMQDescriptor<uint8_t, int8_t, SynchronizedReadWrite>( mFilterMQDesc, &mAidlMQDesc); mAidlMq = new (nothrow) AidlMessageQueue(mAidlMQDesc); EventFlag::createEventFlag(mAidlMq->getEventFlagWord(), &mEventFlag); } else { ALOGD("get MQDesc failed, res = %d", getQueueDescResult); } return getQueueDescResult; } Status TunerService::getFrontendIds(vector<int32_t>* ids) { if (!getITuner()) { if (!hasITuner()) { return Status::fromServiceSpecificError( static_cast<int32_t>(Result::NOT_INITIALIZED)); } Loading @@ -173,17 +149,15 @@ Status TunerService::getFrontendIds(vector<int32_t>* ids) { return Status::ok(); } Status TunerService::getFrontendInfo( int32_t frontendHandle, TunerFrontendInfo* _aidl_return) { if (mTuner == nullptr) { Status TunerService::getFrontendInfo(int32_t id, TunerFrontendInfo* _aidl_return) { if (!hasITuner()) { ALOGE("ITuner service is not init."); return ::ndk::ScopedAStatus::fromServiceSpecificError( static_cast<int32_t>(Result::UNAVAILABLE)); } FrontendInfo info; int feId = getResourceIdFromHandle(frontendHandle, FRONTEND); Result res = getHidlFrontendInfo(feId, info); Result res = getHidlFrontendInfo(id, info); if (res != Result::SUCCESS) { return Status::fromServiceSpecificError(static_cast<int32_t>(res)); } Loading @@ -193,9 +167,41 @@ Status TunerService::getFrontendInfo( return Status::ok(); } Status TunerService::getFrontendDtmbCapabilities( int32_t id, TunerFrontendDtmbCapabilities* _aidl_return) { if (!hasITuner_1_1()) { ALOGE("ITuner_1_1 service is not init."); return ::ndk::ScopedAStatus::fromServiceSpecificError( static_cast<int32_t>(Result::UNAVAILABLE)); } Result res; FrontendDtmbCapabilities dtmbCaps; mTuner_1_1->getFrontendDtmbCapabilities(id, [&](Result r, const FrontendDtmbCapabilities& caps) { dtmbCaps = caps; res = r; }); if (res != Result::SUCCESS) { return Status::fromServiceSpecificError(static_cast<int32_t>(res)); } TunerFrontendDtmbCapabilities aidlDtmbCaps{ .transmissionModeCap = (int)dtmbCaps.transmissionModeCap, .bandwidthCap = (int)dtmbCaps.bandwidthCap, .modulationCap = (int)dtmbCaps.modulationCap, .codeRateCap = (int)dtmbCaps.codeRateCap, .guardIntervalCap = (int)dtmbCaps.guardIntervalCap, .interleaveModeCap = (int)dtmbCaps.interleaveModeCap, }; *_aidl_return = aidlDtmbCaps; return Status::ok(); } Status TunerService::openFrontend( int32_t frontendHandle, shared_ptr<ITunerFrontend>* _aidl_return) { if (mTuner == nullptr) { if (!hasITuner()) { ALOGE("ITuner service is not init."); return Status::fromServiceSpecificError(static_cast<int32_t>(Result::UNAVAILABLE)); } Loading @@ -214,25 +220,8 @@ Status TunerService::openFrontend( return Status::ok(); } Status TunerService::getFmqSyncReadWrite( MQDescriptor<int8_t, SynchronizedReadWrite>* mqDesc, bool* _aidl_return) { ALOGD("getFmqSyncReadWrite"); // TODO: put the following methods AIDL, and should be called from clients. configFilter(); mFilter->start(); if (mqDesc == nullptr) { ALOGD("getFmqSyncReadWrite null MQDescriptor."); *_aidl_return = false; } else { ALOGD("getFmqSyncReadWrite true"); *_aidl_return = true; *mqDesc = move(mAidlMQDesc); } return ndk::ScopedAStatus::ok(); } Status TunerService::openLnb(int lnbHandle, shared_ptr<ITunerLnb>* _aidl_return) { if (!getITuner()) { if (!hasITuner()) { ALOGD("get ITuner failed"); return Status::fromServiceSpecificError(static_cast<int32_t>(Result::UNAVAILABLE)); } Loading @@ -253,7 +242,7 @@ Status TunerService::openLnb(int lnbHandle, shared_ptr<ITunerLnb>* _aidl_return) } Status TunerService::openLnbByName(const string& lnbName, shared_ptr<ITunerLnb>* _aidl_return) { if (!getITuner()) { if (!hasITuner()) { ALOGE("get ITuner failed"); return Status::fromServiceSpecificError(static_cast<int32_t>(Result::UNAVAILABLE)); } Loading @@ -276,7 +265,7 @@ Status TunerService::openLnbByName(const string& lnbName, shared_ptr<ITunerLnb>* Status TunerService::openDescrambler(int32_t /*descramblerHandle*/, std::shared_ptr<ITunerDescrambler>* _aidl_return) { if (!getITuner()) { if (!hasITuner()) { ALOGD("get ITuner failed"); return Status::fromServiceSpecificError(static_cast<int32_t>(Result::UNAVAILABLE)); } Loading @@ -297,7 +286,7 @@ Status TunerService::openDescrambler(int32_t /*descramblerHandle*/, } Status TunerService::updateTunerResources() { if (!getITuner()) { if (!hasITuner()) { return Status::fromServiceSpecificError(static_cast<int32_t>(Result::UNAVAILABLE)); } Loading Loading @@ -453,7 +442,7 @@ TunerFrontendInfo TunerService::convertToAidlFrontendInfo(FrontendInfo halInfo) case FrontendType::DVBC: { TunerFrontendCableCapabilities cableCaps{ .modulationCap = (int)halInfo.frontendCaps.dvbcCaps().modulationCap, .codeRateCap = (int)halInfo.frontendCaps.dvbcCaps().fecCap, .codeRateCap = (int64_t)halInfo.frontendCaps.dvbcCaps().fecCap, .annexCap = (int)halInfo.frontendCaps.dvbcCaps().annexCap, }; caps.set<TunerFrontendCapabilities::cableCaps>(cableCaps); Loading Loading
services/tuner/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -111,6 +111,7 @@ cc_binary { shared_libs: [ "android.hardware.tv.tuner@1.0", "android.hardware.tv.tuner@1.1", "libbase", "libbinder", "libfmq", Loading
services/tuner/TunerFrontend.cpp +61 −4 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ #define LOG_TAG "TunerFrontend" #include "TunerFrontend.h" #include "TunerLnb.h" using ::aidl::android::media::tv::tuner::TunerFrontendAtsc3PlpSettings; using ::aidl::android::media::tv::tuner::TunerFrontendScanAtsc3PlpInfo; Loading Loading @@ -206,14 +207,70 @@ Status TunerFrontend::stopScan() { return Status::fromServiceSpecificError(static_cast<int32_t>(status)); } Status TunerFrontend::setLnb(int /*lnbHandle*/) { Status TunerFrontend::setLnb(const shared_ptr<ITunerLnb>& lnb) { if (mFrontend == NULL) { ALOGD("IFrontend is not initialized"); return Status::fromServiceSpecificError(static_cast<int32_t>(Result::UNAVAILABLE)); } Result status = mFrontend->setLnb(static_cast<TunerLnb*>(lnb.get())->getId()); if (status == Result::SUCCESS) { return Status::ok(); } Status TunerFrontend::setLna(bool /*bEnable*/) { return Status::fromServiceSpecificError(static_cast<int32_t>(status)); } Status TunerFrontend::setLna(bool bEnable) { if (mFrontend == NULL) { ALOGD("IFrontend is not initialized"); return Status::fromServiceSpecificError(static_cast<int32_t>(Result::UNAVAILABLE)); } Result status = mFrontend->setLna(bEnable); if (status == Result::SUCCESS) { return Status::ok(); } return Status::fromServiceSpecificError(static_cast<int32_t>(status)); } Status TunerFrontend::linkCiCamToFrontend(int ciCamId, int32_t* _aidl_return) { if (mFrontend_1_1 == NULL) { ALOGD("IFrontend_1_1 is not initialized"); return Status::fromServiceSpecificError(static_cast<int32_t>(Result::UNAVAILABLE)); } int ltsId; Result status; mFrontend_1_1->linkCiCam(static_cast<uint32_t>(ciCamId), [&](Result r, uint32_t id) { status = r; ltsId = id; }); if (status == Result::SUCCESS) { *_aidl_return = ltsId; return Status::ok(); } return Status::fromServiceSpecificError(static_cast<int32_t>(status)); } Status TunerFrontend::unlinkCiCamToFrontend(int ciCamId) { if (mFrontend_1_1 == NULL) { ALOGD("IFrontend_1_1 is not initialized"); return Status::fromServiceSpecificError(static_cast<int32_t>(Result::UNAVAILABLE)); } Result status = mFrontend_1_1->unlinkCiCam(ciCamId); if (status == Result::SUCCESS) { return Status::ok(); } return Status::fromServiceSpecificError(static_cast<int32_t>(status)); } Status TunerFrontend::close() { if (mFrontend == NULL) { ALOGD("IFrontend is not initialized"); Loading
services/tuner/TunerFrontend.h +4 −1 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ using Status = ::ndk::ScopedAStatus; using ::aidl::android::media::tv::tuner::BnTunerFrontend; using ::aidl::android::media::tv::tuner::ITunerFrontendCallback; using ::aidl::android::media::tv::tuner::ITunerLnb; using ::aidl::android::media::tv::tuner::TunerFrontendAtsc3Settings; using ::aidl::android::media::tv::tuner::TunerFrontendDvbsCodeRate; using ::aidl::android::media::tv::tuner::TunerFrontendScanMessage; Loading Loading @@ -65,8 +66,10 @@ public: Status stopTune() override; Status scan(const TunerFrontendSettings& settings, int frontendScanType) override; Status stopScan() override; Status setLnb(int lnbHandle) override; Status setLnb(const shared_ptr<ITunerLnb>& lnb) override; Status setLna(bool bEnable) override; Status linkCiCamToFrontend(int ciCamId, int32_t* _aidl_return) override; Status unlinkCiCamToFrontend(int ciCamId) override; Status close() override; Status getStatus(const vector<int32_t>& statusTypes, vector<TunerFrontendStatus>* _aidl_return) override; Loading
services/tuner/TunerLnb.h +2 −0 Original line number Diff line number Diff line Loading @@ -49,6 +49,8 @@ public: Status sendDiseqcMessage(const vector<uint8_t>& diseqcMessage) override; Status close() override; int getId() { return mId; } struct LnbCallback : public ILnbCallback { LnbCallback(const shared_ptr<ITunerLnbCallback> tunerLnbCallback) : mTunerLnbCallback(tunerLnbCallback) {}; Loading
services/tuner/TunerService.cpp +63 −74 Original line number Diff line number Diff line Loading @@ -17,7 +17,6 @@ #define LOG_TAG "TunerService" #include <android/binder_manager.h> #include <fmq/ConvertMQDescriptors.h> #include <utils/Log.h> #include "TunerService.h" #include "TunerFrontend.h" Loading Loading @@ -46,6 +45,7 @@ using ::android::hardware::tv::tuner::V1_0::IFrontend; using ::android::hardware::tv::tuner::V1_0::ILnb; using ::android::hardware::tv::tuner::V1_0::LnbId; using ::android::hardware::tv::tuner::V1_0::Result; using ::android::hardware::tv::tuner::V1_1::FrontendDtmbCapabilities; namespace android { Loading @@ -58,8 +58,8 @@ void TunerService::instantiate() { AServiceManager_addService(service->asBinder().get(), getServiceName()); } bool TunerService::getITuner() { ALOGD("getITuner"); bool TunerService::hasITuner() { ALOGD("hasITuner"); if (mTuner != nullptr) { return true; } Loading @@ -71,10 +71,26 @@ bool TunerService::getITuner() { return true; } bool TunerService::hasITuner_1_1() { ALOGD("hasITuner_1_1"); if (mTuner_1_1 != nullptr) { return true; } if (!hasITuner()) { return false; } mTuner_1_1 = ::android::hardware::tv::tuner::V1_1::ITuner::castFrom(mTuner); if (mTuner_1_1 == nullptr) { ALOGE("Failed to get ITuner_1_1 service"); return false; } return true; } Status TunerService::openDemux( int /* demuxHandle */, std::shared_ptr<ITunerDemux>* _aidl_return) { ALOGD("openDemux"); if (!getITuner()) { if (!hasITuner()) { return Status::fromServiceSpecificError(static_cast<int32_t>(Result::NOT_INITIALIZED)); } Result res; Loading @@ -99,7 +115,7 @@ Status TunerService::openDemux( Status TunerService::getDemuxCaps(TunerDemuxCapabilities* _aidl_return) { ALOGD("getDemuxCaps"); if (!getITuner()) { if (!hasITuner()) { return Status::fromServiceSpecificError(static_cast<int32_t>(Result::NOT_INITIALIZED)); } Result res; Loading @@ -117,48 +133,8 @@ Status TunerService::getDemuxCaps(TunerDemuxCapabilities* _aidl_return) { return Status::fromServiceSpecificError(static_cast<int32_t>(res)); } Result TunerService::configFilter() { ALOGD("configFilter"); if (mFilter == NULL) { ALOGD("Failed to configure filter: filter not found"); return Result::NOT_INITIALIZED; } DemuxFilterSettings filterSettings; DemuxTsFilterSettings tsFilterSettings { .tpid = 256, }; DemuxFilterAvSettings filterAvSettings { .isPassthrough = false, }; tsFilterSettings.filterSettings.av(filterAvSettings); filterSettings.ts(tsFilterSettings); Result res = mFilter->configure(filterSettings); if (res != Result::SUCCESS) { ALOGD("config filter failed, res = %d", res); return res; } Result getQueueDescResult = Result::UNKNOWN_ERROR; mFilter->getQueueDesc( [&](Result r, const MQDescriptorSync<uint8_t>& desc) { mFilterMQDesc = desc; getQueueDescResult = r; ALOGD("getFilterQueueDesc"); }); if (getQueueDescResult == Result::SUCCESS) { unsafeHidlToAidlMQDescriptor<uint8_t, int8_t, SynchronizedReadWrite>( mFilterMQDesc, &mAidlMQDesc); mAidlMq = new (nothrow) AidlMessageQueue(mAidlMQDesc); EventFlag::createEventFlag(mAidlMq->getEventFlagWord(), &mEventFlag); } else { ALOGD("get MQDesc failed, res = %d", getQueueDescResult); } return getQueueDescResult; } Status TunerService::getFrontendIds(vector<int32_t>* ids) { if (!getITuner()) { if (!hasITuner()) { return Status::fromServiceSpecificError( static_cast<int32_t>(Result::NOT_INITIALIZED)); } Loading @@ -173,17 +149,15 @@ Status TunerService::getFrontendIds(vector<int32_t>* ids) { return Status::ok(); } Status TunerService::getFrontendInfo( int32_t frontendHandle, TunerFrontendInfo* _aidl_return) { if (mTuner == nullptr) { Status TunerService::getFrontendInfo(int32_t id, TunerFrontendInfo* _aidl_return) { if (!hasITuner()) { ALOGE("ITuner service is not init."); return ::ndk::ScopedAStatus::fromServiceSpecificError( static_cast<int32_t>(Result::UNAVAILABLE)); } FrontendInfo info; int feId = getResourceIdFromHandle(frontendHandle, FRONTEND); Result res = getHidlFrontendInfo(feId, info); Result res = getHidlFrontendInfo(id, info); if (res != Result::SUCCESS) { return Status::fromServiceSpecificError(static_cast<int32_t>(res)); } Loading @@ -193,9 +167,41 @@ Status TunerService::getFrontendInfo( return Status::ok(); } Status TunerService::getFrontendDtmbCapabilities( int32_t id, TunerFrontendDtmbCapabilities* _aidl_return) { if (!hasITuner_1_1()) { ALOGE("ITuner_1_1 service is not init."); return ::ndk::ScopedAStatus::fromServiceSpecificError( static_cast<int32_t>(Result::UNAVAILABLE)); } Result res; FrontendDtmbCapabilities dtmbCaps; mTuner_1_1->getFrontendDtmbCapabilities(id, [&](Result r, const FrontendDtmbCapabilities& caps) { dtmbCaps = caps; res = r; }); if (res != Result::SUCCESS) { return Status::fromServiceSpecificError(static_cast<int32_t>(res)); } TunerFrontendDtmbCapabilities aidlDtmbCaps{ .transmissionModeCap = (int)dtmbCaps.transmissionModeCap, .bandwidthCap = (int)dtmbCaps.bandwidthCap, .modulationCap = (int)dtmbCaps.modulationCap, .codeRateCap = (int)dtmbCaps.codeRateCap, .guardIntervalCap = (int)dtmbCaps.guardIntervalCap, .interleaveModeCap = (int)dtmbCaps.interleaveModeCap, }; *_aidl_return = aidlDtmbCaps; return Status::ok(); } Status TunerService::openFrontend( int32_t frontendHandle, shared_ptr<ITunerFrontend>* _aidl_return) { if (mTuner == nullptr) { if (!hasITuner()) { ALOGE("ITuner service is not init."); return Status::fromServiceSpecificError(static_cast<int32_t>(Result::UNAVAILABLE)); } Loading @@ -214,25 +220,8 @@ Status TunerService::openFrontend( return Status::ok(); } Status TunerService::getFmqSyncReadWrite( MQDescriptor<int8_t, SynchronizedReadWrite>* mqDesc, bool* _aidl_return) { ALOGD("getFmqSyncReadWrite"); // TODO: put the following methods AIDL, and should be called from clients. configFilter(); mFilter->start(); if (mqDesc == nullptr) { ALOGD("getFmqSyncReadWrite null MQDescriptor."); *_aidl_return = false; } else { ALOGD("getFmqSyncReadWrite true"); *_aidl_return = true; *mqDesc = move(mAidlMQDesc); } return ndk::ScopedAStatus::ok(); } Status TunerService::openLnb(int lnbHandle, shared_ptr<ITunerLnb>* _aidl_return) { if (!getITuner()) { if (!hasITuner()) { ALOGD("get ITuner failed"); return Status::fromServiceSpecificError(static_cast<int32_t>(Result::UNAVAILABLE)); } Loading @@ -253,7 +242,7 @@ Status TunerService::openLnb(int lnbHandle, shared_ptr<ITunerLnb>* _aidl_return) } Status TunerService::openLnbByName(const string& lnbName, shared_ptr<ITunerLnb>* _aidl_return) { if (!getITuner()) { if (!hasITuner()) { ALOGE("get ITuner failed"); return Status::fromServiceSpecificError(static_cast<int32_t>(Result::UNAVAILABLE)); } Loading @@ -276,7 +265,7 @@ Status TunerService::openLnbByName(const string& lnbName, shared_ptr<ITunerLnb>* Status TunerService::openDescrambler(int32_t /*descramblerHandle*/, std::shared_ptr<ITunerDescrambler>* _aidl_return) { if (!getITuner()) { if (!hasITuner()) { ALOGD("get ITuner failed"); return Status::fromServiceSpecificError(static_cast<int32_t>(Result::UNAVAILABLE)); } Loading @@ -297,7 +286,7 @@ Status TunerService::openDescrambler(int32_t /*descramblerHandle*/, } Status TunerService::updateTunerResources() { if (!getITuner()) { if (!hasITuner()) { return Status::fromServiceSpecificError(static_cast<int32_t>(Result::UNAVAILABLE)); } Loading Loading @@ -453,7 +442,7 @@ TunerFrontendInfo TunerService::convertToAidlFrontendInfo(FrontendInfo halInfo) case FrontendType::DVBC: { TunerFrontendCableCapabilities cableCaps{ .modulationCap = (int)halInfo.frontendCaps.dvbcCaps().modulationCap, .codeRateCap = (int)halInfo.frontendCaps.dvbcCaps().fecCap, .codeRateCap = (int64_t)halInfo.frontendCaps.dvbcCaps().fecCap, .annexCap = (int)halInfo.frontendCaps.dvbcCaps().annexCap, }; caps.set<TunerFrontendCapabilities::cableCaps>(cableCaps); Loading