Remove Lnb updating related implementation from Tuner JNI/java

Note: This was part of ag/13255478. Making it a separate CL can break
the dependency of the Tuner client changes on the frameworks/base
changes that require owner review from external teams.

Test: make
Bug: 174095851
Change-Id: Id40014b2ccd95b944e465b79571e113d8ed1a254
diff --git a/media/java/android/media/tv/tuner/Tuner.java b/media/java/android/media/tv/tuner/Tuner.java
index 02b6571..e449fd2 100644
--- a/media/java/android/media/tv/tuner/Tuner.java
+++ b/media/java/android/media/tv/tuner/Tuner.java
@@ -351,7 +351,6 @@
         mUserId = ActivityManager.getCurrentUser();
 
         setFrontendInfoList();
-        setLnbIds();
     }
 
     private void setFrontendInfoList() {
@@ -405,14 +404,6 @@
         return nativeGetFrontendIds();
     }
 
-    private void setLnbIds() {
-        int[] ids = nativeGetLnbIds();
-        if (ids == null) {
-            return;
-        }
-        mTunerResourceManager.setLnbInfoList(ids);
-    }
-
     /**
      * Sets the listener for resource lost.
      *
@@ -574,7 +565,6 @@
     private native Filter nativeOpenFilter(int type, int subType, long bufferSize);
     private native TimeFilter nativeOpenTimeFilter();
 
-    private native int[] nativeGetLnbIds();
     private native Lnb nativeOpenLnbByHandle(int handle);
     private native Lnb nativeOpenLnbByName(String name);
 
diff --git a/media/jni/android_media_tv_Tuner.cpp b/media/jni/android_media_tv_Tuner.cpp
index 602364e..f9a84f7 100644
--- a/media/jni/android_media_tv_Tuner.cpp
+++ b/media/jni/android_media_tv_Tuner.cpp
@@ -1470,28 +1470,6 @@
             maxSymbolRate, acquireRange, exclusiveGroupId, statusCaps, jcaps);
 }
 
-jintArray JTuner::getLnbIds() {
-    ALOGD("JTuner::getLnbIds()");
-    Result res;
-    hidl_vec<LnbId> lnbIds;
-    mTuner->getLnbIds([&](Result r, const hidl_vec<LnbId>& ids) {
-        lnbIds = ids;
-        res = r;
-    });
-    if (res != Result::SUCCESS || lnbIds.size() == 0) {
-        ALOGW("Lnb isn't available");
-        return NULL;
-    }
-
-    mLnbIds = lnbIds;
-    JNIEnv *env = AndroidRuntime::getJNIEnv();
-
-    jintArray ids = env->NewIntArray(mLnbIds.size());
-    env->SetIntArrayRegion(ids, 0, mLnbIds.size(), reinterpret_cast<jint*>(&mLnbIds[0]));
-
-    return ids;
-}
-
 jobject JTuner::openLnbById(int id) {
     sp<ILnb> iLnbSp;
     Result r;
@@ -3430,11 +3408,6 @@
     return tuner->getFrontendInfo(id);
 }
 
-static jintArray android_media_tv_Tuner_get_lnb_ids(JNIEnv *env, jobject thiz) {
-    sp<JTuner> tuner = getTuner(env, thiz);
-    return tuner->getLnbIds();
-}
-
 static jobject android_media_tv_Tuner_open_lnb_by_handle(JNIEnv *env, jobject thiz, jint handle) {
     sp<JTuner> tuner = getTuner(env, thiz);
     uint32_t id = getResourceIdFromHandle(handle);
@@ -4480,7 +4453,6 @@
             (void *)android_media_tv_Tuner_open_filter },
     { "nativeOpenTimeFilter", "()Landroid/media/tv/tuner/filter/TimeFilter;",
             (void *)android_media_tv_Tuner_open_time_filter },
-    { "nativeGetLnbIds", "()[I", (void *)android_media_tv_Tuner_get_lnb_ids },
     { "nativeOpenLnbByHandle", "(I)Landroid/media/tv/tuner/Lnb;",
             (void *)android_media_tv_Tuner_open_lnb_by_handle },
     { "nativeOpenLnbByName", "(Ljava/lang/String;)Landroid/media/tv/tuner/Lnb;",
diff --git a/media/jni/android_media_tv_Tuner.h b/media/jni/android_media_tv_Tuner.h
index 9dc4ddf..8fffb2a 100644
--- a/media/jni/android_media_tv_Tuner.h
+++ b/media/jni/android_media_tv_Tuner.h
@@ -217,7 +217,6 @@
     int stopScan();
     int setLnb(int id);
     int setLna(bool enable);
-    jintArray getLnbIds();
     jobject openLnbById(int id);
     jobject openLnbByName(jstring name);
     jobject openFilter(DemuxFilterType type, int bufferSize);
@@ -247,7 +246,6 @@
     sp<::android::hardware::tv::tuner::V1_1::IFrontend> mFe_1_1;
     sp<FrontendClient> mFeClient;
     int mFeId;
-    hidl_vec<LnbId> mLnbIds;
     // TODO: remove after migrate to client lib
     sp<ILnb> mLnb;
     // TODO: remove after migrate to client lib
diff --git a/media/jni/tuner/FrontendClient.cpp b/media/jni/tuner/FrontendClient.cpp
index 44b46f0..b6225cf 100644
--- a/media/jni/tuner/FrontendClient.cpp
+++ b/media/jni/tuner/FrontendClient.cpp
@@ -27,11 +27,11 @@
 
 /////////////// FrontendClient ///////////////////////
 
-FrontendClient::FrontendClient(shared_ptr<ITunerFrontend> tunerFrontend, int frontendHandle) {
+FrontendClient::FrontendClient(shared_ptr<ITunerFrontend> tunerFrontend, int id) {
     mTunerFrontend = tunerFrontend;
     mAidlCallback = NULL;
     mHidlCallback = NULL;
-    mFrontendHandle = frontendHandle;
+    mId = id;
 }
 
 FrontendClient::~FrontendClient() {
@@ -40,7 +40,7 @@
     mFrontend_1_1 = NULL;
     mAidlCallback = NULL;
     mHidlCallback = NULL;
-    mFrontendHandle = -1;
+    mId = -1;
 }
 
 Result FrontendClient::setCallback(sp<FrontendClientCallback> frontendClientCallback) {
@@ -123,7 +123,7 @@
 }
 
 int FrontendClient::getId() {
-    return getResourceIdFromHandle(mFrontendHandle);
+    return mId;
 }
 
 /////////////// TunerFrontendCallback ///////////////////////
diff --git a/media/jni/tuner/FrontendClient.h b/media/jni/tuner/FrontendClient.h
index 7db572b..265e14f 100644
--- a/media/jni/tuner/FrontendClient.h
+++ b/media/jni/tuner/FrontendClient.h
@@ -105,7 +105,7 @@
 struct FrontendClient : public RefBase {
 
 public:
-    FrontendClient(shared_ptr<ITunerFrontend> tunerFrontend, int frontendHandle);
+    FrontendClient(shared_ptr<ITunerFrontend> tunerFrontend, int id);
     ~FrontendClient();
 
     /**
@@ -135,10 +135,6 @@
 
     int getId();
 
-    static int getResourceIdFromHandle(int handle) {
-        return (handle & 0x00ff0000) >> 16;
-    }
-
 private:
     /**
      * An AIDL Tuner Frontend Singleton assigned at the first time when the Tuner Client
@@ -163,7 +159,7 @@
     shared_ptr<TunerFrontendCallback> mAidlCallback;
     sp<HidlFrontendCallback> mHidlCallback;
 
-    int mFrontendHandle;
+    int mId;
 };
 }  // namespace android
 
diff --git a/media/jni/tuner/TunerClient.cpp b/media/jni/tuner/TunerClient.cpp
index bd18c707..649828f 100644
--- a/media/jni/tuner/TunerClient.cpp
+++ b/media/jni/tuner/TunerClient.cpp
@@ -99,9 +99,10 @@
     }
 
     if (mTuner != NULL) {
-        sp<IFrontend> hidlFrontend = openHidlFrontendByHandle(frontendHandle);
+        int id = getResourceIdFromHandle(frontendHandle, FRONTEND);
+        sp<IFrontend> hidlFrontend = openHidlFrontendById(id);
         if (hidlFrontend != NULL) {
-            sp<FrontendClient> frontendClient = new FrontendClient(NULL, frontendHandle);
+            sp<FrontendClient> frontendClient = new FrontendClient(NULL, id);
             frontendClient->setHidlFrontend(hidlFrontend);
             return frontendClient;
         }
@@ -193,10 +194,9 @@
      return mTuner;
 }
 
-sp<IFrontend> TunerClient::openHidlFrontendByHandle(int frontendHandle) {
+sp<IFrontend> TunerClient::openHidlFrontendById(int id) {
     sp<IFrontend> fe;
     Result res;
-    uint32_t id = getResourceIdFromHandle(frontendHandle);
     mTuner->openFrontendById(id, [&](Result r, const sp<IFrontend>& frontend) {
         fe = frontend;
         res = r;
@@ -246,4 +246,15 @@
 
     return hidlFrontendInfo;
 }
+
+int TunerClient::getResourceIdFromHandle(int handle, int /*resourceType*/) {
+    return (handle & 0x00ff0000) >> 16;
+}
+
+int TunerClient::getResourceHandleFromId(int id, int resourceType) {
+    // TODO: build up randomly generated id to handle mapping
+    return (resourceType & 0x000000ff) << 24
+            | (id << 16)
+            | (mResourceRequestCount++ & 0xffff);
+}
 }  // namespace android
