Update Tuner Resources in Tuner Service
Test: atest android.media.tv.tuner.cts
Bug: 159067322
Change-Id: Ieff22f0fe50c0515ca2545485d62defaaa47b88d
diff --git a/services/tuner/TunerService.h b/services/tuner/TunerService.h
index 856b54a..942d409 100644
--- a/services/tuner/TunerService.h
+++ b/services/tuner/TunerService.h
@@ -17,6 +17,7 @@
#ifndef ANDROID_MEDIA_TUNERSERVICE_H
#define ANDROID_MEDIA_TUNERSERVICE_H
+#include <aidl/android/media/tv/tunerresourcemanager/ITunerResourceManager.h>
#include <aidl/android/media/tv/tuner/BnTunerService.h>
#include <android/hardware/tv/tuner/1.0/ITuner.h>
#include <fmq/AidlMessageQueue.h>
@@ -31,10 +32,12 @@
using ::aidl::android::media::tv::tuner::ITunerFrontend;
using ::aidl::android::media::tv::tuner::ITunerLnb;
using ::aidl::android::media::tv::tuner::TunerFrontendInfo;
+using ::aidl::android::media::tv::tunerresourcemanager::ITunerResourceManager;
using ::android::hardware::details::logError;
-using ::android::hardware::EventFlag;
+using ::android::hardware::hidl_vec;
using ::android::hardware::kSynchronizedReadWrite;
+using ::android::hardware::EventFlag;
using ::android::hardware::MessageQueue;
using ::android::hardware::MQDescriptorSync;
using ::android::hardware::Return;
@@ -94,7 +97,14 @@
return (resourceHandle & 0x00ff0000) >> 16;
}
- Status getFrontendIds(vector<int32_t>* ids, int32_t* _aidl_return) override;
+ int getResourceHandleFromId(int id, int resourceType) {
+ // TODO: build up randomly generated id to handle mapping
+ return (resourceType & 0x000000ff) << 24
+ | (id << 16)
+ | (mResourceRequestCount++ & 0xffff);
+ }
+
+ Status getFrontendIds(vector<int32_t>* ids) override;
Status getFrontendInfo(int32_t frontendHandle, TunerFrontendInfo* _aidl_return) override;
Status openFrontend(
int32_t frontendHandle, shared_ptr<ITunerFrontend>* _aidl_return) override;
@@ -103,19 +113,30 @@
Status openLnb(int lnbHandle, shared_ptr<ITunerLnb>* _aidl_return) override;
Status openLnbByName(const string& lnbName, shared_ptr<ITunerLnb>* _aidl_return) override;
Status openDemux(int32_t demuxHandle, std::shared_ptr<ITunerDemux>* _aidl_return) override;
+ Status updateTunerResources() override;
private:
bool getITuner();
Result configFilter();
+ void updateFrontendResources();
+ void updateLnbResources();
+ Result getHidlFrontendIds(hidl_vec<FrontendId>& ids);
+ Result getHidlFrontendInfo(int id, FrontendInfo& info);
+ vector<int> getLnbHandles();
+
+ TunerFrontendInfo convertToAidlFrontendInfo(FrontendInfo halInfo);
+
sp<ITuner> mTuner;
- std::shared_ptr<ITunerDemux> mDemux;
sp<IFilter> mFilter;
+
+ shared_ptr<ITunerResourceManager> mTunerResourceManager;
+ int mResourceRequestCount = 0;
+
AidlMessageQueue* mAidlMq;
MQDescriptorSync<uint8_t> mFilterMQDesc;
AidlMQDesc mAidlMQDesc;
EventFlag* mEventFlag;
- TunerFrontendInfo convertToAidlFrontendInfo(FrontendInfo halInfo);
};
} // namespace android