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
This commit is contained in:
Amy Zhang
2021-01-12 11:25:27 -08:00
parent b1e9252d65
commit 210c26a974
7 changed files with 39 additions and 62 deletions

View File

@@ -351,7 +351,6 @@ public class Tuner implements AutoCloseable {
mUserId = ActivityManager.getCurrentUser();
setFrontendInfoList();
setLnbIds();
}
private void setFrontendInfoList() {
@@ -405,14 +404,6 @@ public class Tuner implements AutoCloseable {
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 @@ public class Tuner implements AutoCloseable {
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);

View File

@@ -1470,28 +1470,6 @@ jobject JTuner::getFrontendInfo(int id) {
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 @@ static jobject android_media_tv_Tuner_get_frontend_info(JNIEnv *env, jobject thi
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 @@ static const JNINativeMethod gTunerMethods[] = {
(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;",

View File

@@ -217,7 +217,6 @@ struct JTuner : public RefBase {
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 @@ private:
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

View File

@@ -27,11 +27,11 @@ namespace android {
/////////////// 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 @@ FrontendClient::~FrontendClient() {
mFrontend_1_1 = NULL;
mAidlCallback = NULL;
mHidlCallback = NULL;
mFrontendHandle = -1;
mId = -1;
}
Result FrontendClient::setCallback(sp<FrontendClientCallback> frontendClientCallback) {
@@ -123,7 +123,7 @@ shared_ptr<ITunerFrontend> FrontendClient::getAidlFrontend() {
}
int FrontendClient::getId() {
return getResourceIdFromHandle(mFrontendHandle);
return mId;
}
/////////////// TunerFrontendCallback ///////////////////////

View File

@@ -105,7 +105,7 @@ private:
struct FrontendClient : public RefBase {
public:
FrontendClient(shared_ptr<ITunerFrontend> tunerFrontend, int frontendHandle);
FrontendClient(shared_ptr<ITunerFrontend> tunerFrontend, int id);
~FrontendClient();
/**
@@ -135,10 +135,6 @@ public:
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 @@ private:
shared_ptr<TunerFrontendCallback> mAidlCallback;
sp<HidlFrontendCallback> mHidlCallback;
int mFrontendHandle;
int mId;
};
} // namespace android

View File

@@ -99,9 +99,10 @@ sp<FrontendClient> TunerClient::openFrontend(int frontendHandle) {
}
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 @@ sp<ITuner> TunerClient::getHidlTuner() {
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 @@ FrontendInfo TunerClient::FrontendInfoAidlToHidl(TunerServiceFrontendInfo aidlFr
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

View File

@@ -37,6 +37,13 @@ using namespace std;
namespace android {
typedef enum {
FRONTEND,
LNB,
DEMUX,
DESCRAMBLER,
} TunerResourceType;
struct TunerClient : public RefBase {
public:
@@ -95,9 +102,16 @@ public:
*/
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 @@ private:
// 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