From 4a07e80c6de85e2479fed21284c4500663745a54 Mon Sep 17 00:00:00 2001 From: Amy Zhang Date: Thu, 21 Jan 2021 17:10:21 -0800 Subject: [PATCH] Connect existed TunerFilter/TunerDemux AIDL apis to TunerClient This CL also resolved some TODO to handle aidl error messages Test: make Bug: 159067322 Change-Id: I6da66d1fa3989a501ec58bf1e0553f85a13e18db --- media/jni/tuner/ClientHelper.h | 45 +++++++++++++++ media/jni/tuner/DemuxClient.cpp | 49 ++++++++++++---- media/jni/tuner/DemuxClient.h | 12 ++-- media/jni/tuner/FilterClient.cpp | 35 +++++++++--- media/jni/tuner/FilterClient.h | 23 ++++---- media/jni/tuner/FrontendClient.cpp | 24 ++++---- media/jni/tuner/FrontendClient.h | 1 + media/jni/tuner/LnbClient.cpp | 13 ++--- media/jni/tuner/LnbClient.h | 2 +- media/jni/tuner/TunerClient.cpp | 91 ++++++++++++++++-------------- media/jni/tuner/TunerClient.h | 10 +--- 11 files changed, 195 insertions(+), 110 deletions(-) create mode 100644 media/jni/tuner/ClientHelper.h diff --git a/media/jni/tuner/ClientHelper.h b/media/jni/tuner/ClientHelper.h new file mode 100644 index 0000000000000..185b2f651d29f --- /dev/null +++ b/media/jni/tuner/ClientHelper.h @@ -0,0 +1,45 @@ +/* + * Copyright 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _ANDROID_MEDIA_TV_CLIENT_HELPER_H_ +#define _ANDROID_MEDIA_TV_CLIENT_HELPER_H_ + +#include +#include + +using Status = ::ndk::ScopedAStatus; + +using ::android::hardware::tv::tuner::V1_0::Result; + +using namespace std; + +namespace android { + +struct ClientHelper { + +public: + static Result getServiceSpecificErrorCode(Status& s) { + if (s.getExceptionCode() == EX_SERVICE_SPECIFIC) { + return static_cast(s.getServiceSpecificError()); + } else if (s.isOk()) { + return Result::SUCCESS; + } + return Result::UNKNOWN_ERROR; + } +}; +} // namespace android + +#endif // _ANDROID_MEDIA_TV_CLIENT_HELPER_H_ \ No newline at end of file diff --git a/media/jni/tuner/DemuxClient.cpp b/media/jni/tuner/DemuxClient.cpp index 08b7398543789..7265dccb1c57e 100644 --- a/media/jni/tuner/DemuxClient.cpp +++ b/media/jni/tuner/DemuxClient.cpp @@ -23,20 +23,20 @@ using ::aidl::android::media::tv::tuner::TunerFrontendSettings; +using ::android::hardware::tv::tuner::V1_0::DemuxFilterMainType; using ::android::hardware::tv::tuner::V1_0::Result; namespace android { /////////////// DemuxClient /////////////////////// -// TODO: pending aidl interface -DemuxClient::DemuxClient() { - //mTunerDemux = tunerDemux; +DemuxClient::DemuxClient(shared_ptr tunerDemux) { + mTunerDemux = tunerDemux; mId = -1; } DemuxClient::~DemuxClient() { - //mTunerDemux = NULL; + mTunerDemux = NULL; mDemux = NULL; mId = -1; } @@ -47,12 +47,10 @@ void DemuxClient::setHidlDemux(sp demux) { } Result DemuxClient::setFrontendDataSource(sp frontendClient) { - // TODO: pending aidl interface - /*if (mTunerDemux != NULL) { - // TODO: handle error message - mTunerDemux->setFrontendDataSource(frontendClient->getAidlFrontend()); - return (int) Result::SUCCESS; - }*/ + if (mTunerDemux != NULL) { + Status s = mTunerDemux->setFrontendDataSource(frontendClient->getAidlFrontend()); + return ClientHelper::getServiceSpecificErrorCode(s); + } if (mDemux != NULL) { Result res = mDemux->setFrontendDataSource(frontendClient->getId()); @@ -64,13 +62,23 @@ Result DemuxClient::setFrontendDataSource(sp frontendClient) { sp DemuxClient::openFilter(DemuxFilterType type, int bufferSize, sp cb) { - // TODO: pending aidl interface + if (mTunerDemux != NULL) { + shared_ptr tunerFilter; + shared_ptr callback = + ::ndk::SharedRefBase::make(cb); + Status s = mTunerDemux->openFilter((int)type.mainType, getSubType(type), + bufferSize, callback, &tunerFilter); + if (ClientHelper::getServiceSpecificErrorCode(s) != Result::SUCCESS) { + return NULL; + } + return new FilterClient(type, tunerFilter); + } if (mDemux != NULL) { sp callback = new HidlFilterCallback(cb); sp hidlFilter = openHidlFilter(type, bufferSize, callback); if (hidlFilter != NULL) { - sp filterClient = new FilterClient(type); + sp filterClient = new FilterClient(type, NULL); filterClient->setHidlFilter(hidlFilter); return filterClient; } @@ -244,4 +252,21 @@ sp DemuxClient::openHidlDvr(DvrType dvrType, int bufferSize, return hidlDvr; } + +int DemuxClient::getSubType(DemuxFilterType filterType) { + switch (filterType.mainType) { + case DemuxFilterMainType::TS: + return (int)filterType.subType.tsFilterType(); + case DemuxFilterMainType::MMTP: + return (int)filterType.subType.mmtpFilterType(); + case DemuxFilterMainType::IP: + return (int)filterType.subType.ipFilterType(); + case DemuxFilterMainType::TLV: + return (int)filterType.subType.tlvFilterType(); + case DemuxFilterMainType::ALP: + return (int)filterType.subType.alpFilterType(); + default: + return -1; + } +} } // namespace android diff --git a/media/jni/tuner/DemuxClient.h b/media/jni/tuner/DemuxClient.h index 2950dd449a101..ead61301dd5b5 100644 --- a/media/jni/tuner/DemuxClient.h +++ b/media/jni/tuner/DemuxClient.h @@ -17,10 +17,11 @@ #ifndef _ANDROID_MEDIA_TV_DEMUX_CLIENT_H_ #define _ANDROID_MEDIA_TV_DEMUX_CLIENT_H_ -//#include +#include #include #include +#include "ClientHelper.h" #include "DvrClient.h" #include "DvrClientCallback.h" #include "FilterClient.h" @@ -28,7 +29,8 @@ #include "FrontendClient.h" #include "TimeFilterClient.h" -//using ::aidl::android::media::tv::tuner::ITunerDemux; +using Status = ::ndk::ScopedAStatus; +using ::aidl::android::media::tv::tuner::ITunerDemux; using ::android::hardware::tv::tuner::V1_0::DemuxFilterType; using ::android::hardware::tv::tuner::V1_0::DvrType; @@ -42,7 +44,7 @@ namespace android { struct DemuxClient : public RefBase { public: - DemuxClient(); + DemuxClient(shared_ptr tunerDemux); ~DemuxClient(); // TODO: remove after migration to Tuner Service is done. @@ -100,13 +102,13 @@ private: sp openHidlFilter(DemuxFilterType type, int bufferSize, sp cb); sp openHidlTimeFilter(); sp openHidlDvr(DvrType type, int bufferSize, sp cb); + int getSubType(DemuxFilterType filterType); /** * An AIDL Tuner Demux Singleton assigned at the first time the Tuner Client * opens a demux. Default null when demux is not opened. */ - // TODO: pending on aidl interface - //shared_ptr mTunerDemux; + shared_ptr mTunerDemux; /** * A Demux HAL interface that is ready before migrating to the TunerDemux. diff --git a/media/jni/tuner/FilterClient.cpp b/media/jni/tuner/FilterClient.cpp index 0aab5fe7de862..f26560b44d433 100644 --- a/media/jni/tuner/FilterClient.cpp +++ b/media/jni/tuner/FilterClient.cpp @@ -30,16 +30,14 @@ namespace android { /////////////// FilterClient /////////////////////// -// TODO: pending aidl interface -// TODO: add filter callback -FilterClient::FilterClient(DemuxFilterType type) { - //mTunerFilter = tunerFilter; +FilterClient::FilterClient(DemuxFilterType type, shared_ptr tunerFilter) { + mTunerFilter = tunerFilter; mAvSharedHandle = NULL; checkIsMediaFilter(type); } FilterClient::~FilterClient() { - //mTunerFilter = NULL; + mTunerFilter = NULL; mFilter = NULL; mFilter_1_1 = NULL; mAvSharedHandle = NULL; @@ -154,7 +152,12 @@ Result FilterClient::flush() { } Result FilterClient::getId(uint32_t& id) { - // TODO: pending aidl interface + if (mTunerFilter != NULL) { + int32_t id32Bit; + Status s = mTunerFilter->getId(&id32Bit); + id = static_cast(id32Bit); + return ClientHelper::getServiceSpecificErrorCode(s); + } if (mFilter != NULL) { Result res; @@ -169,7 +172,12 @@ Result FilterClient::getId(uint32_t& id) { } Result FilterClient::getId64Bit(uint64_t& id) { - // TODO: pending aidl interface + if (mTunerFilter != NULL) { + int64_t id64Bit; + Status s = mTunerFilter->getId64Bit(&id64Bit); + id = static_cast(id64Bit); + return ClientHelper::getServiceSpecificErrorCode(s); + } if (mFilter_1_1 != NULL) { Result res; @@ -248,6 +256,19 @@ Return HidlFilterCallback::onFilterEvent_1_1(const DemuxFilterEvent& filte return Void(); } +/////////////// TunerFilterCallback /////////////////////// + +TunerFilterCallback::TunerFilterCallback(sp filterClientCallback) + : mFilterClientCallback(filterClientCallback) {} + +Status TunerFilterCallback::onFilterStatus(int status) { + if (mFilterClientCallback != NULL) { + mFilterClientCallback->onFilterStatus(static_cast(status)); + return Status::ok(); + } + return Status::fromServiceSpecificError(static_cast(Result::INVALID_STATE)); +} + /////////////// FilterClient Helper Methods /////////////////////// Result FilterClient::getFilterMq() { diff --git a/media/jni/tuner/FilterClient.h b/media/jni/tuner/FilterClient.h index 976b2f5a107de..57efcd3972b57 100644 --- a/media/jni/tuner/FilterClient.h +++ b/media/jni/tuner/FilterClient.h @@ -17,15 +17,19 @@ #ifndef _ANDROID_MEDIA_TV_FILTER_CLIENT_H_ #define _ANDROID_MEDIA_TV_FILTER_CLIENT_H_ -//#include +#include +#include #include #include #include #include +#include "ClientHelper.h" #include "FilterClientCallback.h" -//using ::aidl::android::media::tv::tuner::ITunerFilter; +using Status = ::ndk::ScopedAStatus; +using ::aidl::android::media::tv::tuner::BnTunerFilterCallback; +using ::aidl::android::media::tv::tuner::ITunerFilter; using ::android::hardware::EventFlag; using ::android::hardware::MessageQueue; @@ -51,18 +55,16 @@ struct SharedHandleInfo { uint64_t size; }; -// TODO: pending aidl interface -/*class TunerFilterCallback : public BnTunerFilterCallback { +class TunerFilterCallback : public BnTunerFilterCallback { public: TunerFilterCallback(sp filterClientCallback); - - Status onFilterEvent(vector events); + // TODO: complete TunerFilterCallback Status onFilterStatus(int status); private: sp mFilterClientCallback; -};*/ +}; struct HidlFilterCallback : public IFilterCallback { @@ -80,8 +82,7 @@ private: struct FilterClient : public RefBase { public: - // TODO: pending aidl interface - FilterClient(DemuxFilterType type); + FilterClient(DemuxFilterType type, shared_ptr tunerFilter); ~FilterClient(); // TODO: remove after migration to Tuner Service is done. @@ -179,8 +180,7 @@ private: * An AIDL Tuner Filter Singleton assigned at the first time when the Tuner Client * opens a filter. Default null when Tuner Service does not exist. */ - // TODO: pending on aidl interface - //shared_ptr mTunerFilter; + shared_ptr mTunerFilter; /** * A 1.0 Filter HAL interface that is ready before migrating to the TunerFilter. @@ -200,7 +200,6 @@ private: EventFlag* mFilterMQEventFlag; sp mCallback; - //shared_ptr mAidlCallback; sp mHidlCallback; native_handle_t* mAvSharedHandle; diff --git a/media/jni/tuner/FrontendClient.cpp b/media/jni/tuner/FrontendClient.cpp index d6d64f6f2c8e8..ef8f57f69f31c 100644 --- a/media/jni/tuner/FrontendClient.cpp +++ b/media/jni/tuner/FrontendClient.cpp @@ -89,9 +89,8 @@ Result FrontendClient::tune(const FrontendSettings& settings, // TODO: parse hidl settings to aidl settings // TODO: aidl frontend settings to include Tuner HAL 1.1 settings TunerFrontendSettings settings; - // TODO: handle error message. - mTunerFrontend->tune(settings); - return Result::SUCCESS; + Status s = mTunerFrontend->tune(settings); + return ClientHelper::getServiceSpecificErrorCode(s); } Result result; @@ -110,9 +109,8 @@ Result FrontendClient::tune(const FrontendSettings& settings, Result FrontendClient::stopTune() { if (mTunerFrontend != NULL) { - // TODO: handle error message. - mTunerFrontend->stopTune(); - return Result::SUCCESS; + Status s = mTunerFrontend->stopTune(); + return ClientHelper::getServiceSpecificErrorCode(s); } if (mFrontend != NULL) { @@ -129,9 +127,8 @@ Result FrontendClient::scan(const FrontendSettings& settings, FrontendScanType t // TODO: parse hidl settings to aidl settings // TODO: aidl frontend settings to include Tuner HAL 1.1 settings TunerFrontendSettings settings; - // TODO: handle error message. - mTunerFrontend->scan(settings, (int)type); - return Result::SUCCESS; + Status s = mTunerFrontend->scan(settings, (int)type); + return ClientHelper::getServiceSpecificErrorCode(s); } Result result; @@ -150,9 +147,8 @@ Result FrontendClient::scan(const FrontendSettings& settings, FrontendScanType t Result FrontendClient::stopScan() { if (mTunerFrontend != NULL) { - // TODO: handle error message. - mTunerFrontend->stopScan(); - return Result::SUCCESS; + Status s = mTunerFrontend->stopScan(); + return ClientHelper::getServiceSpecificErrorCode(s); } if (mFrontend != NULL) { @@ -284,8 +280,8 @@ Result FrontendClient::unlinkCiCamToFrontend(int ciCamId) { Result FrontendClient::close() { if (mTunerFrontend != NULL) { // TODO: handle error message. - mTunerFrontend->close(); - return Result::SUCCESS; + Status s = mTunerFrontend->close(); + return ClientHelper::getServiceSpecificErrorCode(s); } if (mFrontend != NULL) { diff --git a/media/jni/tuner/FrontendClient.h b/media/jni/tuner/FrontendClient.h index 4f95c22bd3c7d..03ebb8704ef70 100644 --- a/media/jni/tuner/FrontendClient.h +++ b/media/jni/tuner/FrontendClient.h @@ -23,6 +23,7 @@ #include #include +#include "ClientHelper.h" #include "FrontendClientCallback.h" #include "LnbClient.h" diff --git a/media/jni/tuner/LnbClient.cpp b/media/jni/tuner/LnbClient.cpp index df3fd609d72fc..8d08c2586b485 100644 --- a/media/jni/tuner/LnbClient.cpp +++ b/media/jni/tuner/LnbClient.cpp @@ -19,7 +19,6 @@ #include #include -#include "TunerClient.h" #include "LnbClient.h" using ::android::hardware::tv::tuner::V1_0::Result; @@ -48,7 +47,7 @@ Result LnbClient::setCallback(sp cb) { if (mTunerLnb != NULL) { mAidlCallback = ::ndk::SharedRefBase::make(cb); Status s = mTunerLnb->setCallback(mAidlCallback); - return TunerClient::getServiceSpecificErrorCode(s); + return ClientHelper::getServiceSpecificErrorCode(s); } if (mLnb != NULL) { @@ -62,7 +61,7 @@ Result LnbClient::setCallback(sp cb) { Result LnbClient::setVoltage(LnbVoltage voltage) { if (mTunerLnb != NULL) { Status s = mTunerLnb->setVoltage((int)voltage); - return TunerClient::getServiceSpecificErrorCode(s); + return ClientHelper::getServiceSpecificErrorCode(s); } if (mLnb != NULL) { @@ -75,7 +74,7 @@ Result LnbClient::setVoltage(LnbVoltage voltage) { Result LnbClient::setTone(LnbTone tone) { if (mTunerLnb != NULL) { Status s = mTunerLnb->setTone((int)tone); - return TunerClient::getServiceSpecificErrorCode(s); + return ClientHelper::getServiceSpecificErrorCode(s); } if (mLnb != NULL) { @@ -88,7 +87,7 @@ Result LnbClient::setTone(LnbTone tone) { Result LnbClient::setSatellitePosition(LnbPosition position) { if (mTunerLnb != NULL) { Status s = mTunerLnb->setSatellitePosition((int)position); - return TunerClient::getServiceSpecificErrorCode(s); + return ClientHelper::getServiceSpecificErrorCode(s); } if (mLnb != NULL) { @@ -101,7 +100,7 @@ Result LnbClient::setSatellitePosition(LnbPosition position) { Result LnbClient::sendDiseqcMessage(vector diseqcMessage) { if (mTunerLnb != NULL) { Status s = mTunerLnb->sendDiseqcMessage(diseqcMessage); - return TunerClient::getServiceSpecificErrorCode(s); + return ClientHelper::getServiceSpecificErrorCode(s); } if (mLnb != NULL) { @@ -114,7 +113,7 @@ Result LnbClient::sendDiseqcMessage(vector diseqcMessage) { Result LnbClient::close() { if (mTunerLnb != NULL) { Status s = mTunerLnb->close(); - return TunerClient::getServiceSpecificErrorCode(s); + return ClientHelper::getServiceSpecificErrorCode(s); } if (mLnb != NULL) { diff --git a/media/jni/tuner/LnbClient.h b/media/jni/tuner/LnbClient.h index 24651202d73e2..e7869e890e8ff 100644 --- a/media/jni/tuner/LnbClient.h +++ b/media/jni/tuner/LnbClient.h @@ -23,6 +23,7 @@ #include #include +#include "ClientHelper.h" #include "LnbClientCallback.h" using Status = ::ndk::ScopedAStatus; @@ -45,7 +46,6 @@ using namespace std; namespace android { -// TODO: pending aidl interface class TunerLnbCallback : public BnTunerLnbCallback { public: diff --git a/media/jni/tuner/TunerClient.cpp b/media/jni/tuner/TunerClient.cpp index 73a2cf29d50e2..4498f54b71cc5 100644 --- a/media/jni/tuner/TunerClient.cpp +++ b/media/jni/tuner/TunerClient.cpp @@ -66,7 +66,7 @@ vector TunerClient::getFrontendIds() { if (mTunerService != NULL) { vector v; Status s = mTunerService->getFrontendIds(&v); - if (getServiceSpecificErrorCode(s) != Result::SUCCESS || v.size() == 0) { + if (ClientHelper::getServiceSpecificErrorCode(s) != Result::SUCCESS || v.size() == 0) { ids.clear(); return ids; } @@ -96,18 +96,22 @@ vector TunerClient::getFrontendIds() { sp TunerClient::openFrontend(int frontendHandle) { if (mTunerService != NULL) { - // TODO: handle error code shared_ptr tunerFrontend; - mTunerService->openFrontend(frontendHandle, &tunerFrontend); - if (tunerFrontend == NULL) { + Status s = mTunerService->openFrontend(frontendHandle, &tunerFrontend); + if (ClientHelper::getServiceSpecificErrorCode(s) != Result::SUCCESS + || tunerFrontend == NULL) { return NULL; } int id; - // TODO: handle error code - tunerFrontend->getFrontendId(&id); + s = tunerFrontend->getFrontendId(&id); + if (ClientHelper::getServiceSpecificErrorCode(s) != Result::SUCCESS) { + return NULL; + } TunerFrontendInfo aidlFrontendInfo; - // TODO: handle error code - mTunerService->getFrontendInfo(id, &aidlFrontendInfo); + s = mTunerService->getFrontendInfo(id, &aidlFrontendInfo); + if (ClientHelper::getServiceSpecificErrorCode(s) != Result::SUCCESS) { + return NULL; + } return new FrontendClient(tunerFrontend, frontendHandle, aidlFrontendInfo.type); } @@ -133,7 +137,10 @@ shared_ptr TunerClient::getFrontendInfo(int id) { if (mTunerService != NULL) { TunerFrontendInfo aidlFrontendInfo; // TODO: handle error code - mTunerService->getFrontendInfo(id, &aidlFrontendInfo); + Status s = mTunerService->getFrontendInfo(id, &aidlFrontendInfo); + if (ClientHelper::getServiceSpecificErrorCode(s) != Result::SUCCESS) { + return NULL; + } return make_shared(FrontendInfoAidlToHidl(aidlFrontendInfo)); } @@ -168,17 +175,18 @@ shared_ptr TunerClient::getFrontendDtmbCapabilities(in return NULL; } -sp TunerClient::openDemux(int /*demuxHandle*/) { +sp TunerClient::openDemux(int demuxHandle) { if (mTunerService != NULL) { - // TODO: handle error code - /*shared_ptr tunerDemux; - mTunerService->openDemux(demuxHandle, &tunerDemux); - return new DemuxClient(tunerDemux);*/ + shared_ptr tunerDemux; + Status s = mTunerService->openDemux(demuxHandle, &tunerDemux); + if (ClientHelper::getServiceSpecificErrorCode(s) != Result::SUCCESS) { + return NULL; + } + return new DemuxClient(tunerDemux); } if (mTuner != NULL) { - // TODO: pending aidl interface - sp demuxClient = new DemuxClient(); + sp demuxClient = new DemuxClient(NULL); int demuxId; sp hidlDemux = openHidlDemux(demuxId); if (hidlDemux != NULL) { @@ -231,15 +239,16 @@ sp TunerClient::openDescrambler(int /*descramblerHandle*/) { sp TunerClient::openLnb(int lnbHandle) { if (mTunerService != NULL) { - // TODO: handle error code shared_ptr tunerLnb; - mTunerService->openLnb(lnbHandle, &tunerLnb); + Status s = mTunerService->openLnb(lnbHandle, &tunerLnb); + if (ClientHelper::getServiceSpecificErrorCode(s) != Result::SUCCESS) { + return NULL; + } return new LnbClient(tunerLnb); } if (mTuner != NULL) { int id = getResourceIdFromHandle(lnbHandle, LNB); - // TODO: pending aidl interface sp lnbClient = new LnbClient(NULL); sp hidlLnb = openHidlLnbById(id); if (hidlLnb != NULL) { @@ -254,14 +263,15 @@ sp TunerClient::openLnb(int lnbHandle) { sp TunerClient::openLnbByName(string lnbName) { if (mTunerService != NULL) { - // TODO: handle error code shared_ptr tunerLnb; - mTunerService->openLnbByName(lnbName, &tunerLnb); + Status s = mTunerService->openLnbByName(lnbName, &tunerLnb); + if (ClientHelper::getServiceSpecificErrorCode(s) != Result::SUCCESS) { + return NULL; + } return new LnbClient(tunerLnb); } if (mTuner != NULL) { - // TODO: pending aidl interface sp lnbClient = new LnbClient(NULL); LnbId id; sp hidlLnb = openHidlLnbByName(lnbName, id); @@ -411,29 +421,8 @@ sp TunerClient::openHidlLnbByName(string name, LnbId& lnbId) { return lnb; } -sp TunerClient::openHidlDescrambler() { - sp descrambler; - Result res; - - mTuner->openDescrambler([&](Result r, const sp& descramblerSp) { - res = r; - descrambler = descramblerSp; - }); - - if (res != Result::SUCCESS || descrambler == NULL) { - return NULL; - } - - return descrambler; -} - vector TunerClient::getLnbHandles() { vector lnbHandles; - - if (mTunerService != NULL) { - // TODO: pending hidl interface - } - if (mTuner != NULL) { Result res; vector lnbIds; @@ -453,6 +442,22 @@ vector TunerClient::getLnbHandles() { return lnbHandles; } +sp TunerClient::openHidlDescrambler() { + sp descrambler; + Result res; + + mTuner->openDescrambler([&](Result r, const sp& descramblerSp) { + res = r; + descrambler = descramblerSp; + }); + + if (res != Result::SUCCESS || descrambler == NULL) { + return NULL; + } + + return descrambler; +} + FrontendInfo TunerClient::FrontendInfoAidlToHidl(TunerFrontendInfo aidlFrontendInfo) { FrontendInfo hidlFrontendInfo { .type = static_cast(aidlFrontendInfo.type), diff --git a/media/jni/tuner/TunerClient.h b/media/jni/tuner/TunerClient.h index 733ee6bff9b72..04035e49727f4 100644 --- a/media/jni/tuner/TunerClient.h +++ b/media/jni/tuner/TunerClient.h @@ -24,6 +24,7 @@ #include #include +#include "ClientHelper.h" #include "FrontendClient.h" #include "DemuxClient.h" #include "DescramblerClient.h" @@ -135,15 +136,6 @@ public: */ int getHalTunerVersion() { return mTunerVersion; } - static Result getServiceSpecificErrorCode(Status& s) { - if (s.getExceptionCode() == EX_SERVICE_SPECIFIC) { - return static_cast(s.getServiceSpecificError()); - } else if (s.isOk()) { - return Result::SUCCESS; - } - return Result::UNKNOWN_ERROR; - } - private: sp getHidlTuner(); sp openHidlFrontendById(int id);