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

Commit 95c1f753 authored by shubang's avatar shubang
Browse files

Implement getFrontendInfo()

Test: make;
Change-Id: Ib04fe54e9ca5df7fcdc77a21eafea7ce2fd2add9
parent 4b2d16d2
Loading
Loading
Loading
Loading
+291 −0
Original line number Diff line number Diff line
/*
 * Copyright 2019 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.media.tv.tuner;

/**
 * Frontend Capabilities.
 * @hide
 */
public class FrontendCapabilities {
    /** Analog Capabilities. */
    public class Analog extends FrontendCapabilities {
        private final int mTypeCap;
        private final int mSifStandardCap;

        Analog(int typeCap, int sifStandardCap) {
            mTypeCap = typeCap;
            mSifStandardCap = sifStandardCap;
        }
        /**
         * Gets type capability.
         */
        public int getTypeCapability() {
            return mTypeCap;
        }
        /** Gets SIF standard capability. */
        public int getSifStandardCapability() {
            return mSifStandardCap;
        }
    }

    /** ATSC Capabilities. */
    public class Atsc extends FrontendCapabilities {
        private final int mModulationCap;

        Atsc(int modulationCap) {
            mModulationCap = modulationCap;
        }
        /** Gets modulation capability. */
        public int getModulationCapability() {
            return mModulationCap;
        }
    }

    /** ATSC-3 Capabilities. */
    public class Atsc3 extends FrontendCapabilities {
        private final int mBandwidthCap;
        private final int mModulationCap;
        private final int mTimeInterleaveModeCap;
        private final int mCodeRateCap;
        private final int mFecCap;
        private final int mDemodOutputFormatCap;

        Atsc3(int bandwidthCap, int modulationCap, int timeInterleaveModeCap, int codeRateCap,
                int fecCap, int demodOutputFormatCap) {
            mBandwidthCap = bandwidthCap;
            mModulationCap = modulationCap;
            mTimeInterleaveModeCap = timeInterleaveModeCap;
            mCodeRateCap = codeRateCap;
            mFecCap = fecCap;
            mDemodOutputFormatCap = demodOutputFormatCap;
        }

        /** Gets bandwidth capability. */
        public int getBandwidthCapability() {
            return mBandwidthCap;
        }
        /** Gets modulation capability. */
        public int getModulationCapability() {
            return mModulationCap;
        }
        /** Gets time interleave mod capability. */
        public int getTimeInterleaveModeCapability() {
            return mTimeInterleaveModeCap;
        }
        /** Gets code rate capability. */
        public int getCodeRateCapability() {
            return mCodeRateCap;
        }
        /** Gets FEC capability. */
        public int getFecCapability() {
            return mFecCap;
        }
        /** Gets demodulator output format capability. */
        public int getDemodOutputFormatCapability() {
            return mDemodOutputFormatCap;
        }
    }

    /** DVBS Capabilities. */
    public class Dvbs extends FrontendCapabilities {
        private final int mModulationCap;
        private final long mInnerFecCap;
        private final int mStandard;

        Dvbs(int modulationCap, long innerFecCap, int standard) {
            mModulationCap = modulationCap;
            mInnerFecCap = innerFecCap;
            mStandard = standard;
        }

        /** Gets modulation capability. */
        public int getModulationCapability() {
            return mModulationCap;
        }
        /** Gets inner FEC capability. */
        public long getInnerFecCapability() {
            return mInnerFecCap;
        }
        /** Gets DVBS standard capability. */
        public int getStandardCapability() {
            return mStandard;
        }
    }

    /** DVBC Capabilities. */
    public class Dvbc extends FrontendCapabilities {
        private final int mModulationCap;
        private final int mFecCap;
        private final int mAnnexCap;

        Dvbc(int modulationCap, int fecCap, int annexCap) {
            mModulationCap = modulationCap;
            mFecCap = fecCap;
            mAnnexCap = annexCap;
        }

        /** Gets modulation capability. */
        public int getModulationCapability() {
            return mModulationCap;
        }
        /** Gets FEC capability. */
        public int getFecCapability() {
            return mFecCap;
        }
        /** Gets annex capability. */
        public int getAnnexCapability() {
            return mAnnexCap;
        }
    }

    /** DVBT Capabilities. */
    public class Dvbt extends FrontendCapabilities {
        private final int mTransmissionModeCap;
        private final int mBandwidthCap;
        private final int mConstellationCap;
        private final int mCoderateCap;
        private final int mHierarchyCap;
        private final int mGuardIntervalCap;
        private final boolean mIsT2Supported;
        private final boolean mIsMisoSupported;

