Make the default tuner HAL to be a dynamic AIDL
Add lazy tuner service.
Refine code to allow Tuner reference count to be 0 when no one uses it.
Bug: 236002754
Test: atest VtsHalTvTunerTargetTest on both lazy and normal HALs
Test: atest android.media.tv.tuner.cts on both lazy and normal HALs
Change-Id: I0cc69fe8ffd79a66db00cb72d212c222130629b5
diff --git a/tv/tuner/aidl/default/service.cpp b/tv/tuner/aidl/default/service.cpp
index ac8d779..f980f4a 100644
--- a/tv/tuner/aidl/default/service.cpp
+++ b/tv/tuner/aidl/default/service.cpp
@@ -30,8 +30,15 @@
std::shared_ptr<Tuner> tuner = ndk::SharedRefBase::make<Tuner>();
tuner->init();
+ binder_status_t status;
const std::string instance = std::string() + Tuner::descriptor + "/default";
- binder_status_t status = AServiceManager_addService(tuner->asBinder().get(), instance.c_str());
+#ifdef LAZY_HAL
+ ALOGD("Start as a lazy HAL");
+ status = AServiceManager_registerLazyService(tuner->asBinder().get(), instance.c_str());
+#else
+ ALOGD("Start as a normal HAL");
+ status = AServiceManager_addService(tuner->asBinder().get(), instance.c_str());
+#endif
CHECK(status == STATUS_OK);
ABinderProcess_joinThreadPool();