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

Commit 82825a24 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Implement getFrontendInfo()"

parents a6447f28 95c1f753
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
@@ -115,6 +115,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();
@@ -409,6 +410,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
@@ -665,6 +665,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();
@@ -1050,6 +1054,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;",