        Dvbt(int transmissionModeCap, int bandwidthCap, int constellationCap, int coderateCap,
                int hierarchyCap, int guardIntervalCap, boolean isT2Supported,
                boolean isMisoSupported) {
            mTransmissionModeCap = transmissionModeCap;
            mBandwidthCap = bandwidthCap;
            mConstellationCap = constellationCap;
            mCoderateCap = coderateCap;
            mHierarchyCap = hierarchyCap;
            mGuardIntervalCap = guardIntervalCap;
            mIsT2Supported = isT2Supported;
            mIsMisoSupported = isMisoSupported;
        }

        /** Gets transmission mode capability. */
        public int getTransmissionModeCapability() {
            return mTransmissionModeCap;
        }
        /** Gets bandwidth capability. */
        public int getBandwidthCapability() {
            return mBandwidthCap;
        }
        /** Gets constellation capability. */
        public int getConstellationCapability() {
            return mConstellationCap;
        }
        /** Gets code rate capability. */
        public int getCodeRateCapability() {
            return mCoderateCap;
        }
        /** Gets hierarchy capability. */
        public int getHierarchyCapability() {
            return mHierarchyCap;
        }
        /** Gets guard interval capability. */
        public int getGuardIntervalCapability() {
            return mGuardIntervalCap;
        }
        /** Returns whether T2 is supported. */
        public boolean getIsT2Supported() {
            return mIsT2Supported;
        }
        /** Returns whether MISO is supported. */
        public boolean getIsMisoSupported() {
            return mIsMisoSupported;
        }
    }

    /** ISDBS Capabilities. */
    public class Isdbs extends FrontendCapabilities {
        private final int mModulationCap;
        private final int mCoderateCap;

        Isdbs(int modulationCap, int coderateCap) {
            mModulationCap = modulationCap;
            mCoderateCap = coderateCap;
        }

        /** Gets modulation capability. */
        public int getModulationCapability() {
            return mModulationCap;
        }
        /** Gets code rate capability. */
        public int getCodeRateCapability() {
            return mCoderateCap;
        }
    }

    /** ISDBS-3 Capabilities. */
    public class Isdbs3 extends FrontendCapabilities {
        private final int mModulationCap;
        private final int mCoderateCap;

        Isdbs3(int modulationCap, int coderateCap) {
            mModulationCap = modulationCap;
            mCoderateCap = coderateCap;
        }

        /** Gets modulation capability. */
        public int getModulationCapability() {
            return mModulationCap;
        }
        /** Gets code rate capability. */
        public int getCodeRateCapability() {
            return mCoderateCap;
        }
    }

    /** ISDBC Capabilities. */
    public class Isdbc extends FrontendCapabilities {
        private final int mModeCap;
        private final int mBandwidthCap;
        private final int mModulationCap;
        private final int mCoderateCap;
        private final int mGuardIntervalCap;

        Isdbc(int modeCap, int bandwidthCap, int modulationCap, int coderateCap,
                int guardIntervalCap) {
            mModeCap = modeCap;
            mBandwidthCap = bandwidthCap;
            mModulationCap = modulationCap;
            mCoderateCap = coderateCap;
            mGuardIntervalCap = guardIntervalCap;
        }

        /** Gets mode capability. */
        public int getModeCapability() {
            return mModeCap;
        }
        /** Gets bandwidth capability. */
        public int getBandwidthCapability() {
            return mBandwidthCap;
        }
        /** Gets modulation capability. */
        public int getModulationCapability() {
            return mModulationCap;
        }
        /** Gets code rate capability. */
        public int getCodeRateCapability() {
            return mCoderateCap;
        }
        /** Gets guard interval capability. */
        public int getGuardIntervalCapability() {
            return mGuardIntervalCap;
        }
    }
}
+93 −0
Original line number Diff line number Diff line
/*
 * Copyright 2019 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.media.tv.tuner;

import android.media.tv.tuner.TunerConstants.FrontendType;

/**
 * Frontend info.
 * @hide
 */
public class FrontendInfo {
    private final int mId;
    private final int mType;
    private final int mMinFrequency;
    private final int mMaxFrequency;
    private final int mMinSymbolRate;
    private final int mMaxSymbolRate;
    private final int mAcquireRange;
    private final int mExclusiveGroupId;
    private final int[] mStatusCaps;
    private final FrontendCapabilities mFrontendCap;

