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