Loading media/jni/tuner/LnbClient.cpp +48 −15 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ #include <android-base/logging.h> #include <utils/Log.h> #include "TunerClient.h" #include "LnbClient.h" using ::android::hardware::tv::tuner::V1_0::Result; Loading @@ -27,14 +28,13 @@ namespace android { /////////////// LnbClient /////////////////////// // TODO: pending aidl interface LnbClient::LnbClient() { //mTunerLnb = tunerLnb; LnbClient::LnbClient(shared_ptr<ITunerLnb> tunerLnb) { mTunerLnb = tunerLnb; mId = -1; } LnbClient::~LnbClient() { //mTunerLnb = NULL; mTunerLnb = NULL; mLnb = NULL; mId = -1; } Loading @@ -45,19 +45,21 @@ void LnbClient::setHidlLnb(sp<ILnb> lnb) { } Result LnbClient::setCallback(sp<LnbClientCallback> cb) { // TODO: pending aidl interface /*if (mTunerFrontend != NULL) { if (mTunerLnb != NULL) { mAidlCallback = ::ndk::SharedRefBase::make<TunerLnbCallback>(cb); mTunerLnb->setCallback(mAidlCallback); return Result::SUCCESS; }*/ Status s = mTunerLnb->setCallback(mAidlCallback); return TunerClient::getServiceSpecificErrorCode(s); } mHidlCallback = new HidlLnbCallback(cb); return mLnb->setCallback(mHidlCallback); } Result LnbClient::setVoltage(LnbVoltage voltage) { // TODO: pending aidl interface if (mTunerLnb != NULL) { Status s = mTunerLnb->setVoltage((int)voltage); return TunerClient::getServiceSpecificErrorCode(s); } if (mLnb != NULL) { return mLnb->setVoltage(voltage); Loading @@ -67,7 +69,10 @@ Result LnbClient::setVoltage(LnbVoltage voltage) { } Result LnbClient::setTone(LnbTone tone) { // TODO: pending aidl interface if (mTunerLnb != NULL) { Status s = mTunerLnb->setTone((int)tone); return TunerClient::getServiceSpecificErrorCode(s); } if (mLnb != NULL) { return mLnb->setTone(tone); Loading @@ -77,7 +82,10 @@ Result LnbClient::setTone(LnbTone tone) { } Result LnbClient::setSatellitePosition(LnbPosition position) { // TODO: pending aidl interface if (mTunerLnb != NULL) { Status s = mTunerLnb->setSatellitePosition((int)position); return TunerClient::getServiceSpecificErrorCode(s); } if (mLnb != NULL) { return mLnb->setSatellitePosition(position); Loading @@ -87,7 +95,10 @@ Result LnbClient::setSatellitePosition(LnbPosition position) { } Result LnbClient::sendDiseqcMessage(vector<uint8_t> diseqcMessage) { // TODO: pending aidl interface if (mTunerLnb != NULL) { Status s = mTunerLnb->sendDiseqcMessage(diseqcMessage); return TunerClient::getServiceSpecificErrorCode(s); } if (mLnb != NULL) { return mLnb->sendDiseqcMessage(diseqcMessage); Loading @@ -97,7 +108,10 @@ Result LnbClient::sendDiseqcMessage(vector<uint8_t> diseqcMessage) { } Result LnbClient::close() { // TODO: pending aidl interface if (mTunerLnb != NULL) { Status s = mTunerLnb->close(); return TunerClient::getServiceSpecificErrorCode(s); } if (mLnb != NULL) { return mLnb->close(); Loading Loading @@ -125,6 +139,25 @@ Return<void> HidlLnbCallback::onDiseqcMessage(const hidl_vec<uint8_t>& diseqcMes return Void(); } /////////////// LnbClient Helper Methods /////////////////////// /////////////// TunerLnbCallback /////////////////////// TunerLnbCallback::TunerLnbCallback(sp<LnbClientCallback> lnbClientCallback) : mLnbClientCallback(lnbClientCallback) {} Status TunerLnbCallback::onEvent(int lnbEventType) { if (mLnbClientCallback != NULL) { mLnbClientCallback->onEvent(static_cast<LnbEventType>(lnbEventType)); return Status::ok(); } return Status::fromServiceSpecificError(static_cast<int32_t>(Result::INVALID_STATE)); } Status TunerLnbCallback::onDiseqcMessage(const vector<uint8_t>& diseqcMessage) { if (mLnbClientCallback != NULL) { hidl_vec<uint8_t> msg(begin(diseqcMessage), end(diseqcMessage)); mLnbClientCallback->onDiseqcMessage(msg); return Status::ok(); } return Status::fromServiceSpecificError(static_cast<int32_t>(Result::INVALID_STATE)); } } // namespace android media/jni/tuner/LnbClient.h +12 −10 Original line number Diff line number Diff line Loading @@ -17,14 +17,18 @@ #ifndef _ANDROID_MEDIA_TV_LNB_CLIENT_H_ #define _ANDROID_MEDIA_TV_LNB_CLIENT_H_ //#include <aidl/android/media/tv/tuner/ITunerLnb.h> #include <aidl/android/media/tv/tuner/BnTunerLnbCallback.h> #include <aidl/android/media/tv/tuner/ITunerLnb.h> #include <android/hardware/tv/tuner/1.0/ILnb.h> #include <android/hardware/tv/tuner/1.0/ILnbCallback.h> #include <android/hardware/tv/tuner/1.1/types.h> #include "LnbClientCallback.h" //using ::aidl::android::media::tv::tuner::ITunerLnb; using Status = ::ndk::ScopedAStatus; using ::aidl::android::media::tv::tuner::BnTunerLnbCallback; using ::aidl::android::media::tv::tuner::ITunerLnb; using ::android::hardware::Return; using ::android::hardware::Void; Loading @@ -42,17 +46,17 @@ using namespace std; namespace android { // TODO: pending aidl interface /*class TunerLnbCallback : public BnTunerLnbCallback { class TunerLnbCallback : public BnTunerLnbCallback { public: TunerLnbCallback(sp<LnbClientCallback> lnbClientCallback); Status onEvent(int lnbEventType); Status onDiseqcMessage(vector<uint8_t> diseqcMessage); Status onDiseqcMessage(const vector<uint8_t>& diseqcMessage); private: sp<LnbClientCallback> mLnbClientCallback; };*/ }; struct HidlLnbCallback : public ILnbCallback { Loading @@ -68,8 +72,7 @@ private: struct LnbClient : public RefBase { public: // TODO: add TunerLnb as parameter. LnbClient(); LnbClient(shared_ptr<ITunerLnb> tunerLnb); ~LnbClient(); // TODO: remove after migration to Tuner Service is done. Loading Loading @@ -114,8 +117,7 @@ private: * An AIDL Tuner Lnb Singleton assigned at the first time the Tuner Client * opens an Lnb. Default null when lnb is not opened. */ // TODO: pending on aidl interface //shared_ptr<ITunerLnb> mTunerLnb; shared_ptr<ITunerLnb> mTunerLnb; /** * A Lnb HAL interface that is ready before migrating to the TunerLnb. Loading @@ -124,7 +126,7 @@ private: */ sp<ILnb> mLnb; //shared_ptr<TunerLnbCallback> mAidlCallback; shared_ptr<TunerLnbCallback> mAidlCallback; sp<HidlLnbCallback> mHidlCallback; LnbId mId; Loading media/jni/tuner/TunerClient.cpp +7 −7 Original line number Diff line number Diff line Loading @@ -229,15 +229,15 @@ sp<DescramblerClient> TunerClient::openDescrambler(int /*descramblerHandle*/) { sp<LnbClient> TunerClient::openLnb(int lnbHandle) { if (mTunerService != NULL) { // TODO: handle error code /*shared_ptr<ITunerLnb> tunerLnb; mTunerService->openLnb(demuxHandle, &tunerLnb); return new LnbClient(tunerLnb);*/ shared_ptr<ITunerLnb> tunerLnb; mTunerService->openLnb(lnbHandle, &tunerLnb); return new LnbClient(tunerLnb); } if (mTuner != NULL) { int id = getResourceIdFromHandle(lnbHandle, LNB); // TODO: pending aidl interface sp<LnbClient> lnbClient = new LnbClient(); sp<LnbClient> lnbClient = new LnbClient(NULL); sp<ILnb> hidlLnb = openHidlLnbById(id); if (hidlLnb != NULL) { lnbClient->setHidlLnb(hidlLnb); Loading @@ -252,14 +252,14 @@ sp<LnbClient> TunerClient::openLnb(int lnbHandle) { sp<LnbClient> TunerClient::openLnbByName(string lnbName) { if (mTunerService != NULL) { // TODO: handle error code /*shared_ptr<ITunerLnb> tunerLnb; shared_ptr<ITunerLnb> tunerLnb; mTunerService->openLnbByName(lnbName, &tunerLnb); return new LnbClient(tunerLnb);*/ return new LnbClient(tunerLnb); } if (mTuner != NULL) { // TODO: pending aidl interface sp<LnbClient> lnbClient = new LnbClient(); sp<LnbClient> lnbClient = new LnbClient(NULL); LnbId id; sp<ILnb> hidlLnb = openHidlLnbByName(lnbName, id); if (hidlLnb != NULL) { Loading media/jni/tuner/TunerClient.h +12 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ #include <aidl/android/media/tv/tunerresourcemanager/ITunerResourceManager.h> #include <aidl/android/media/tv/tuner/ITunerService.h> #include <aidl/android/media/tv/tuner/TunerFrontendInfo.h> #include <android/binder_parcel_utils.h> #include <android/hardware/tv/tuner/1.1/ITuner.h> #include <android/hardware/tv/tuner/1.1/types.h> Loading @@ -28,6 +29,8 @@ #include "DescramblerClient.h" #include "LnbClient.h" using Status = ::ndk::ScopedAStatus; using ::aidl::android::media::tv::tuner::ITunerService; using ::aidl::android::media::tv::tuner::TunerFrontendInfo; using ::aidl::android::media::tv::tunerresourcemanager::ITunerResourceManager; Loading Loading @@ -132,6 +135,15 @@ public: */ int getHalTunerVersion() { return mTunerVersion; } static Result getServiceSpecificErrorCode(Status& s) { if (s.getExceptionCode() == EX_SERVICE_SPECIFIC) { return static_cast<Result>(s.getServiceSpecificError()); } else if (s.isOk()) { return Result::SUCCESS; } return Result::UNKNOWN_ERROR; } private: sp<ITuner> getHidlTuner(); sp<IFrontend> openHidlFrontendById(int id); Loading Loading
media/jni/tuner/LnbClient.cpp +48 −15 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ #include <android-base/logging.h> #include <utils/Log.h> #include "TunerClient.h" #include "LnbClient.h" using ::android::hardware::tv::tuner::V1_0::Result; Loading @@ -27,14 +28,13 @@ namespace android { /////////////// LnbClient /////////////////////// // TODO: pending aidl interface LnbClient::LnbClient() { //mTunerLnb = tunerLnb; LnbClient::LnbClient(shared_ptr<ITunerLnb> tunerLnb) { mTunerLnb = tunerLnb; mId = -1; } LnbClient::~LnbClient() { //mTunerLnb = NULL; mTunerLnb = NULL; mLnb = NULL; mId = -1; } Loading @@ -45,19 +45,21 @@ void LnbClient::setHidlLnb(sp<ILnb> lnb) { } Result LnbClient::setCallback(sp<LnbClientCallback> cb) { // TODO: pending aidl interface /*if (mTunerFrontend != NULL) { if (mTunerLnb != NULL) { mAidlCallback = ::ndk::SharedRefBase::make<TunerLnbCallback>(cb); mTunerLnb->setCallback(mAidlCallback); return Result::SUCCESS; }*/ Status s = mTunerLnb->setCallback(mAidlCallback); return TunerClient::getServiceSpecificErrorCode(s); } mHidlCallback = new HidlLnbCallback(cb); return mLnb->setCallback(mHidlCallback); } Result LnbClient::setVoltage(LnbVoltage voltage) { // TODO: pending aidl interface if (mTunerLnb != NULL) { Status s = mTunerLnb->setVoltage((int)voltage); return TunerClient::getServiceSpecificErrorCode(s); } if (mLnb != NULL) { return mLnb->setVoltage(voltage); Loading @@ -67,7 +69,10 @@ Result LnbClient::setVoltage(LnbVoltage voltage) { } Result LnbClient::setTone(LnbTone tone) { // TODO: pending aidl interface if (mTunerLnb != NULL) { Status s = mTunerLnb->setTone((int)tone); return TunerClient::getServiceSpecificErrorCode(s); } if (mLnb != NULL) { return mLnb->setTone(tone); Loading @@ -77,7 +82,10 @@ Result LnbClient::setTone(LnbTone tone) { } Result LnbClient::setSatellitePosition(LnbPosition position) { // TODO: pending aidl interface if (mTunerLnb != NULL) { Status s = mTunerLnb->setSatellitePosition((int)position); return TunerClient::getServiceSpecificErrorCode(s); } if (mLnb != NULL) { return mLnb->setSatellitePosition(position); Loading @@ -87,7 +95,10 @@ Result LnbClient::setSatellitePosition(LnbPosition position) { } Result LnbClient::sendDiseqcMessage(vector<uint8_t> diseqcMessage) { // TODO: pending aidl interface if (mTunerLnb != NULL) { Status s = mTunerLnb->sendDiseqcMessage(diseqcMessage); return TunerClient::getServiceSpecificErrorCode(s); } if (mLnb != NULL) { return mLnb->sendDiseqcMessage(diseqcMessage); Loading @@ -97,7 +108,10 @@ Result LnbClient::sendDiseqcMessage(vector<uint8_t> diseqcMessage) { } Result LnbClient::close() { // TODO: pending aidl interface if (mTunerLnb != NULL) { Status s = mTunerLnb->close(); return TunerClient::getServiceSpecificErrorCode(s); } if (mLnb != NULL) { return mLnb->close(); Loading Loading @@ -125,6 +139,25 @@ Return<void> HidlLnbCallback::onDiseqcMessage(const hidl_vec<uint8_t>& diseqcMes return Void(); } /////////////// LnbClient Helper Methods /////////////////////// /////////////// TunerLnbCallback /////////////////////// TunerLnbCallback::TunerLnbCallback(sp<LnbClientCallback> lnbClientCallback) : mLnbClientCallback(lnbClientCallback) {} Status TunerLnbCallback::onEvent(int lnbEventType) { if (mLnbClientCallback != NULL) { mLnbClientCallback->onEvent(static_cast<LnbEventType>(lnbEventType)); return Status::ok(); } return Status::fromServiceSpecificError(static_cast<int32_t>(Result::INVALID_STATE)); } Status TunerLnbCallback::onDiseqcMessage(const vector<uint8_t>& diseqcMessage) { if (mLnbClientCallback != NULL) { hidl_vec<uint8_t> msg(begin(diseqcMessage), end(diseqcMessage)); mLnbClientCallback->onDiseqcMessage(msg); return Status::ok(); } return Status::fromServiceSpecificError(static_cast<int32_t>(Result::INVALID_STATE)); } } // namespace android
media/jni/tuner/LnbClient.h +12 −10 Original line number Diff line number Diff line Loading @@ -17,14 +17,18 @@ #ifndef _ANDROID_MEDIA_TV_LNB_CLIENT_H_ #define _ANDROID_MEDIA_TV_LNB_CLIENT_H_ //#include <aidl/android/media/tv/tuner/ITunerLnb.h> #include <aidl/android/media/tv/tuner/BnTunerLnbCallback.h> #include <aidl/android/media/tv/tuner/ITunerLnb.h> #include <android/hardware/tv/tuner/1.0/ILnb.h> #include <android/hardware/tv/tuner/1.0/ILnbCallback.h> #include <android/hardware/tv/tuner/1.1/types.h> #include "LnbClientCallback.h" //using ::aidl::android::media::tv::tuner::ITunerLnb; using Status = ::ndk::ScopedAStatus; using ::aidl::android::media::tv::tuner::BnTunerLnbCallback; using ::aidl::android::media::tv::tuner::ITunerLnb; using ::android::hardware::Return; using ::android::hardware::Void; Loading @@ -42,17 +46,17 @@ using namespace std; namespace android { // TODO: pending aidl interface /*class TunerLnbCallback : public BnTunerLnbCallback { class TunerLnbCallback : public BnTunerLnbCallback { public: TunerLnbCallback(sp<LnbClientCallback> lnbClientCallback); Status onEvent(int lnbEventType); Status onDiseqcMessage(vector<uint8_t> diseqcMessage); Status onDiseqcMessage(const vector<uint8_t>& diseqcMessage); private: sp<LnbClientCallback> mLnbClientCallback; };*/ }; struct HidlLnbCallback : public ILnbCallback { Loading @@ -68,8 +72,7 @@ private: struct LnbClient : public RefBase { public: // TODO: add TunerLnb as parameter. LnbClient(); LnbClient(shared_ptr<ITunerLnb> tunerLnb); ~LnbClient(); // TODO: remove after migration to Tuner Service is done. Loading Loading @@ -114,8 +117,7 @@ private: * An AIDL Tuner Lnb Singleton assigned at the first time the Tuner Client * opens an Lnb. Default null when lnb is not opened. */ // TODO: pending on aidl interface //shared_ptr<ITunerLnb> mTunerLnb; shared_ptr<ITunerLnb> mTunerLnb; /** * A Lnb HAL interface that is ready before migrating to the TunerLnb. Loading @@ -124,7 +126,7 @@ private: */ sp<ILnb> mLnb; //shared_ptr<TunerLnbCallback> mAidlCallback; shared_ptr<TunerLnbCallback> mAidlCallback; sp<HidlLnbCallback> mHidlCallback; LnbId mId; Loading
media/jni/tuner/TunerClient.cpp +7 −7 Original line number Diff line number Diff line Loading @@ -229,15 +229,15 @@ sp<DescramblerClient> TunerClient::openDescrambler(int /*descramblerHandle*/) { sp<LnbClient> TunerClient::openLnb(int lnbHandle) { if (mTunerService != NULL) { // TODO: handle error code /*shared_ptr<ITunerLnb> tunerLnb; mTunerService->openLnb(demuxHandle, &tunerLnb); return new LnbClient(tunerLnb);*/ shared_ptr<ITunerLnb> tunerLnb; mTunerService->openLnb(lnbHandle, &tunerLnb); return new LnbClient(tunerLnb); } if (mTuner != NULL) { int id = getResourceIdFromHandle(lnbHandle, LNB); // TODO: pending aidl interface sp<LnbClient> lnbClient = new LnbClient(); sp<LnbClient> lnbClient = new LnbClient(NULL); sp<ILnb> hidlLnb = openHidlLnbById(id); if (hidlLnb != NULL) { lnbClient->setHidlLnb(hidlLnb); Loading @@ -252,14 +252,14 @@ sp<LnbClient> TunerClient::openLnb(int lnbHandle) { sp<LnbClient> TunerClient::openLnbByName(string lnbName) { if (mTunerService != NULL) { // TODO: handle error code /*shared_ptr<ITunerLnb> tunerLnb; shared_ptr<ITunerLnb> tunerLnb; mTunerService->openLnbByName(lnbName, &tunerLnb); return new LnbClient(tunerLnb);*/ return new LnbClient(tunerLnb); } if (mTuner != NULL) { // TODO: pending aidl interface sp<LnbClient> lnbClient = new LnbClient(); sp<LnbClient> lnbClient = new LnbClient(NULL); LnbId id; sp<ILnb> hidlLnb = openHidlLnbByName(lnbName, id); if (hidlLnb != NULL) { Loading
media/jni/tuner/TunerClient.h +12 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ #include <aidl/android/media/tv/tunerresourcemanager/ITunerResourceManager.h> #include <aidl/android/media/tv/tuner/ITunerService.h> #include <aidl/android/media/tv/tuner/TunerFrontendInfo.h> #include <android/binder_parcel_utils.h> #include <android/hardware/tv/tuner/1.1/ITuner.h> #include <android/hardware/tv/tuner/1.1/types.h> Loading @@ -28,6 +29,8 @@ #include "DescramblerClient.h" #include "LnbClient.h" using Status = ::ndk::ScopedAStatus; using ::aidl::android::media::tv::tuner::ITunerService; using ::aidl::android::media::tv::tuner::TunerFrontendInfo; using ::aidl::android::media::tv::tunerresourcemanager::ITunerResourceManager; Loading Loading @@ -132,6 +135,15 @@ public: */ int getHalTunerVersion() { return mTunerVersion; } static Result getServiceSpecificErrorCode(Status& s) { if (s.getExceptionCode() == EX_SERVICE_SPECIFIC) { return static_cast<Result>(s.getServiceSpecificError()); } else if (s.isOk()) { return Result::SUCCESS; } return Result::UNKNOWN_ERROR; } private: sp<ITuner> getHidlTuner(); sp<IFrontend> openHidlFrontendById(int id); Loading