Loading media/jni/tuner/FrontendClient.cpp +13 −14 Original line number Diff line number Diff line Loading @@ -91,8 +91,8 @@ Result FrontendClient::setCallback(sp<FrontendClientCallback> frontendClientCall if (mTunerFrontend != NULL) { mAidlCallback = ::ndk::SharedRefBase::make<TunerFrontendCallback>(frontendClientCallback); mAidlCallback->setFrontendType(mType); mTunerFrontend->setCallback(mAidlCallback); return Result::SUCCESS; Status s = mTunerFrontend->setCallback(mAidlCallback); return ClientHelper::getServiceSpecificErrorCode(s); } mHidlCallback = new HidlFrontendCallback(frontendClientCallback); Loading Loading @@ -243,9 +243,8 @@ vector<FrontendStatusExt1_1> FrontendClient::getStatusExtended_1_1( Result FrontendClient::setLnb(sp<LnbClient> lnbClient) { if (mTunerFrontend != NULL) { // TODO: handle error message. /*mTunerFrontend->setLnb(lnbClient->getAidlLnb()); return Result::SUCCESS;*/ Status s = mTunerFrontend->setLnb(lnbClient->getAidlLnb()); return ClientHelper::getServiceSpecificErrorCode(s); } if (mFrontend != NULL) { Loading @@ -258,9 +257,8 @@ Result FrontendClient::setLnb(sp<LnbClient> lnbClient) { Result FrontendClient::setLna(bool bEnable) { if (mTunerFrontend != NULL) { // TODO: handle error message. /*mTunerFrontend->setLna(bEnable); return Result::SUCCESS;*/ Status s = mTunerFrontend->setLna(bEnable); return ClientHelper::getServiceSpecificErrorCode(s); } if (mFrontend != NULL) { Loading @@ -275,9 +273,11 @@ int FrontendClient::linkCiCamToFrontend(int ciCamId) { int ltsId = (int)Constant::INVALID_LTS_ID; if (mTunerFrontend != NULL) { // TODO: handle error message. /*mTunerFrontend->linkCiCamToFrontend(ciCamId, ltsId); return ltsId;*/ Status s = mTunerFrontend->linkCiCamToFrontend(ciCamId, <sId); if (ClientHelper::getServiceSpecificErrorCode(s) == Result::SUCCESS) { return ltsId; } return (int)Constant::INVALID_LTS_ID; } if (mFrontend_1_1 != NULL) { Loading @@ -297,9 +297,8 @@ int FrontendClient::linkCiCamToFrontend(int ciCamId) { Result FrontendClient::unlinkCiCamToFrontend(int ciCamId) { if (mTunerFrontend != NULL) { // TODO: handle error message. /*mTunerFrontend->unlinkCiCamToFrontend(ciCamId); return Result::SUCCESS;*/ Status s = mTunerFrontend->unlinkCiCamToFrontend(ciCamId); return ClientHelper::getServiceSpecificErrorCode(s); } if (mFrontend_1_1 != NULL) { Loading media/jni/tuner/LnbClient.h +1 −1 Original line number Diff line number Diff line Loading @@ -108,7 +108,7 @@ public: */ Result close(); //shared_ptr<ITunerLnb> getAidlLnb() { return mTunerLnb; } shared_ptr<ITunerLnb> getAidlLnb() { return mTunerLnb; } void setId(LnbId id) { mId = id; } LnbId getId() { return mId; } Loading media/jni/tuner/TunerClient.cpp +116 −5 Original line number Diff line number Diff line Loading @@ -22,7 +22,10 @@ #include "TunerClient.h" using ::aidl::android::media::tv::tuner::TunerFrontendCapabilities; using ::aidl::android::media::tv::tuner::TunerFrontendDtmbCapabilities; using ::android::hardware::tv::tuner::V1_0::FrontendId; using ::android::hardware::tv::tuner::V1_0::FrontendStatusType; using ::android::hardware::tv::tuner::V1_0::FrontendType; namespace android { Loading Loading @@ -136,12 +139,11 @@ sp<FrontendClient> TunerClient::openFrontend(int frontendHandle) { shared_ptr<FrontendInfo> TunerClient::getFrontendInfo(int id) { if (mTunerService != NULL) { TunerFrontendInfo aidlFrontendInfo; // TODO: handle error code Status s = mTunerService->getFrontendInfo(id, &aidlFrontendInfo); if (ClientHelper::getServiceSpecificErrorCode(s) != Result::SUCCESS) { return NULL; } return make_shared<FrontendInfo>(FrontendInfoAidlToHidl(aidlFrontendInfo)); return make_shared<FrontendInfo>(frontendInfoAidlToHidl(aidlFrontendInfo)); } if (mTuner != NULL) { Loading @@ -157,7 +159,22 @@ shared_ptr<FrontendInfo> TunerClient::getFrontendInfo(int id) { } shared_ptr<FrontendDtmbCapabilities> TunerClient::getFrontendDtmbCapabilities(int id) { // pending aidl interface if (mTunerService != NULL) { TunerFrontendDtmbCapabilities dtmbCaps; Status s = mTunerService->getFrontendDtmbCapabilities(id, &dtmbCaps); if (ClientHelper::getServiceSpecificErrorCode(s) != Result::SUCCESS) { return NULL; } FrontendDtmbCapabilities hidlCaps{ .transmissionModeCap = static_cast<uint32_t>(dtmbCaps.transmissionModeCap), .bandwidthCap = static_cast<uint32_t>(dtmbCaps.bandwidthCap), .modulationCap = static_cast<uint32_t>(dtmbCaps.modulationCap), .codeRateCap = static_cast<uint32_t>(dtmbCaps.codeRateCap), .guardIntervalCap = static_cast<uint32_t>(dtmbCaps.guardIntervalCap), .interleaveModeCap = static_cast<uint32_t>(dtmbCaps.interleaveModeCap), }; return make_shared<FrontendDtmbCapabilities>(hidlCaps); } if (mTuner_1_1 != NULL) { Result result; Loading Loading @@ -487,7 +504,7 @@ DemuxCapabilities TunerClient::getHidlDemuxCaps(TunerDemuxCapabilities& aidlCaps return caps; } FrontendInfo TunerClient::FrontendInfoAidlToHidl(TunerFrontendInfo aidlFrontendInfo) { FrontendInfo TunerClient::frontendInfoAidlToHidl(TunerFrontendInfo aidlFrontendInfo) { FrontendInfo hidlFrontendInfo { .type = static_cast<FrontendType>(aidlFrontendInfo.type), .minFrequency = static_cast<uint32_t>(aidlFrontendInfo.minFrequency), Loading @@ -497,8 +514,102 @@ FrontendInfo TunerClient::FrontendInfoAidlToHidl(TunerFrontendInfo aidlFrontendI .acquireRange = static_cast<uint32_t>(aidlFrontendInfo.acquireRange), .exclusiveGroupId = static_cast<uint32_t>(aidlFrontendInfo.exclusiveGroupId), }; // TODO: handle Frontend caps int size = aidlFrontendInfo.statusCaps.size(); hidlFrontendInfo.statusCaps.resize(size); for (int i = 0; i < size; i++) { hidlFrontendInfo.statusCaps[i] = static_cast<FrontendStatusType>(aidlFrontendInfo.statusCaps[i]); } switch (aidlFrontendInfo.caps.getTag()) { case TunerFrontendCapabilities::analogCaps: { auto analog = aidlFrontendInfo.caps.get<TunerFrontendCapabilities::analogCaps>(); hidlFrontendInfo.frontendCaps.analogCaps({ .typeCap = static_cast<uint32_t>(analog.typeCap), .sifStandardCap = static_cast<uint32_t>(analog.sifStandardCap), }); break; } case TunerFrontendCapabilities::atscCaps: { auto atsc = aidlFrontendInfo.caps.get<TunerFrontendCapabilities::atscCaps>(); hidlFrontendInfo.frontendCaps.atscCaps({ .modulationCap = static_cast<uint32_t>(atsc.modulationCap), }); break; } case TunerFrontendCapabilities::atsc3Caps: { auto atsc3 = aidlFrontendInfo.caps.get<TunerFrontendCapabilities::atsc3Caps>(); hidlFrontendInfo.frontendCaps.atsc3Caps({ .bandwidthCap = static_cast<uint32_t>(atsc3.bandwidthCap), .modulationCap = static_cast<uint32_t>(atsc3.modulationCap), .timeInterleaveModeCap = static_cast<uint32_t>(atsc3.timeInterleaveModeCap), .codeRateCap = static_cast<uint32_t>(atsc3.codeRateCap), .fecCap = static_cast<uint32_t>(atsc3.fecCap), .demodOutputFormatCap = static_cast<uint8_t>(atsc3.demodOutputFormatCap), }); break; } case TunerFrontendCapabilities::cableCaps: { auto cable = aidlFrontendInfo.caps.get<TunerFrontendCapabilities::cableCaps>(); hidlFrontendInfo.frontendCaps.dvbcCaps({ .modulationCap = static_cast<uint32_t>(cable.modulationCap), .fecCap = static_cast<uint64_t>(cable.codeRateCap), .annexCap = static_cast<uint8_t>(cable.annexCap), }); break; } case TunerFrontendCapabilities::dvbsCaps: { auto dvbs = aidlFrontendInfo.caps.get<TunerFrontendCapabilities::dvbsCaps>(); hidlFrontendInfo.frontendCaps.dvbsCaps({ .modulationCap = static_cast<int32_t>(dvbs.modulationCap), .innerfecCap = static_cast<uint64_t>(dvbs.codeRateCap), .standard = static_cast<uint8_t>(dvbs.standard), }); break; } case TunerFrontendCapabilities::dvbtCaps: { auto dvbt = aidlFrontendInfo.caps.get<TunerFrontendCapabilities::dvbtCaps>(); hidlFrontendInfo.frontendCaps.dvbtCaps({ .transmissionModeCap = static_cast<uint32_t>(dvbt.transmissionModeCap), .bandwidthCap = static_cast<uint32_t>(dvbt.bandwidthCap), .constellationCap = static_cast<uint32_t>(dvbt.constellationCap), .coderateCap = static_cast<uint32_t>(dvbt.codeRateCap), .hierarchyCap = static_cast<uint32_t>(dvbt.hierarchyCap), .guardIntervalCap = static_cast<uint32_t>(dvbt.guardIntervalCap), .isT2Supported = dvbt.isT2Supported, .isMisoSupported = dvbt.isMisoSupported, }); break; } case TunerFrontendCapabilities::isdbsCaps: { auto isdbs = aidlFrontendInfo.caps.get<TunerFrontendCapabilities::isdbsCaps>(); hidlFrontendInfo.frontendCaps.isdbsCaps({ .modulationCap = static_cast<uint32_t>(isdbs.modulationCap), .coderateCap = static_cast<uint32_t>(isdbs.codeRateCap), }); break; } case TunerFrontendCapabilities::isdbs3Caps: { auto isdbs3 = aidlFrontendInfo.caps.get<TunerFrontendCapabilities::isdbs3Caps>(); hidlFrontendInfo.frontendCaps.isdbs3Caps({ .modulationCap = static_cast<uint32_t>(isdbs3.modulationCap), .coderateCap = static_cast<uint32_t>(isdbs3.codeRateCap), }); break; } case TunerFrontendCapabilities::isdbtCaps: { auto isdbt = aidlFrontendInfo.caps.get<TunerFrontendCapabilities::isdbtCaps>(); hidlFrontendInfo.frontendCaps.isdbtCaps({ .modeCap = static_cast<uint32_t>(isdbt.modeCap), .bandwidthCap = static_cast<uint32_t>(isdbt.bandwidthCap), .modulationCap = static_cast<uint32_t>(isdbt.modulationCap), .coderateCap = static_cast<uint32_t>(isdbt.codeRateCap), .guardIntervalCap = static_cast<uint32_t>(isdbt.guardIntervalCap), }); break; } } return hidlFrontendInfo; } Loading media/jni/tuner/TunerClient.h +1 −1 Original line number Diff line number Diff line Loading @@ -147,7 +147,7 @@ private: sp<IDescrambler> openHidlDescrambler(); vector<int> getLnbHandles(); DemuxCapabilities getHidlDemuxCaps(TunerDemuxCapabilities& aidlCaps); FrontendInfo FrontendInfoAidlToHidl(TunerFrontendInfo aidlFrontendInfo); FrontendInfo frontendInfoAidlToHidl(TunerFrontendInfo aidlFrontendInfo); void updateTunerResources(); void updateFrontendResources(); void updateLnbResources(); Loading Loading
media/jni/tuner/FrontendClient.cpp +13 −14 Original line number Diff line number Diff line Loading @@ -91,8 +91,8 @@ Result FrontendClient::setCallback(sp<FrontendClientCallback> frontendClientCall if (mTunerFrontend != NULL) { mAidlCallback = ::ndk::SharedRefBase::make<TunerFrontendCallback>(frontendClientCallback); mAidlCallback->setFrontendType(mType); mTunerFrontend->setCallback(mAidlCallback); return Result::SUCCESS; Status s = mTunerFrontend->setCallback(mAidlCallback); return ClientHelper::getServiceSpecificErrorCode(s); } mHidlCallback = new HidlFrontendCallback(frontendClientCallback); Loading Loading @@ -243,9 +243,8 @@ vector<FrontendStatusExt1_1> FrontendClient::getStatusExtended_1_1( Result FrontendClient::setLnb(sp<LnbClient> lnbClient) { if (mTunerFrontend != NULL) { // TODO: handle error message. /*mTunerFrontend->setLnb(lnbClient->getAidlLnb()); return Result::SUCCESS;*/ Status s = mTunerFrontend->setLnb(lnbClient->getAidlLnb()); return ClientHelper::getServiceSpecificErrorCode(s); } if (mFrontend != NULL) { Loading @@ -258,9 +257,8 @@ Result FrontendClient::setLnb(sp<LnbClient> lnbClient) { Result FrontendClient::setLna(bool bEnable) { if (mTunerFrontend != NULL) { // TODO: handle error message. /*mTunerFrontend->setLna(bEnable); return Result::SUCCESS;*/ Status s = mTunerFrontend->setLna(bEnable); return ClientHelper::getServiceSpecificErrorCode(s); } if (mFrontend != NULL) { Loading @@ -275,9 +273,11 @@ int FrontendClient::linkCiCamToFrontend(int ciCamId) { int ltsId = (int)Constant::INVALID_LTS_ID; if (mTunerFrontend != NULL) { // TODO: handle error message. /*mTunerFrontend->linkCiCamToFrontend(ciCamId, ltsId); return ltsId;*/ Status s = mTunerFrontend->linkCiCamToFrontend(ciCamId, <sId); if (ClientHelper::getServiceSpecificErrorCode(s) == Result::SUCCESS) { return ltsId; } return (int)Constant::INVALID_LTS_ID; } if (mFrontend_1_1 != NULL) { Loading @@ -297,9 +297,8 @@ int FrontendClient::linkCiCamToFrontend(int ciCamId) { Result FrontendClient::unlinkCiCamToFrontend(int ciCamId) { if (mTunerFrontend != NULL) { // TODO: handle error message. /*mTunerFrontend->unlinkCiCamToFrontend(ciCamId); return Result::SUCCESS;*/ Status s = mTunerFrontend->unlinkCiCamToFrontend(ciCamId); return ClientHelper::getServiceSpecificErrorCode(s); } if (mFrontend_1_1 != NULL) { Loading
media/jni/tuner/LnbClient.h +1 −1 Original line number Diff line number Diff line Loading @@ -108,7 +108,7 @@ public: */ Result close(); //shared_ptr<ITunerLnb> getAidlLnb() { return mTunerLnb; } shared_ptr<ITunerLnb> getAidlLnb() { return mTunerLnb; } void setId(LnbId id) { mId = id; } LnbId getId() { return mId; } Loading
media/jni/tuner/TunerClient.cpp +116 −5 Original line number Diff line number Diff line Loading @@ -22,7 +22,10 @@ #include "TunerClient.h" using ::aidl::android::media::tv::tuner::TunerFrontendCapabilities; using ::aidl::android::media::tv::tuner::TunerFrontendDtmbCapabilities; using ::android::hardware::tv::tuner::V1_0::FrontendId; using ::android::hardware::tv::tuner::V1_0::FrontendStatusType; using ::android::hardware::tv::tuner::V1_0::FrontendType; namespace android { Loading Loading @@ -136,12 +139,11 @@ sp<FrontendClient> TunerClient::openFrontend(int frontendHandle) { shared_ptr<FrontendInfo> TunerClient::getFrontendInfo(int id) { if (mTunerService != NULL) { TunerFrontendInfo aidlFrontendInfo; // TODO: handle error code Status s = mTunerService->getFrontendInfo(id, &aidlFrontendInfo); if (ClientHelper::getServiceSpecificErrorCode(s) != Result::SUCCESS) { return NULL; } return make_shared<FrontendInfo>(FrontendInfoAidlToHidl(aidlFrontendInfo)); return make_shared<FrontendInfo>(frontendInfoAidlToHidl(aidlFrontendInfo)); } if (mTuner != NULL) { Loading @@ -157,7 +159,22 @@ shared_ptr<FrontendInfo> TunerClient::getFrontendInfo(int id) { } shared_ptr<FrontendDtmbCapabilities> TunerClient::getFrontendDtmbCapabilities(int id) { // pending aidl interface if (mTunerService != NULL) { TunerFrontendDtmbCapabilities dtmbCaps; Status s = mTunerService->getFrontendDtmbCapabilities(id, &dtmbCaps); if (ClientHelper::getServiceSpecificErrorCode(s) != Result::SUCCESS) { return NULL; } FrontendDtmbCapabilities hidlCaps{ .transmissionModeCap = static_cast<uint32_t>(dtmbCaps.transmissionModeCap), .bandwidthCap = static_cast<uint32_t>(dtmbCaps.bandwidthCap), .modulationCap = static_cast<uint32_t>(dtmbCaps.modulationCap), .codeRateCap = static_cast<uint32_t>(dtmbCaps.codeRateCap), .guardIntervalCap = static_cast<uint32_t>(dtmbCaps.guardIntervalCap), .interleaveModeCap = static_cast<uint32_t>(dtmbCaps.interleaveModeCap), }; return make_shared<FrontendDtmbCapabilities>(hidlCaps); } if (mTuner_1_1 != NULL) { Result result; Loading Loading @@ -487,7 +504,7 @@ DemuxCapabilities TunerClient::getHidlDemuxCaps(TunerDemuxCapabilities& aidlCaps return caps; } FrontendInfo TunerClient::FrontendInfoAidlToHidl(TunerFrontendInfo aidlFrontendInfo) { FrontendInfo TunerClient::frontendInfoAidlToHidl(TunerFrontendInfo aidlFrontendInfo) { FrontendInfo hidlFrontendInfo { .type = static_cast<FrontendType>(aidlFrontendInfo.type), .minFrequency = static_cast<uint32_t>(aidlFrontendInfo.minFrequency), Loading @@ -497,8 +514,102 @@ FrontendInfo TunerClient::FrontendInfoAidlToHidl(TunerFrontendInfo aidlFrontendI .acquireRange = static_cast<uint32_t>(aidlFrontendInfo.acquireRange), .exclusiveGroupId = static_cast<uint32_t>(aidlFrontendInfo.exclusiveGroupId), }; // TODO: handle Frontend caps int size = aidlFrontendInfo.statusCaps.size(); hidlFrontendInfo.statusCaps.resize(size); for (int i = 0; i < size; i++) { hidlFrontendInfo.statusCaps[i] = static_cast<FrontendStatusType>(aidlFrontendInfo.statusCaps[i]); } switch (aidlFrontendInfo.caps.getTag()) { case TunerFrontendCapabilities::analogCaps: { auto analog = aidlFrontendInfo.caps.get<TunerFrontendCapabilities::analogCaps>(); hidlFrontendInfo.frontendCaps.analogCaps({ .typeCap = static_cast<uint32_t>(analog.typeCap), .sifStandardCap = static_cast<uint32_t>(analog.sifStandardCap), }); break; } case TunerFrontendCapabilities::atscCaps: { auto atsc = aidlFrontendInfo.caps.get<TunerFrontendCapabilities::atscCaps>(); hidlFrontendInfo.frontendCaps.atscCaps({ .modulationCap = static_cast<uint32_t>(atsc.modulationCap), }); break; } case TunerFrontendCapabilities::atsc3Caps: { auto atsc3 = aidlFrontendInfo.caps.get<TunerFrontendCapabilities::atsc3Caps>(); hidlFrontendInfo.frontendCaps.atsc3Caps({ .bandwidthCap = static_cast<uint32_t>(atsc3.bandwidthCap), .modulationCap = static_cast<uint32_t>(atsc3.modulationCap), .timeInterleaveModeCap = static_cast<uint32_t>(atsc3.timeInterleaveModeCap), .codeRateCap = static_cast<uint32_t>(atsc3.codeRateCap), .fecCap = static_cast<uint32_t>(atsc3.fecCap), .demodOutputFormatCap = static_cast<uint8_t>(atsc3.demodOutputFormatCap), }); break; } case TunerFrontendCapabilities::cableCaps: { auto cable = aidlFrontendInfo.caps.get<TunerFrontendCapabilities::cableCaps>(); hidlFrontendInfo.frontendCaps.dvbcCaps({ .modulationCap = static_cast<uint32_t>(cable.modulationCap), .fecCap = static_cast<uint64_t>(cable.codeRateCap), .annexCap = static_cast<uint8_t>(cable.annexCap), }); break; } case TunerFrontendCapabilities::dvbsCaps: { auto dvbs = aidlFrontendInfo.caps.get<TunerFrontendCapabilities::dvbsCaps>(); hidlFrontendInfo.frontendCaps.dvbsCaps({ .modulationCap = static_cast<int32_t>(dvbs.modulationCap), .innerfecCap = static_cast<uint64_t>(dvbs.codeRateCap), .standard = static_cast<uint8_t>(dvbs.standard), }); break; } case TunerFrontendCapabilities::dvbtCaps: { auto dvbt = aidlFrontendInfo.caps.get<TunerFrontendCapabilities::dvbtCaps>(); hidlFrontendInfo.frontendCaps.dvbtCaps({ .transmissionModeCap = static_cast<uint32_t>(dvbt.transmissionModeCap), .bandwidthCap = static_cast<uint32_t>(dvbt.bandwidthCap), .constellationCap = static_cast<uint32_t>(dvbt.constellationCap), .coderateCap = static_cast<uint32_t>(dvbt.codeRateCap), .hierarchyCap = static_cast<uint32_t>(dvbt.hierarchyCap), .guardIntervalCap = static_cast<uint32_t>(dvbt.guardIntervalCap), .isT2Supported = dvbt.isT2Supported, .isMisoSupported = dvbt.isMisoSupported, }); break; } case TunerFrontendCapabilities::isdbsCaps: { auto isdbs = aidlFrontendInfo.caps.get<TunerFrontendCapabilities::isdbsCaps>(); hidlFrontendInfo.frontendCaps.isdbsCaps({ .modulationCap = static_cast<uint32_t>(isdbs.modulationCap), .coderateCap = static_cast<uint32_t>(isdbs.codeRateCap), }); break; } case TunerFrontendCapabilities::isdbs3Caps: { auto isdbs3 = aidlFrontendInfo.caps.get<TunerFrontendCapabilities::isdbs3Caps>(); hidlFrontendInfo.frontendCaps.isdbs3Caps({ .modulationCap = static_cast<uint32_t>(isdbs3.modulationCap), .coderateCap = static_cast<uint32_t>(isdbs3.codeRateCap), }); break; } case TunerFrontendCapabilities::isdbtCaps: { auto isdbt = aidlFrontendInfo.caps.get<TunerFrontendCapabilities::isdbtCaps>(); hidlFrontendInfo.frontendCaps.isdbtCaps({ .modeCap = static_cast<uint32_t>(isdbt.modeCap), .bandwidthCap = static_cast<uint32_t>(isdbt.bandwidthCap), .modulationCap = static_cast<uint32_t>(isdbt.modulationCap), .coderateCap = static_cast<uint32_t>(isdbt.codeRateCap), .guardIntervalCap = static_cast<uint32_t>(isdbt.guardIntervalCap), }); break; } } return hidlFrontendInfo; } Loading
media/jni/tuner/TunerClient.h +1 −1 Original line number Diff line number Diff line Loading @@ -147,7 +147,7 @@ private: sp<IDescrambler> openHidlDescrambler(); vector<int> getLnbHandles(); DemuxCapabilities getHidlDemuxCaps(TunerDemuxCapabilities& aidlCaps); FrontendInfo FrontendInfoAidlToHidl(TunerFrontendInfo aidlFrontendInfo); FrontendInfo frontendInfoAidlToHidl(TunerFrontendInfo aidlFrontendInfo); void updateTunerResources(); void updateFrontendResources(); void updateLnbResources(); Loading