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