    FrontendInfo(int id, int type, int minFrequency, int maxFrequency, int minSymbolRate,
            int maxSymbolRate, int acquireRange, int exclusiveGroupId, int[] statusCaps,
            FrontendCapabilities frontendCap) {
        mId = id;
        mType = type;
        mMinFrequency = minFrequency;
        mMaxFrequency = maxFrequency;
        mMinSymbolRate = minSymbolRate;
        mMaxSymbolRate = maxSymbolRate;
        mAcquireRange = acquireRange;
        mExclusiveGroupId = exclusiveGroupId;
        mStatusCaps = statusCaps;
        mFrontendCap = frontendCap;
    }

    /** Gets frontend ID. */
    public int getId() {
        return mId;
    }
    /** Gets frontend type. */
    @FrontendType
    public int getType() {
        return mType;
    }
    /** Gets min frequency. */
    public int getMinFrequency() {
        return mMinFrequency;
    }
    /** Gets max frequency. */
    public int getMaxFrequency() {
        return mMaxFrequency;
    }
    /** Gets min symbol rate. */
    public int getMinSymbolRate() {
        return mMinSymbolRate;
    }
    /** Gets max symbol rate. */
    public int getMaxSymbolRate() {
        return mMaxSymbolRate;
    }
    /** Gets acquire range. */
    public int getAcquireRange() {
        return mAcquireRange;
    }
    /** Gets exclusive group ID. */
    public int getExclusiveGroupId() {
        return mExclusiveGroupId;
    }
    /** Gets status capabilities. */
    public int[] getStatusCapabilities() {
        return mStatusCaps;
    }
    /** Gets frontend capability. */
    public FrontendCapabilities getFrontendCapability() {
        return mFrontendCap;
    }
}
+23 −0
Original line number Diff line number Diff line
@@ -114,6 +114,7 @@ public final class Tuner implements AutoCloseable {
    private native long nativeGetAvSyncTime(int avSyncId);
    private native int nativeConnectCiCam(int ciCamId);
    private native int nativeDisconnectCiCam();
    private native FrontendInfo nativeGetFrontendInfo(int id);
    private native Filter nativeOpenFilter(int type, int subType, int bufferSize);

    private native List<Integer> nativeGetLnbIds();
@@ -408,6 +409,28 @@ public final class Tuner implements AutoCloseable {
        return nativeDisconnectCiCam();
    }

    /**
     * Retrieve the frontend information.
     * @hide
     */
    public FrontendInfo getFrontendInfo() {
        if (mFrontend == null) {
            throw new IllegalStateException("frontend is not initialized");
        }
        return nativeGetFrontendInfo(mFrontend.mId);
    }

    /**
     * Gets frontend ID.
     * @hide
     */
    public int getFrontendId() {
        if (mFrontend == null) {
            throw new IllegalStateException("frontend is not initialized");
        }
        return mFrontend.mId;
    }

    private List<Integer> getFrontendIds() {
        mFrontendIds = nativeGetFrontendIds();
        return mFrontendIds;
+374 −0

File changed.

Preview size limit exceeded, changes collapsed.

+6 −0
Original line number Diff line number Diff line
@@ -652,6 +652,10 @@ static int android_media_tv_Tuner_disconnect_cicam(JNIEnv*, jobject) {
    return 0;
}

static jobject android_media_tv_Tuner_get_frontend_info(JNIEnv*, jobject, jint) {
    return NULL;
}

static jobject android_media_tv_Tuner_get_lnb_ids(JNIEnv *env, jobject thiz) {
    sp<JTuner> tuner = getTuner(env, thiz);
    return tuner->getLnbIds();
@@ -965,6 +969,8 @@ static const JNINativeMethod gTunerMethods[] = {
    { "nativeGetAvSyncTime", "(I)J", (void *)android_media_tv_Tuner_gat_av_sync_time },
    { "nativeConnectCiCam", "(I)I", (void *)android_media_tv_Tuner_connect_cicam },
    { "nativeDisconnectCiCam", "()I", (void *)android_media_tv_Tuner_disconnect_cicam },
    { "nativeGetFrontendInfo", "(I)[Landroid/media/tv/tuner/FrontendInfo;",
            (void *)android_media_tv_Tuner_get_frontend_info },
    { "nativeOpenFilter", "(III)Landroid/media/tv/tuner/Tuner$Filter;",
            (void *)android_media_tv_Tuner_open_filter },
    { "nativeGetLnbIds", "()Ljava/util/List;",