Loading tv/tuner/aidl/aidl_api/android.hardware.tv.tuner/current/android/hardware/tv/tuner/ITuner.aidl +2 −0 Original line number Original line Diff line number Diff line Loading @@ -45,4 +45,6 @@ interface ITuner { android.hardware.tv.tuner.ILnb openLnbById(in int lnbId); android.hardware.tv.tuner.ILnb openLnbById(in int lnbId); android.hardware.tv.tuner.ILnb openLnbByName(in String lnbName, out int[] lnbId); android.hardware.tv.tuner.ILnb openLnbByName(in String lnbName, out int[] lnbId); void setLna(in boolean bEnable); void setLna(in boolean bEnable); void setMaxNumberOfFrontends(in android.hardware.tv.tuner.FrontendType frontendType, in int maxNumber); int getMaxNumberOfFrontends(in android.hardware.tv.tuner.FrontendType frontendType); } } tv/tuner/aidl/android/hardware/tv/tuner/ITuner.aidl +21 −0 Original line number Original line Diff line number Diff line Loading @@ -18,6 +18,7 @@ package android.hardware.tv.tuner; import android.hardware.tv.tuner.DemuxCapabilities; import android.hardware.tv.tuner.DemuxCapabilities; import android.hardware.tv.tuner.FrontendInfo; import android.hardware.tv.tuner.FrontendInfo; import android.hardware.tv.tuner.FrontendType; import android.hardware.tv.tuner.IDemux; import android.hardware.tv.tuner.IDemux; import android.hardware.tv.tuner.IDescrambler; import android.hardware.tv.tuner.IDescrambler; import android.hardware.tv.tuner.IFrontend; import android.hardware.tv.tuner.IFrontend; Loading Loading @@ -127,4 +128,24 @@ interface ITuner { * @param bEnable true if activate LNA module; false if deactivate LNA * @param bEnable true if activate LNA module; false if deactivate LNA */ */ void setLna(in boolean bEnable); void setLna(in boolean bEnable); /** * Set the maximum usable frontends number of a given frontend type. * * It is used by the client to enable or disable frontends when cable connection status * is changed by user. * * @param frontendType the frontend type which the maximum usable number will be set. * @param maxNumber the new maximum usable number. */ void setMaxNumberOfFrontends(in FrontendType frontendType, in int maxNumber); /** * Get the maximum usable frontends number of a given frontend type. * * @param frontendType the frontend type which the maximum usable number will be queried. * * @return the maximum usable number of the queried frontend type. */ int getMaxNumberOfFrontends(in FrontendType frontendType); } } tv/tuner/aidl/default/Tuner.cpp +29 −0 Original line number Original line Diff line number Diff line Loading @@ -64,6 +64,7 @@ void Tuner::init() { FrontendStatusType::STREAM_ID_LIST, FrontendStatusType::STREAM_ID_LIST, }; }; mFrontendStatusCaps[0] = statusCaps; mFrontendStatusCaps[0] = statusCaps; mMaxUsableFrontends[FrontendType::ISDBS] = 1; FrontendCapabilities capsAtsc3; FrontendCapabilities capsAtsc3; capsAtsc3.set<FrontendCapabilities::Tag::atsc3Caps>(FrontendAtsc3Capabilities()); capsAtsc3.set<FrontendCapabilities::Tag::atsc3Caps>(FrontendAtsc3Capabilities()); Loading @@ -78,6 +79,7 @@ void Tuner::init() { FrontendStatusType::BANDWIDTH, FrontendStatusType::BANDWIDTH, }; }; mFrontendStatusCaps[1] = statusCaps; mFrontendStatusCaps[1] = statusCaps; mMaxUsableFrontends[FrontendType::ATSC3] = 1; FrontendCapabilities capsDvbc; FrontendCapabilities capsDvbc; capsDvbc.set<FrontendCapabilities::Tag::dvbcCaps>(FrontendDvbcCapabilities()); capsDvbc.set<FrontendCapabilities::Tag::dvbcCaps>(FrontendDvbcCapabilities()); Loading @@ -89,6 +91,7 @@ void Tuner::init() { FrontendStatusType::INTERLEAVINGS, FrontendStatusType::BANDWIDTH, FrontendStatusType::INTERLEAVINGS, FrontendStatusType::BANDWIDTH, }; }; mFrontendStatusCaps[2] = statusCaps; mFrontendStatusCaps[2] = statusCaps; mMaxUsableFrontends[FrontendType::DVBC] = 1; FrontendCapabilities capsDvbs; FrontendCapabilities capsDvbs; capsDvbs.set<FrontendCapabilities::Tag::dvbsCaps>(FrontendDvbsCapabilities()); capsDvbs.set<FrontendCapabilities::Tag::dvbsCaps>(FrontendDvbsCapabilities()); Loading @@ -99,6 +102,7 @@ void Tuner::init() { FrontendStatusType::ROLL_OFF, FrontendStatusType::IS_MISO, FrontendStatusType::ROLL_OFF, FrontendStatusType::IS_MISO, }; }; mFrontendStatusCaps[3] = statusCaps; mFrontendStatusCaps[3] = statusCaps; mMaxUsableFrontends[FrontendType::DVBS] = 1; FrontendCapabilities capsDvbt; FrontendCapabilities capsDvbt; capsDvbt.set<FrontendCapabilities::Tag::dvbtCaps>(FrontendDvbtCapabilities()); capsDvbt.set<FrontendCapabilities::Tag::dvbtCaps>(FrontendDvbtCapabilities()); Loading @@ -115,6 +119,7 @@ void Tuner::init() { FrontendStatusType::DVBT_CELL_IDS, FrontendStatusType::DVBT_CELL_IDS, }; }; mFrontendStatusCaps[4] = statusCaps; mFrontendStatusCaps[4] = statusCaps; mMaxUsableFrontends[FrontendType::DVBT] = 1; FrontendCapabilities capsIsdbt; FrontendCapabilities capsIsdbt; FrontendIsdbtCapabilities isdbtCaps{ FrontendIsdbtCapabilities isdbtCaps{ Loading Loading @@ -145,6 +150,7 @@ void Tuner::init() { FrontendStatusType::INTERLEAVINGS, FrontendStatusType::INTERLEAVINGS, }; }; mFrontendStatusCaps[5] = statusCaps; mFrontendStatusCaps[5] = statusCaps; mMaxUsableFrontends[FrontendType::ISDBT] = 1; FrontendCapabilities capsAnalog; FrontendCapabilities capsAnalog; capsAnalog.set<FrontendCapabilities::Tag::analogCaps>(FrontendAnalogCapabilities()); capsAnalog.set<FrontendCapabilities::Tag::analogCaps>(FrontendAnalogCapabilities()); Loading @@ -156,6 +162,7 @@ void Tuner::init() { FrontendStatusType::TS_DATA_RATES, FrontendStatusType::TS_DATA_RATES, }; }; mFrontendStatusCaps[6] = statusCaps; mFrontendStatusCaps[6] = statusCaps; mMaxUsableFrontends[FrontendType::ANALOG] = 1; FrontendCapabilities capsAtsc; FrontendCapabilities capsAtsc; capsAtsc.set<FrontendCapabilities::Tag::atscCaps>(FrontendAtscCapabilities()); capsAtsc.set<FrontendCapabilities::Tag::atscCaps>(FrontendAtscCapabilities()); Loading @@ -167,6 +174,7 @@ void Tuner::init() { FrontendStatusType::IS_LINEAR, FrontendStatusType::IS_LINEAR, }; }; mFrontendStatusCaps[7] = statusCaps; mFrontendStatusCaps[7] = statusCaps; mMaxUsableFrontends[FrontendType::ATSC] = 1; FrontendCapabilities capsIsdbs3; FrontendCapabilities capsIsdbs3; capsIsdbs3.set<FrontendCapabilities::Tag::isdbs3Caps>(FrontendIsdbs3Capabilities()); capsIsdbs3.set<FrontendCapabilities::Tag::isdbs3Caps>(FrontendIsdbs3Capabilities()); Loading @@ -177,6 +185,7 @@ void Tuner::init() { FrontendStatusType::IS_SHORT_FRAMES, FrontendStatusType::STREAM_ID_LIST, FrontendStatusType::IS_SHORT_FRAMES, FrontendStatusType::STREAM_ID_LIST, }; }; mFrontendStatusCaps[8] = statusCaps; mFrontendStatusCaps[8] = statusCaps; mMaxUsableFrontends[FrontendType::ISDBS3] = 1; FrontendCapabilities capsDtmb; FrontendCapabilities capsDtmb; capsDtmb.set<FrontendCapabilities::Tag::dtmbCaps>(FrontendDtmbCapabilities()); capsDtmb.set<FrontendCapabilities::Tag::dtmbCaps>(FrontendDtmbCapabilities()); Loading @@ -187,6 +196,7 @@ void Tuner::init() { FrontendStatusType::TRANSMISSION_MODE, FrontendStatusType::TRANSMISSION_MODE, }; }; mFrontendStatusCaps[9] = statusCaps; mFrontendStatusCaps[9] = statusCaps; mMaxUsableFrontends[FrontendType::DTMB] = 1; mLnbs.resize(2); mLnbs.resize(2); mLnbs[0] = ndk::SharedRefBase::make<Lnb>(0); mLnbs[0] = ndk::SharedRefBase::make<Lnb>(0); Loading Loading @@ -324,6 +334,25 @@ std::shared_ptr<Frontend> Tuner::getFrontendById(int32_t frontendId) { return ::ndk::ScopedAStatus::ok(); return ::ndk::ScopedAStatus::ok(); } } ::ndk::ScopedAStatus Tuner::setMaxNumberOfFrontends(FrontendType in_frontendType, int32_t in_maxNumber) { ALOGV("%s", __FUNCTION__); // In the default implementation, every type only has one frontend. if (in_maxNumber < 0 || in_maxNumber > 1) { return ::ndk::ScopedAStatus::fromServiceSpecificError( static_cast<int32_t>(Result::INVALID_ARGUMENT)); } mMaxUsableFrontends[in_frontendType] = in_maxNumber; return ::ndk::ScopedAStatus::ok(); } ::ndk::ScopedAStatus Tuner::getMaxNumberOfFrontends(FrontendType in_frontendType, int32_t* _aidl_return) { *_aidl_return = mMaxUsableFrontends[in_frontendType]; return ::ndk::ScopedAStatus::ok(); } binder_status_t Tuner::dump(int fd, const char** args, uint32_t numArgs) { binder_status_t Tuner::dump(int fd, const char** args, uint32_t numArgs) { ALOGV("%s", __FUNCTION__); ALOGV("%s", __FUNCTION__); { { Loading tv/tuner/aidl/default/Tuner.h +5 −0 Original line number Original line Diff line number Diff line Loading @@ -57,6 +57,10 @@ class Tuner : public BnTuner { std::vector<int32_t>* out_lnbId, std::vector<int32_t>* out_lnbId, std::shared_ptr<ILnb>* _aidl_return) override; std::shared_ptr<ILnb>* _aidl_return) override; ::ndk::ScopedAStatus setLna(bool in_bEnable) override; ::ndk::ScopedAStatus setLna(bool in_bEnable) override; ::ndk::ScopedAStatus setMaxNumberOfFrontends(FrontendType in_frontendType, int32_t in_maxNumber) override; ::ndk::ScopedAStatus getMaxNumberOfFrontends(FrontendType in_frontendType, int32_t* _aidl_return) override; binder_status_t dump(int fd, const char** args, uint32_t numArgs) override; binder_status_t dump(int fd, const char** args, uint32_t numArgs) override; Loading @@ -81,6 +85,7 @@ class Tuner : public BnTuner { // First used id will be 0. // First used id will be 0. int32_t mLastUsedId = -1; int32_t mLastUsedId = -1; vector<std::shared_ptr<Lnb>> mLnbs; vector<std::shared_ptr<Lnb>> mLnbs; map<FrontendType, int32_t> mMaxUsableFrontends; }; }; } // namespace tuner } // namespace tuner Loading tv/tuner/aidl/vts/functional/FrontendTests.cpp +37 −0 Original line number Original line Diff line number Diff line Loading @@ -14,6 +14,8 @@ * limitations under the License. * limitations under the License. */ */ #include <aidl/android/hardware/tv/tuner/Result.h> #include "FrontendTests.h" #include "FrontendTests.h" ndk::ScopedAStatus FrontendCallback::onEvent(FrontendEventType frontendEventType) { ndk::ScopedAStatus FrontendCallback::onEvent(FrontendEventType frontendEventType) { Loading Loading @@ -519,6 +521,41 @@ void FrontendTests::debugInfoTest(FrontendConfig frontendConf) { ASSERT_TRUE(closeFrontend()); ASSERT_TRUE(closeFrontend()); } } void FrontendTests::maxNumberOfFrontendsTest() { ASSERT_TRUE(getFrontendIds()); for (size_t i = 0; i < mFeIds.size(); i++) { ASSERT_TRUE(getFrontendInfo(mFeIds[i])); int32_t defaultMax = -1; ndk::ScopedAStatus status; // Check default value status = mService->getMaxNumberOfFrontends(mFrontendInfo.type, &defaultMax); ASSERT_TRUE(status.isOk()); ASSERT_TRUE(defaultMax > 0); // Set to -1 status = mService->setMaxNumberOfFrontends(mFrontendInfo.type, -1); ASSERT_TRUE(status.getServiceSpecificError() == static_cast<int32_t>(Result::INVALID_ARGUMENT)); // Set to defaultMax + 1 status = mService->setMaxNumberOfFrontends(mFrontendInfo.type, defaultMax + 1); ASSERT_TRUE(status.getServiceSpecificError() == static_cast<int32_t>(Result::INVALID_ARGUMENT)); // Set to 0 status = mService->setMaxNumberOfFrontends(mFrontendInfo.type, 0); ASSERT_TRUE(status.isOk()); // Check after set int32_t currentMax = -1; status = mService->getMaxNumberOfFrontends(mFrontendInfo.type, ¤tMax); ASSERT_TRUE(status.isOk()); ASSERT_TRUE(currentMax == 0); // Reset to default status = mService->setMaxNumberOfFrontends(mFrontendInfo.type, defaultMax); ASSERT_TRUE(status.isOk()); status = mService->getMaxNumberOfFrontends(mFrontendInfo.type, ¤tMax); ASSERT_TRUE(status.isOk()); ASSERT_TRUE(defaultMax == currentMax); } } void FrontendTests::scanTest(FrontendConfig frontendConf, FrontendScanType scanType) { void FrontendTests::scanTest(FrontendConfig frontendConf, FrontendScanType scanType) { int32_t feId; int32_t feId; getFrontendIdByType(frontendConf.type, feId); getFrontendIdByType(frontendConf.type, feId); Loading Loading
tv/tuner/aidl/aidl_api/android.hardware.tv.tuner/current/android/hardware/tv/tuner/ITuner.aidl +2 −0 Original line number Original line Diff line number Diff line Loading @@ -45,4 +45,6 @@ interface ITuner { android.hardware.tv.tuner.ILnb openLnbById(in int lnbId); android.hardware.tv.tuner.ILnb openLnbById(in int lnbId); android.hardware.tv.tuner.ILnb openLnbByName(in String lnbName, out int[] lnbId); android.hardware.tv.tuner.ILnb openLnbByName(in String lnbName, out int[] lnbId); void setLna(in boolean bEnable); void setLna(in boolean bEnable); void setMaxNumberOfFrontends(in android.hardware.tv.tuner.FrontendType frontendType, in int maxNumber); int getMaxNumberOfFrontends(in android.hardware.tv.tuner.FrontendType frontendType); } }
tv/tuner/aidl/android/hardware/tv/tuner/ITuner.aidl +21 −0 Original line number Original line Diff line number Diff line Loading @@ -18,6 +18,7 @@ package android.hardware.tv.tuner; import android.hardware.tv.tuner.DemuxCapabilities; import android.hardware.tv.tuner.DemuxCapabilities; import android.hardware.tv.tuner.FrontendInfo; import android.hardware.tv.tuner.FrontendInfo; import android.hardware.tv.tuner.FrontendType; import android.hardware.tv.tuner.IDemux; import android.hardware.tv.tuner.IDemux; import android.hardware.tv.tuner.IDescrambler; import android.hardware.tv.tuner.IDescrambler; import android.hardware.tv.tuner.IFrontend; import android.hardware.tv.tuner.IFrontend; Loading Loading @@ -127,4 +128,24 @@ interface ITuner { * @param bEnable true if activate LNA module; false if deactivate LNA * @param bEnable true if activate LNA module; false if deactivate LNA */ */ void setLna(in boolean bEnable); void setLna(in boolean bEnable); /** * Set the maximum usable frontends number of a given frontend type. * * It is used by the client to enable or disable frontends when cable connection status * is changed by user. * * @param frontendType the frontend type which the maximum usable number will be set. * @param maxNumber the new maximum usable number. */ void setMaxNumberOfFrontends(in FrontendType frontendType, in int maxNumber); /** * Get the maximum usable frontends number of a given frontend type. * * @param frontendType the frontend type which the maximum usable number will be queried. * * @return the maximum usable number of the queried frontend type. */ int getMaxNumberOfFrontends(in FrontendType frontendType); } }
tv/tuner/aidl/default/Tuner.cpp +29 −0 Original line number Original line Diff line number Diff line Loading @@ -64,6 +64,7 @@ void Tuner::init() { FrontendStatusType::STREAM_ID_LIST, FrontendStatusType::STREAM_ID_LIST, }; }; mFrontendStatusCaps[0] = statusCaps; mFrontendStatusCaps[0] = statusCaps; mMaxUsableFrontends[FrontendType::ISDBS] = 1; FrontendCapabilities capsAtsc3; FrontendCapabilities capsAtsc3; capsAtsc3.set<FrontendCapabilities::Tag::atsc3Caps>(FrontendAtsc3Capabilities()); capsAtsc3.set<FrontendCapabilities::Tag::atsc3Caps>(FrontendAtsc3Capabilities()); Loading @@ -78,6 +79,7 @@ void Tuner::init() { FrontendStatusType::BANDWIDTH, FrontendStatusType::BANDWIDTH, }; }; mFrontendStatusCaps[1] = statusCaps; mFrontendStatusCaps[1] = statusCaps; mMaxUsableFrontends[FrontendType::ATSC3] = 1; FrontendCapabilities capsDvbc; FrontendCapabilities capsDvbc; capsDvbc.set<FrontendCapabilities::Tag::dvbcCaps>(FrontendDvbcCapabilities()); capsDvbc.set<FrontendCapabilities::Tag::dvbcCaps>(FrontendDvbcCapabilities()); Loading @@ -89,6 +91,7 @@ void Tuner::init() { FrontendStatusType::INTERLEAVINGS, FrontendStatusType::BANDWIDTH, FrontendStatusType::INTERLEAVINGS, FrontendStatusType::BANDWIDTH, }; }; mFrontendStatusCaps[2] = statusCaps; mFrontendStatusCaps[2] = statusCaps; mMaxUsableFrontends[FrontendType::DVBC] = 1; FrontendCapabilities capsDvbs; FrontendCapabilities capsDvbs; capsDvbs.set<FrontendCapabilities::Tag::dvbsCaps>(FrontendDvbsCapabilities()); capsDvbs.set<FrontendCapabilities::Tag::dvbsCaps>(FrontendDvbsCapabilities()); Loading @@ -99,6 +102,7 @@ void Tuner::init() { FrontendStatusType::ROLL_OFF, FrontendStatusType::IS_MISO, FrontendStatusType::ROLL_OFF, FrontendStatusType::IS_MISO, }; }; mFrontendStatusCaps[3] = statusCaps; mFrontendStatusCaps[3] = statusCaps; mMaxUsableFrontends[FrontendType::DVBS] = 1; FrontendCapabilities capsDvbt; FrontendCapabilities capsDvbt; capsDvbt.set<FrontendCapabilities::Tag::dvbtCaps>(FrontendDvbtCapabilities()); capsDvbt.set<FrontendCapabilities::Tag::dvbtCaps>(FrontendDvbtCapabilities()); Loading @@ -115,6 +119,7 @@ void Tuner::init() { FrontendStatusType::DVBT_CELL_IDS, FrontendStatusType::DVBT_CELL_IDS, }; }; mFrontendStatusCaps[4] = statusCaps; mFrontendStatusCaps[4] = statusCaps; mMaxUsableFrontends[FrontendType::DVBT] = 1; FrontendCapabilities capsIsdbt; FrontendCapabilities capsIsdbt; FrontendIsdbtCapabilities isdbtCaps{ FrontendIsdbtCapabilities isdbtCaps{ Loading Loading @@ -145,6 +150,7 @@ void Tuner::init() { FrontendStatusType::INTERLEAVINGS, FrontendStatusType::INTERLEAVINGS, }; }; mFrontendStatusCaps[5] = statusCaps; mFrontendStatusCaps[5] = statusCaps; mMaxUsableFrontends[FrontendType::ISDBT] = 1; FrontendCapabilities capsAnalog; FrontendCapabilities capsAnalog; capsAnalog.set<FrontendCapabilities::Tag::analogCaps>(FrontendAnalogCapabilities()); capsAnalog.set<FrontendCapabilities::Tag::analogCaps>(FrontendAnalogCapabilities()); Loading @@ -156,6 +162,7 @@ void Tuner::init() { FrontendStatusType::TS_DATA_RATES, FrontendStatusType::TS_DATA_RATES, }; }; mFrontendStatusCaps[6] = statusCaps; mFrontendStatusCaps[6] = statusCaps; mMaxUsableFrontends[FrontendType::ANALOG] = 1; FrontendCapabilities capsAtsc; FrontendCapabilities capsAtsc; capsAtsc.set<FrontendCapabilities::Tag::atscCaps>(FrontendAtscCapabilities()); capsAtsc.set<FrontendCapabilities::Tag::atscCaps>(FrontendAtscCapabilities()); Loading @@ -167,6 +174,7 @@ void Tuner::init() { FrontendStatusType::IS_LINEAR, FrontendStatusType::IS_LINEAR, }; }; mFrontendStatusCaps[7] = statusCaps; mFrontendStatusCaps[7] = statusCaps; mMaxUsableFrontends[FrontendType::ATSC] = 1; FrontendCapabilities capsIsdbs3; FrontendCapabilities capsIsdbs3; capsIsdbs3.set<FrontendCapabilities::Tag::isdbs3Caps>(FrontendIsdbs3Capabilities()); capsIsdbs3.set<FrontendCapabilities::Tag::isdbs3Caps>(FrontendIsdbs3Capabilities()); Loading @@ -177,6 +185,7 @@ void Tuner::init() { FrontendStatusType::IS_SHORT_FRAMES, FrontendStatusType::STREAM_ID_LIST, FrontendStatusType::IS_SHORT_FRAMES, FrontendStatusType::STREAM_ID_LIST, }; }; mFrontendStatusCaps[8] = statusCaps; mFrontendStatusCaps[8] = statusCaps; mMaxUsableFrontends[FrontendType::ISDBS3] = 1; FrontendCapabilities capsDtmb; FrontendCapabilities capsDtmb; capsDtmb.set<FrontendCapabilities::Tag::dtmbCaps>(FrontendDtmbCapabilities()); capsDtmb.set<FrontendCapabilities::Tag::dtmbCaps>(FrontendDtmbCapabilities()); Loading @@ -187,6 +196,7 @@ void Tuner::init() { FrontendStatusType::TRANSMISSION_MODE, FrontendStatusType::TRANSMISSION_MODE, }; }; mFrontendStatusCaps[9] = statusCaps; mFrontendStatusCaps[9] = statusCaps; mMaxUsableFrontends[FrontendType::DTMB] = 1; mLnbs.resize(2); mLnbs.resize(2); mLnbs[0] = ndk::SharedRefBase::make<Lnb>(0); mLnbs[0] = ndk::SharedRefBase::make<Lnb>(0); Loading Loading @@ -324,6 +334,25 @@ std::shared_ptr<Frontend> Tuner::getFrontendById(int32_t frontendId) { return ::ndk::ScopedAStatus::ok(); return ::ndk::ScopedAStatus::ok(); } } ::ndk::ScopedAStatus Tuner::setMaxNumberOfFrontends(FrontendType in_frontendType, int32_t in_maxNumber) { ALOGV("%s", __FUNCTION__); // In the default implementation, every type only has one frontend. if (in_maxNumber < 0 || in_maxNumber > 1) { return ::ndk::ScopedAStatus::fromServiceSpecificError( static_cast<int32_t>(Result::INVALID_ARGUMENT)); } mMaxUsableFrontends[in_frontendType] = in_maxNumber; return ::ndk::ScopedAStatus::ok(); } ::ndk::ScopedAStatus Tuner::getMaxNumberOfFrontends(FrontendType in_frontendType, int32_t* _aidl_return) { *_aidl_return = mMaxUsableFrontends[in_frontendType]; return ::ndk::ScopedAStatus::ok(); } binder_status_t Tuner::dump(int fd, const char** args, uint32_t numArgs) { binder_status_t Tuner::dump(int fd, const char** args, uint32_t numArgs) { ALOGV("%s", __FUNCTION__); ALOGV("%s", __FUNCTION__); { { Loading
tv/tuner/aidl/default/Tuner.h +5 −0 Original line number Original line Diff line number Diff line Loading @@ -57,6 +57,10 @@ class Tuner : public BnTuner { std::vector<int32_t>* out_lnbId, std::vector<int32_t>* out_lnbId, std::shared_ptr<ILnb>* _aidl_return) override; std::shared_ptr<ILnb>* _aidl_return) override; ::ndk::ScopedAStatus setLna(bool in_bEnable) override; ::ndk::ScopedAStatus setLna(bool in_bEnable) override; ::ndk::ScopedAStatus setMaxNumberOfFrontends(FrontendType in_frontendType, int32_t in_maxNumber) override; ::ndk::ScopedAStatus getMaxNumberOfFrontends(FrontendType in_frontendType, int32_t* _aidl_return) override; binder_status_t dump(int fd, const char** args, uint32_t numArgs) override; binder_status_t dump(int fd, const char** args, uint32_t numArgs) override; Loading @@ -81,6 +85,7 @@ class Tuner : public BnTuner { // First used id will be 0. // First used id will be 0. int32_t mLastUsedId = -1; int32_t mLastUsedId = -1; vector<std::shared_ptr<Lnb>> mLnbs; vector<std::shared_ptr<Lnb>> mLnbs; map<FrontendType, int32_t> mMaxUsableFrontends; }; }; } // namespace tuner } // namespace tuner Loading
tv/tuner/aidl/vts/functional/FrontendTests.cpp +37 −0 Original line number Original line Diff line number Diff line Loading @@ -14,6 +14,8 @@ * limitations under the License. * limitations under the License. */ */ #include <aidl/android/hardware/tv/tuner/Result.h> #include "FrontendTests.h" #include "FrontendTests.h" ndk::ScopedAStatus FrontendCallback::onEvent(FrontendEventType frontendEventType) { ndk::ScopedAStatus FrontendCallback::onEvent(FrontendEventType frontendEventType) { Loading Loading @@ -519,6 +521,41 @@ void FrontendTests::debugInfoTest(FrontendConfig frontendConf) { ASSERT_TRUE(closeFrontend()); ASSERT_TRUE(closeFrontend()); } } void FrontendTests::maxNumberOfFrontendsTest() { ASSERT_TRUE(getFrontendIds()); for (size_t i = 0; i < mFeIds.size(); i++) { ASSERT_TRUE(getFrontendInfo(mFeIds[i])); int32_t defaultMax = -1; ndk::ScopedAStatus status; // Check default value status = mService->getMaxNumberOfFrontends(mFrontendInfo.type, &defaultMax); ASSERT_TRUE(status.isOk()); ASSERT_TRUE(defaultMax > 0); // Set to -1 status = mService->setMaxNumberOfFrontends(mFrontendInfo.type, -1); ASSERT_TRUE(status.getServiceSpecificError() == static_cast<int32_t>(Result::INVALID_ARGUMENT)); // Set to defaultMax + 1 status = mService->setMaxNumberOfFrontends(mFrontendInfo.type, defaultMax + 1); ASSERT_TRUE(status.getServiceSpecificError() == static_cast<int32_t>(Result::INVALID_ARGUMENT)); // Set to 0 status = mService->setMaxNumberOfFrontends(mFrontendInfo.type, 0); ASSERT_TRUE(status.isOk()); // Check after set int32_t currentMax = -1; status = mService->getMaxNumberOfFrontends(mFrontendInfo.type, ¤tMax); ASSERT_TRUE(status.isOk()); ASSERT_TRUE(currentMax == 0); // Reset to default status = mService->setMaxNumberOfFrontends(mFrontendInfo.type, defaultMax); ASSERT_TRUE(status.isOk()); status = mService->getMaxNumberOfFrontends(mFrontendInfo.type, ¤tMax); ASSERT_TRUE(status.isOk()); ASSERT_TRUE(defaultMax == currentMax); } } void FrontendTests::scanTest(FrontendConfig frontendConf, FrontendScanType scanType) { void FrontendTests::scanTest(FrontendConfig frontendConf, FrontendScanType scanType) { int32_t feId; int32_t feId; getFrontendIdByType(frontendConf.type, feId); getFrontendIdByType(frontendConf.type, feId); Loading