Merge "Add get64BitId in TunerFilter"
diff --git a/services/tuner/TunerFilter.cpp b/services/tuner/TunerFilter.cpp
index 5a2f404..18a84a6 100644
--- a/services/tuner/TunerFilter.cpp
+++ b/services/tuner/TunerFilter.cpp
@@ -24,11 +24,13 @@
 
 TunerFilter::TunerFilter(sp<IFilter> filter, sp<IFilterCallback> callback) {
     mFilter = filter;
+    mFilter_1_1 = ::android::hardware::tv::tuner::V1_1::IFilter::castFrom(filter);
     mFilterCallback = callback;
 }
 
 TunerFilter::~TunerFilter() {
     mFilter = nullptr;
+    mFilter_1_1 = nullptr;
     mFilterCallback = nullptr;
 }
 
@@ -50,6 +52,24 @@
     return Status::ok();
 }
 
+Status TunerFilter::getId64Bit(int64_t* _aidl_return) {
+    if (mFilter_1_1 == nullptr) {
+        ALOGE("IFilter_1_1 is not initialized");
+        return Status::fromServiceSpecificError(static_cast<int32_t>(Result::UNAVAILABLE));
+    }
+
+    Result res;
+    mFilter_1_1->getId64Bit([&](Result r, uint64_t filterId) {
+        res = r;
+        mId64Bit = filterId;
+    });
+    if (res != Result::SUCCESS) {
+        return ::ndk::ScopedAStatus::fromServiceSpecificError(static_cast<int32_t>(res));
+    }
+    *_aidl_return = mId64Bit;
+    return Status::ok();
+}
+
 /////////////// FilterCallback ///////////////////////
 
 Return<void> TunerFilter::FilterCallback::onFilterStatus(DemuxFilterStatus status) {
diff --git a/services/tuner/TunerFilter.h b/services/tuner/TunerFilter.h
index 54c618e..e7e436a 100644
--- a/services/tuner/TunerFilter.h
+++ b/services/tuner/TunerFilter.h
@@ -19,6 +19,7 @@
 
 #include <aidl/android/media/tv/tuner/BnTunerFilter.h>
 #include <aidl/android/media/tv/tuner/ITunerFilterCallback.h>
+#include <android/hardware/tv/tuner/1.1/IFilter.h>
 #include <android/hardware/tv/tuner/1.0/ITuner.h>
 #include <media/stagefright/foundation/ADebug.h>
 
@@ -41,6 +42,7 @@
     TunerFilter(sp<IFilter> filter, sp<IFilterCallback> callback);
     virtual ~TunerFilter();
     Status getId(int32_t* _aidl_return) override;
+    Status getId64Bit(int64_t* _aidl_return) override;
 
     struct FilterCallback : public IFilterCallback {
         FilterCallback(const std::shared_ptr<ITunerFilterCallback> tunerFilterCallback)
@@ -54,8 +56,10 @@
 
 private:
     sp<IFilter> mFilter;
+    sp<::android::hardware::tv::tuner::V1_1::IFilter> mFilter_1_1;
     sp<IFilterCallback> mFilterCallback;
     int32_t mId;
+    int64_t mId64Bit;
 };
 
 } // namespace android
diff --git a/services/tuner/aidl/android/media/tv/tuner/ITunerFilter.aidl b/services/tuner/aidl/android/media/tv/tuner/ITunerFilter.aidl
index 24c6289..8855725 100644
--- a/services/tuner/aidl/android/media/tv/tuner/ITunerFilter.aidl
+++ b/services/tuner/aidl/android/media/tv/tuner/ITunerFilter.aidl
@@ -26,4 +26,9 @@
      * Get the filter Id.
      */
     int getId();
+
+    /**
+     * Get the 64-bit filter Id.
+     */
+    long getId64Bit();
 }