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

Commit 0e93d87c authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Support standard extension frontend status" into main

parents ffd3c913 076de23a
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -9429,6 +9429,7 @@ package android.media.tv.tuner.frontend {
    method public int getSignalStrength();
    method public int getSnr();
    method public int getSpectralInversion();
    method @FlaggedApi("android.media.tv.flags.tuner_w_apis") @NonNull public android.media.tv.tuner.frontend.StandardExt getStandardExt();
    method @NonNull public int[] getStreamIds();
    method public int getSymbolRate();
    method @IntRange(from=0, to=65535) public int getSystemId();
@@ -9483,6 +9484,7 @@ package android.media.tv.tuner.frontend {
    field public static final int FRONTEND_STATUS_TYPE_SIGNAL_STRENGTH = 6; // 0x6
    field public static final int FRONTEND_STATUS_TYPE_SNR = 1; // 0x1
    field public static final int FRONTEND_STATUS_TYPE_SPECTRAL = 10; // 0xa
    field @FlaggedApi("android.media.tv.flags.tuner_w_apis") public static final int FRONTEND_STATUS_TYPE_STANDARD_EXT = 47; // 0x2f
    field public static final int FRONTEND_STATUS_TYPE_STREAM_IDS = 39; // 0x27
    field public static final int FRONTEND_STATUS_TYPE_SYMBOL_RATE = 7; // 0x7
    field public static final int FRONTEND_STATUS_TYPE_T2_SYSTEM_ID = 29; // 0x1d
@@ -9774,6 +9776,11 @@ package android.media.tv.tuner.frontend {
    method public default void onUnlocked();
  }
  @FlaggedApi("android.media.tv.flags.tuner_w_apis") public final class StandardExt {
    method public int getDvbsStandardExt();
    method public int getDvbtStandardExt();
  }
}
package android.media.voice {
+34 −1
Original line number Diff line number Diff line
@@ -16,11 +16,13 @@

package android.media.tv.tuner.frontend;

import android.annotation.FlaggedApi;
import android.annotation.IntDef;
import android.annotation.IntRange;
import android.annotation.NonNull;
import android.annotation.SuppressLint;
import android.annotation.SystemApi;
import android.media.tv.flags.Flags;
import android.media.tv.tuner.Lnb;
import android.media.tv.tuner.TunerVersionChecker;

@@ -61,7 +63,7 @@ public class FrontendStatus {
            FRONTEND_STATUS_TYPE_DVBT_CELL_IDS, FRONTEND_STATUS_TYPE_ATSC3_ALL_PLP_INFO,
            FRONTEND_STATUS_TYPE_IPTV_CONTENT_URL, FRONTEND_STATUS_TYPE_IPTV_PACKETS_LOST,
            FRONTEND_STATUS_TYPE_IPTV_PACKETS_RECEIVED, FRONTEND_STATUS_TYPE_IPTV_WORST_JITTER_MS,
            FRONTEND_STATUS_TYPE_IPTV_AVERAGE_JITTER_MS})
            FRONTEND_STATUS_TYPE_IPTV_AVERAGE_JITTER_MS, FRONTEND_STATUS_TYPE_STANDARD_EXT})
    @Retention(RetentionPolicy.SOURCE)
    public @interface FrontendStatusType {}

