Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fc7c8525 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Tuner API: set Frontend and Lnb info to TRM" into rvc-dev am: 48a7be79

Change-Id: I696a801d8d686479ad76f02b011e633d8ce73d19
parents 9f33f4a5 48a7be79
Loading
Loading
Loading
Loading
+32 −1
Original line number Diff line number Diff line
@@ -45,6 +45,7 @@ import android.media.tv.tuner.frontend.ScanCallback;
import android.media.tv.tunerresourcemanager.ResourceClientProfile;
import android.media.tv.tunerresourcemanager.TunerDemuxRequest;
import android.media.tv.tunerresourcemanager.TunerDescramblerRequest;
import android.media.tv.tunerresourcemanager.TunerFrontendInfo;
import android.media.tv.tunerresourcemanager.TunerFrontendRequest;
import android.media.tv.tunerresourcemanager.TunerLnbRequest;
import android.media.tv.tunerresourcemanager.TunerResourceManager;
@@ -256,6 +257,36 @@ public class Tuner implements AutoCloseable {
        mTunerResourceManager.registerClientProfile(
                profile, new HandlerExecutor(mHandler), mResourceListener, clientId);
        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 TimeFilter nativeOpenTimeFilter();

    private native List<Integer> nativeGetLnbIds();
    private native int[] nativeGetLnbIds();
    private native Lnb nativeOpenLnbByHandle(int handle);
    private native Lnb nativeOpenLnbByName(String name);

+2 −2
Original line number Diff line number Diff line
@@ -390,7 +390,7 @@ public class TunerResourceManager {
     * <li>If no Lnb system can be granted, the API would return false.
     * <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 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><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.
     */
+13 −17
Original line number Diff line number Diff line
@@ -1079,29 +1079,26 @@ jobject JTuner::getFrontendInfo(int id) {
            maxSymbolRate, acquireRange, exclusiveGroupId, statusCaps, jcaps);
}

jobject JTuner::getLnbIds() {
jintArray JTuner::getLnbIds() {
    ALOGD("JTuner::getLnbIds()");
    mTuner->getLnbIds([&](Result, const hidl_vec<FrontendId>& lnbIds) {
        mLnbIds = lnbIds;
    Result res;
    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");
        return NULL;
    }

    mLnbIds = lnbIds;
    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");
    jmethodID intInit = env->GetMethodID(integerClazz, "<init>", "(I)V");
    jintArray ids = env->NewIntArray(mLnbIds.size());
    env->SetIntArrayRegion(ids, 0, mLnbIds.size(), reinterpret_cast<jint*>(&mLnbIds[0]));

    for (int i=0; i < mLnbIds.size(); i++) {
       jobject idObj = env->NewObject(integerClazz, intInit, mLnbIds[i]);
       env->CallBooleanMethod(obj, arrayListAdd, idObj);
    }
    return obj;
    return ids;
}

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);
}

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);
    return tuner->getLnbIds();
}
@@ -3415,8 +3412,7 @@ 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", "()Ljava/util/List;",
            (void *)android_media_tv_Tuner_get_lnb_ids },
    { "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;",
+1 −1
Original line number Diff line number Diff line
@@ -179,7 +179,7 @@ struct JTuner : public RefBase {
    int stopScan();
    int setLnb(int id);
    int setLna(bool enable);
    jobject getLnbIds();
    jintArray getLnbIds();
    jobject openLnbById(int id);
    jobject openLnbByName(jstring name);
    jobject openFilter(DemuxFilterType type, int bufferSize);