diff --git a/media/jni/tuner/TunerClient.h b/media/jni/tuner/TunerClient.h
index 197b110..108293b 100644
--- a/media/jni/tuner/TunerClient.h
+++ b/media/jni/tuner/TunerClient.h
@@ -37,6 +37,13 @@
 
 namespace android {
 
+typedef enum {
+    FRONTEND,
+    LNB,
+    DEMUX,
+    DESCRAMBLER,
+} TunerResourceType;
+
 struct TunerClient : public RefBase {
 
 public:
@@ -95,9 +102,16 @@
      */
     int getHalTunerVersion() { return mTunerVersion; }
 
-    static int getResourceIdFromHandle(int handle) {
-        return (handle & 0x00ff0000) >> 16;
-    }
+private:
+    sp<ITuner> getHidlTuner();
+    sp<IFrontend> openHidlFrontendById(int id);
+    sp<IDemux> openHidlDemux();
+    Result getHidlFrontendInfo(int id, FrontendInfo& info);
+    FrontendInfo FrontendInfoAidlToHidl(TunerServiceFrontendInfo aidlFrontendInfo);
+
+    int getResourceIdFromHandle(int handle, int resourceType);
+
+    int getResourceHandleFromId(int id, int resourceType);
 
 private:
     /**
@@ -124,11 +138,7 @@
     // while the low 16 bits are the minor version. Default value is unknown version 0.
     static int mTunerVersion;
 
-    sp<ITuner> getHidlTuner();
-    sp<IFrontend> openHidlFrontendByHandle(int frontendHandle);
-    sp<IDemux> openHidlDemux();
-    Result getHidlFrontendInfo(int id, FrontendInfo& info);
-    FrontendInfo FrontendInfoAidlToHidl(TunerServiceFrontendInfo aidlFrontendInfo);
+    int mResourceRequestCount = 0;
 };
 }  // namespace android