@@ -311,6 +313,13 @@ public class FrontendStatus {
    public static final int FRONTEND_STATUS_TYPE_ATSC3_ALL_PLP_INFO =
            android.hardware.tv.tuner.FrontendStatusType.ATSC3_ALL_PLP_INFO;

    /**
     * Standard extension.
     */
    @FlaggedApi(Flags.FLAG_TUNER_W_APIS)
    public static final int FRONTEND_STATUS_TYPE_STANDARD_EXT =
            android.hardware.tv.tuner.FrontendStatusType.STANDARD_EXT;

    /** @hide */
    @IntDef(value = {
            AtscFrontendSettings.MODULATION_UNDEFINED,
@@ -558,6 +567,7 @@ public class FrontendStatus {
    private Long mIptvPacketsReceived;
    private Integer mIptvWorstJitterMs;
    private Integer mIptvAverageJitterMs;
    private StandardExt mStandardExt;

    // Constructed and fields set by JNI code.
    private FrontendStatus() {
@@ -1273,4 +1283,27 @@ public class FrontendStatus {
        }
        return mIptvAverageJitterMs;
    }
    /**
     * Gets the standard extension.
     *
     * <p>The tuner standard DVB-T has the extension DVB-T2, and the standard DVB-S has the
     * extensions DVB-S2 and DVB-S2X. This method returns the current standard extension within the
     * same standard series. This frontend status is reported when the standard extension
     * transitions to another during playback.
     *
     * <p>This query is supported only by Tuner HAL 4.0 or higher. Use
     * {@link TunerVersionChecker#getTunerVersion()} to check the version.
     *
     * @return The current standard extension.
     */
    @NonNull
    @FlaggedApi(Flags.FLAG_TUNER_W_APIS)
    public StandardExt getStandardExt() {
        TunerVersionChecker.checkHigherOrEqualVersionTo(
                TunerVersionChecker.TUNER_VERSION_4_0, "StandardExt status");
        if (mStandardExt == null) {
            throw new IllegalStateException("StandardExt status is empty");
        }
        return mStandardExt;
    }
}
+75 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2024 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;

import android.annotation.FlaggedApi;
import android.annotation.SystemApi;
import android.hardware.tv.tuner.FrontendDvbsStandard;
import android.hardware.tv.tuner.FrontendDvbtStandard;
import android.media.tv.flags.Flags;

/**
 * Standard extension for the standard DVB-T and DVB-S series.
 *
 * @hide
 */
@SystemApi
@FlaggedApi(Flags.FLAG_TUNER_W_APIS)
public final class StandardExt {
    private final int mDvbsStandardExt;
    private final int mDvbtStandardExt;

    /**
     * Private constructor called by JNI only.
     */
    private StandardExt(int dvbsStandardExt, int dvbtStandardExt) {
        mDvbsStandardExt = dvbsStandardExt;
        mDvbtStandardExt = dvbtStandardExt;
    }

    /**
     * Gets the DVB-S standard extension within the DVB-S standard series.
     *
     * @return An integer representing the standard, such as
     * {@link DvbsFrontendSettings#STANDARD_S}.
     *
     * @see android.media.tv.tuner.frontend.DvbsFrontendSettings
     */
    @DvbsFrontendSettings.Standard
    public int getDvbsStandardExt() {
        if (mDvbsStandardExt == FrontendDvbsStandard.UNDEFINED) {
            throw new IllegalStateException("No DVB-S standard transition");
        }
        return mDvbsStandardExt;
    }

    /**
     * Gets the DVB-T standard extension within the DVB-T standard series.
     *
     * @return An integer representing the standard, such as
     * {@link DvbtFrontendSettings#STANDARD_T}.
     *
     * @see android.media.tv.tuner.frontend.DvbtFrontendSettings
     */
    @DvbtFrontendSettings.Standard
    public int getDvbtStandardExt() {
        if (mDvbtStandardExt == FrontendDvbtStandard.UNDEFINED) {
            throw new IllegalStateException("No DVB-T standard transition");
        }
        return mDvbtStandardExt;
    }
}
+29 −0
Original line number Diff line number Diff line
@@ -144,6 +144,7 @@
#include <aidl/android/hardware/tv/tuner/FrontendScanAtsc3PlpInfo.h>
#include <aidl/android/hardware/tv/tuner/FrontendScanMessageStandard.h>
#include <aidl/android/hardware/tv/tuner/FrontendSpectralInversion.h>
#include <aidl/android/hardware/tv/tuner/FrontendStandardExt.h>
#include <aidl/android/hardware/tv/tuner/FrontendStatus.h>
#include <aidl/android/hardware/tv/tuner/FrontendStatusAtsc3PlpInfo.h>
#include <aidl/android/hardware/tv/tuner/FrontendStatusType.h>
@@ -302,6 +303,7 @@ using ::aidl::android::hardware::tv::tuner::FrontendRollOff;
using ::aidl::android::hardware::tv::tuner::FrontendScanAtsc3PlpInfo;
using ::aidl::android::hardware::tv::tuner::FrontendScanMessageStandard;
using ::aidl::android::hardware::tv::tuner::FrontendSpectralInversion;
using ::aidl::android::hardware::tv::tuner::FrontendStandardExt;
using ::aidl::android::hardware::tv::tuner::FrontendStatus;
using ::aidl::android::hardware::tv::tuner::FrontendStatusAtsc3PlpInfo;
using ::aidl::android::hardware::tv::tuner::FrontendStatusType;
@@ -2937,6 +2939,33 @@ jobject JTuner::getFrontendStatus(jintArray types) {
                env->SetObjectField(statusObj, field, newIntegerObj.get());
                break;
            }
            case FrontendStatus::Tag::standardExt: {
                jfieldID field = env->GetFieldID(clazz, "mStandardExt",
                        "Landroid/media/tv/tuner/frontend/StandardExt;");
                ScopedLocalRef standardExtClazz(env,
                        env->FindClass("android/media/tv/tuner/frontend/StandardExt"));
                jmethodID initStandardExt = env->GetMethodID(standardExtClazz.get(), "<init>",
                        "(II)V");

                jint dvbsStandardExt = static_cast<jint>(FrontendDvbsStandard::UNDEFINED);
                jint dvbtStandardExt = static_cast<jint>(FrontendDvbtStandard::UNDEFINED);
                FrontendStandardExt standardExt = s.get<FrontendStatus::Tag::standardExt>();
                switch (standardExt.getTag()) {
                    case FrontendStandardExt::Tag::dvbsStandardExt: {
                        dvbsStandardExt = static_cast<jint>(standardExt
                                .get<FrontendStandardExt::Tag::dvbsStandardExt>());
                        break;
                    }
                    case FrontendStandardExt::Tag::dvbtStandardExt: {
                        dvbtStandardExt = static_cast<jint>(standardExt
                                .get<FrontendStandardExt::Tag::dvbtStandardExt>());
                        break;
                    }
                }
                ScopedLocalRef standardExtObj(env, env->NewObject(standardExtClazz.get(),
                        initStandardExt, dvbsStandardExt, dvbtStandardExt));
                env->SetObjectField(statusObj, field, standardExtObj.get());
            }
        }
    }
    return statusObj;