Merge "Tuner API: set Frontend and Lnb info to TRM" into rvc-dev am: 48a7be797d
Change-Id: Ie503e4a3a95d7c60c22f052595de4a414f3ff0f8
This commit is contained in:
@@ -45,6 +45,7 @@ import android.media.tv.tuner.frontend.ScanCallback;
|
|||||||
import android.media.tv.tunerresourcemanager.ResourceClientProfile;
|
import android.media.tv.tunerresourcemanager.ResourceClientProfile;
|
||||||
import android.media.tv.tunerresourcemanager.TunerDemuxRequest;
|
import android.media.tv.tunerresourcemanager.TunerDemuxRequest;
|
||||||
import android.media.tv.tunerresourcemanager.TunerDescramblerRequest;
|
import android.media.tv.tunerresourcemanager.TunerDescramblerRequest;
|
||||||
|
import android.media.tv.tunerresourcemanager.TunerFrontendInfo;
|
||||||
import android.media.tv.tunerresourcemanager.TunerFrontendRequest;
|
import android.media.tv.tunerresourcemanager.TunerFrontendRequest;
|
||||||
import android.media.tv.tunerresourcemanager.TunerLnbRequest;
|
import android.media.tv.tunerresourcemanager.TunerLnbRequest;
|
||||||
import android.media.tv.tunerresourcemanager.TunerResourceManager;
|
import android.media.tv.tunerresourcemanager.TunerResourceManager;
|
||||||
@@ -256,6 +257,36 @@ public class Tuner implements AutoCloseable {
|
|||||||
mTunerResourceManager.registerClientProfile(
|
mTunerResourceManager.registerClientProfile(
|
||||||
profile, new HandlerExecutor(mHandler), mResourceListener, clientId);
|
profile, new HandlerExecutor(mHandler), mResourceListener, clientId);
|
||||||
mClientId = clientId[0];
|
mClientId = clientId[0];
|
||||||
|
|
||||||
|
setFrontendInfoList();
|
||||||
|
setLnbIds();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setFrontendInfoList() {
|
||||||
|
List<Integer> ids = nativeGetFrontendIds();
|
||||||
|
if (ids == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
TunerFrontendInfo[] infos = new TunerFrontendInfo[ids.size()];
|
||||||
|
for (int i = 0; i < ids.size(); i++) {
|
||||||
|
int id = ids.get(i);
|
||||||
|
FrontendInfo frontendInfo = nativeGetFrontendInfo(id);
|
||||||
|
if (frontendInfo == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
TunerFrontendInfo tunerFrontendInfo = new TunerFrontendInfo(
|
||||||
|
id, frontendInfo.getType(), frontendInfo.getExclusiveGroupId());
|
||||||
|
infos[i] = tunerFrontendInfo;
|
||||||
|
}
|
||||||
|
mTunerResourceManager.setFrontendInfoList(infos);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setLnbIds() {
|
||||||
|
int[] ids = nativeGetLnbIds();
|
||||||
|
if (ids == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
mTunerResourceManager.setLnbInfoList(ids);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -358,7 +389,7 @@ public class Tuner implements AutoCloseable {
|
|||||||
private native Filter nativeOpenFilter(int type, int subType, long bufferSize);
|
private native Filter nativeOpenFilter(int type, int subType, long bufferSize);
|
||||||
private native TimeFilter nativeOpenTimeFilter();
|
private native TimeFilter nativeOpenTimeFilter();
|
||||||
|
|
||||||
private native List<Integer> nativeGetLnbIds();
|
private native int[] nativeGetLnbIds();
|
||||||
private native Lnb nativeOpenLnbByHandle(int handle);
|
private native Lnb nativeOpenLnbByHandle(int handle);
|
||||||
private native Lnb nativeOpenLnbByName(String name);
|
private native Lnb nativeOpenLnbByName(String name);
|
||||||
|
|
||||||
|
|||||||
@@ -390,7 +390,7 @@ public class TunerResourceManager {
|
|||||||
* <li>If no Lnb system can be granted, the API would return false.
|
* <li>If no Lnb system can be granted, the API would return false.
|
||||||
* <ul>
|
* <ul>
|
||||||
*
|
*
|
||||||
* <p><strong>Note:</strong> {@link #setLnbInfos(int[])} must be called before this request.
|
* <p><strong>Note:</strong> {@link #setLnbInfoList(int[])} must be called before this request.
|
||||||
*
|
*
|
||||||
* @param request {@link TunerLnbRequest} information of the current request.
|
* @param request {@link TunerLnbRequest} information of the current request.
|
||||||
* @param lnbId a one-element array to return the granted Lnb id.
|
* @param lnbId a one-element array to return the granted Lnb id.
|
||||||
@@ -479,7 +479,7 @@ public class TunerResourceManager {
|
|||||||
*
|
*
|
||||||
* <p>Client must call this whenever it releases an Lnb.
|
* <p>Client must call this whenever it releases an Lnb.
|
||||||
*
|
*
|
||||||
* <p><strong>Note:</strong> {@link #setLnbInfos(int[])} must be called before this release.
|
* <p><strong>Note:</strong> {@link #setLnbInfoList(int[])} must be called before this release.
|
||||||
*
|
*
|
||||||
* @param lnbId the id of the released Tuner Lnb.
|
* @param lnbId the id of the released Tuner Lnb.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -1079,29 +1079,26 @@ jobject JTuner::getFrontendInfo(int id) {
|
|||||||
maxSymbolRate, acquireRange, exclusiveGroupId, statusCaps, jcaps);
|
maxSymbolRate, acquireRange, exclusiveGroupId, statusCaps, jcaps);
|
||||||
}
|
}
|
||||||
|
|
||||||
jobject JTuner::getLnbIds() {
|
jintArray JTuner::getLnbIds() {
|
||||||
ALOGD("JTuner::getLnbIds()");
|
ALOGD("JTuner::getLnbIds()");
|
||||||
mTuner->getLnbIds([&](Result, const hidl_vec<FrontendId>& lnbIds) {
|
Result res;
|
||||||
mLnbIds = lnbIds;
|
hidl_vec<LnbId> lnbIds;
|
||||||
|
mTuner->getLnbIds([&](Result r, const hidl_vec<LnbId>& ids) {
|
||||||
|
lnbIds = ids;
|
||||||
|
res = r;
|
||||||
});
|
});
|
||||||
if (mLnbIds.size() == 0) {
|
if (res != Result::SUCCESS || mLnbIds.size() == 0) {
|
||||||
ALOGW("Lnb isn't available");
|
ALOGW("Lnb isn't available");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mLnbIds = lnbIds;
|
||||||
JNIEnv *env = AndroidRuntime::getJNIEnv();
|
JNIEnv *env = AndroidRuntime::getJNIEnv();
|
||||||
jclass arrayListClazz = env->FindClass("java/util/ArrayList");
|
|
||||||
jmethodID arrayListAdd = env->GetMethodID(arrayListClazz, "add", "(Ljava/lang/Object;)Z");
|
|
||||||
jobject obj = env->NewObject(arrayListClazz, env->GetMethodID(arrayListClazz, "<init>", "()V"));
|
|
||||||
|
|
||||||
jclass integerClazz = env->FindClass("java/lang/Integer");
|
jintArray ids = env->NewIntArray(mLnbIds.size());
|
||||||
jmethodID intInit = env->GetMethodID(integerClazz, "<init>", "(I)V");
|
env->SetIntArrayRegion(ids, 0, mLnbIds.size(), reinterpret_cast<jint*>(&mLnbIds[0]));
|
||||||
|
|
||||||
for (int i=0; i < mLnbIds.size(); i++) {
|
return ids;
|
||||||
jobject idObj = env->NewObject(integerClazz, intInit, mLnbIds[i]);
|
|
||||||
env->CallBooleanMethod(obj, arrayListAdd, idObj);
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
jobject JTuner::openLnbById(int id) {
|
jobject JTuner::openLnbById(int id) {
|
||||||
@@ -2405,7 +2402,7 @@ static jobject android_media_tv_Tuner_get_frontend_info(JNIEnv *env, jobject thi
|
|||||||
return tuner->getFrontendInfo(id);
|
return tuner->getFrontendInfo(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
static jobject android_media_tv_Tuner_get_lnb_ids(JNIEnv *env, jobject thiz) {
|
static jintArray android_media_tv_Tuner_get_lnb_ids(JNIEnv *env, jobject thiz) {
|
||||||
sp<JTuner> tuner = getTuner(env, thiz);
|
sp<JTuner> tuner = getTuner(env, thiz);
|
||||||
return tuner->getLnbIds();
|
return tuner->getLnbIds();
|
||||||
}
|
}
|
||||||
@@ -3415,8 +3412,7 @@ static const JNINativeMethod gTunerMethods[] = {
|
|||||||
(void *)android_media_tv_Tuner_open_filter },
|
(void *)android_media_tv_Tuner_open_filter },
|
||||||
{ "nativeOpenTimeFilter", "()Landroid/media/tv/tuner/filter/TimeFilter;",
|
{ "nativeOpenTimeFilter", "()Landroid/media/tv/tuner/filter/TimeFilter;",
|
||||||
(void *)android_media_tv_Tuner_open_time_filter },
|
(void *)android_media_tv_Tuner_open_time_filter },
|
||||||
{ "nativeGetLnbIds", "()Ljava/util/List;",
|
{ "nativeGetLnbIds", "()[I", (void *)android_media_tv_Tuner_get_lnb_ids },
|
||||||
(void *)android_media_tv_Tuner_get_lnb_ids },
|
|
||||||
{ "nativeOpenLnbByHandle", "(I)Landroid/media/tv/tuner/Lnb;",
|
{ "nativeOpenLnbByHandle", "(I)Landroid/media/tv/tuner/Lnb;",
|
||||||
(void *)android_media_tv_Tuner_open_lnb_by_handle },
|
(void *)android_media_tv_Tuner_open_lnb_by_handle },
|
||||||
{ "nativeOpenLnbByName", "(Ljava/lang/String;)Landroid/media/tv/tuner/Lnb;",
|
{ "nativeOpenLnbByName", "(Ljava/lang/String;)Landroid/media/tv/tuner/Lnb;",
|
||||||
|
|||||||
@@ -179,7 +179,7 @@ struct JTuner : public RefBase {
|
|||||||
int stopScan();
|
int stopScan();
|
||||||
int setLnb(int id);
|
int setLnb(int id);
|
||||||
int setLna(bool enable);
|
int setLna(bool enable);
|
||||||
jobject getLnbIds();
|
jintArray getLnbIds();
|
||||||
jobject openLnbById(int id);
|
jobject openLnbById(int id);
|
||||||
jobject openLnbByName(jstring name);
|
jobject openLnbByName(jstring name);
|
||||||
jobject openFilter(DemuxFilterType type, int bufferSize);
|
jobject openFilter(DemuxFilterType type, int bufferSize);
|
||||||
|
|||||||
Reference in New Issue
Block a user