Add aidl interfaces for Frontend Settings and Frontend Callbacks
Test: make mediatuner
Bug: 172079283
Change-Id: I7c23b04872346f9c517d101321d2e915a3f2c47d
diff --git a/services/tuner/TunerService.cpp b/services/tuner/TunerService.cpp
index 77250aa..2b3de17 100644
--- a/services/tuner/TunerService.cpp
+++ b/services/tuner/TunerService.cpp
@@ -18,6 +18,7 @@
#include <android/binder_manager.h>
#include <utils/Log.h>
+#include "TunerFrontend.h"
#include "TunerService.h"
using ::aidl::android::media::tv::tuner::TunerFrontendAnalogCapabilities;
@@ -46,17 +47,17 @@
std::shared_ptr<TunerService> service =
::ndk::SharedRefBase::make<TunerService>();
AServiceManager_addService(service->asBinder().get(), getServiceName());
+ mTuner = ITuner::getService();
+ if (mTuner == nullptr) {
+ ALOGE("Failed to get ITuner service.");
+ }
}
Status TunerService::getFrontendIds(std::vector<int32_t>* ids, int32_t* /* _aidl_return */) {
if (mTuner == nullptr) {
- // TODO: create a method for init.
- mTuner = ITuner::getService();
- if (mTuner == nullptr) {
- ALOGE("Failed to get ITuner service.");
- return ::ndk::ScopedAStatus::fromServiceSpecificError(
- static_cast<int32_t>(Result::UNAVAILABLE));
- }
+ ALOGE("ITuner service is not init.");
+ return ::ndk::ScopedAStatus::fromServiceSpecificError(
+ static_cast<int32_t>(Result::UNAVAILABLE));
}
hidl_vec<FrontendId> feIds;
Result res;
@@ -70,19 +71,15 @@
ids->resize(feIds.size());
std::copy(feIds.begin(), feIds.end(), ids->begin());
- return ::ndk::ScopedAStatus::ok();
+ return Status::ok();
}
Status TunerService::getFrontendInfo(
int32_t frontendHandle, TunerServiceFrontendInfo* _aidl_return) {
if (mTuner == nullptr) {
- // TODO: create a method for init.
- mTuner = ITuner::getService();
- if (mTuner == nullptr) {
- ALOGE("Failed to get ITuner service.");
- return ::ndk::ScopedAStatus::fromServiceSpecificError(
- static_cast<int32_t>(Result::UNAVAILABLE));
- }
+ ALOGE("ITuner service is not init.");
+ return ::ndk::ScopedAStatus::fromServiceSpecificError(
+ static_cast<int32_t>(Result::UNAVAILABLE));
}
Result res;
@@ -93,12 +90,24 @@
res = r;
});
if (res != Result::SUCCESS) {
- return ::ndk::ScopedAStatus::fromServiceSpecificError(static_cast<int32_t>(res));
+ return Status::fromServiceSpecificError(static_cast<int32_t>(res));
}
TunerServiceFrontendInfo tunerInfo = convertToAidlFrontendInfo(feId, info);
*_aidl_return = tunerInfo;
- return ::ndk::ScopedAStatus::ok();
+ return Status::ok();
+}
+
+Status TunerService::openFrontend(
+ int32_t frontendHandle, std::shared_ptr<ITunerFrontend>* _aidl_return) {
+ if (mTuner == nullptr) {
+ ALOGE("ITuner service is not init.");
+ return ::ndk::ScopedAStatus::fromServiceSpecificError(
+ static_cast<int32_t>(Result::UNAVAILABLE));
+ }
+
+ *_aidl_return = ::ndk::SharedRefBase::make<TunerFrontend>(mTuner, frontendHandle);
+ return Status::ok();
}
TunerServiceFrontendInfo TunerService::convertToAidlFrontendInfo(int feId, FrontendInfo halInfo) {
@@ -212,8 +221,4 @@
info.caps = caps;
return info;
}
-
-int TunerService::getResourceIdFromHandle(int resourceHandle) {
- return (resourceHandle & 0x00ff0000) >> 16;
-}
} // namespace android