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

Commit 90068cf6 authored by Amy Zhang's avatar Amy Zhang Committed by Android (Google) Code Review
Browse files

Merge changes from topic "frinfo"

* changes:
  Add comparator for FrontendInfo
  Expose FrontendInfo list of all the existed Frontends in Tuner java
parents 8eeeef38 d92c6372
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -5092,6 +5092,7 @@ package android.media.tv.tuner {
    method public long getAvSyncTime(int);
    method @Nullable public android.media.tv.tuner.DemuxCapabilities getDemuxCapabilities();
    method @Nullable public android.media.tv.tuner.frontend.FrontendInfo getFrontendInfo();
    method @Nullable public java.util.List<android.media.tv.tuner.frontend.FrontendInfo> getFrontendInfoList();
    method @Nullable public android.media.tv.tuner.frontend.FrontendStatus getFrontendStatus(@NonNull int[]);
    method public int linkFrontendToCiCam(int);
    method @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_TV_DESCRAMBLER) public android.media.tv.tuner.Descrambler openDescrambler();
+1 −0
Original line number Diff line number Diff line
@@ -5032,6 +5032,7 @@ package android.media.tv.tuner {
    method public long getAvSyncTime(int);
    method @Nullable public android.media.tv.tuner.DemuxCapabilities getDemuxCapabilities();
    method @Nullable public android.media.tv.tuner.frontend.FrontendInfo getFrontendInfo();
    method @Nullable public java.util.List<android.media.tv.tuner.frontend.FrontendInfo> getFrontendInfoList();
    method @Nullable public android.media.tv.tuner.frontend.FrontendStatus getFrontendStatus(@NonNull int[]);
    method public int linkFrontendToCiCam(int);
    method @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_TV_DESCRAMBLER) public android.media.tv.tuner.Descrambler openDescrambler();
+34 −1
Original line number Diff line number Diff line
@@ -61,6 +61,7 @@ import com.android.internal.util.FrameworkStatsLog;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -369,6 +370,28 @@ public class Tuner implements AutoCloseable {
        mTunerResourceManager.setFrontendInfoList(infos);
    }

    /**
     * Get frontend info list from native and build them into a {@link FrontendInfo} list. Any
     * {@code null} FrontendInfo element would be removed.
     */
    private FrontendInfo[] getFrontendInfoListInternal() {
        List<Integer> ids = getFrontendIds();
        if (ids == null) {
            return null;
        }
        FrontendInfo[] infos = new FrontendInfo[ids.size()];
        for (int i = 0; i < ids.size(); i++) {
            int id = ids.get(i);
            FrontendInfo frontendInfo = getFrontendInfoById(id);
            if (frontendInfo == null) {
                Log.e(TAG, "Failed to get a FrontendInfo on frontend id:" + id + "!");
                continue;
            }
            infos[i] = frontendInfo;
        }
        return Arrays.stream(infos).filter(Objects::nonNull).toArray(FrontendInfo[]::new);
    }

    /** @hide */
    public static int getTunerVersion() {
        return sTunerVersion;
@@ -932,7 +955,7 @@ public class Tuner implements AutoCloseable {
    }

    /**
     * Gets the frontend information.
     * Gets the initialized frontend information.
     *
     * @return The frontend information. {@code null} if the operation failed.
     */
@@ -950,6 +973,16 @@ public class Tuner implements AutoCloseable {
        return mFrontendInfo;
    }

    /**
     * Get a list all the existed frontend information.
     *
     * @return The list of all the frontend information. {@code null} if the operation failed.
     */
    @Nullable
    public List<FrontendInfo> getFrontendInfoList() {
        return Arrays.asList(getFrontendInfoListInternal());
    }

    /** @hide */
    public FrontendInfo getFrontendInfoById(int id) {
        return nativeGetFrontendInfo(id);
+29 −0
Original line number Diff line number Diff line
@@ -22,6 +22,9 @@ import android.media.tv.tuner.frontend.FrontendSettings.Type;
import android.media.tv.tuner.frontend.FrontendStatus.FrontendStatusType;
import android.util.Range;

import java.util.Arrays;
import java.util.Objects;

/**
 * This class is used to specify meta information of a frontend.
 *
@@ -118,4 +121,30 @@ public class FrontendInfo {
    public FrontendCapabilities getFrontendCapabilities() {
        return mFrontendCap;
    }


    /** @hide */
    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || !(o instanceof FrontendInfo)) {
            return false;
        }
        // TODO: compare FrontendCapabilities
        FrontendInfo info = (FrontendInfo) o;
        return mId == info.getId() && mType == info.getType()
                && Objects.equals(mFrequencyRange, info.getFrequencyRange())
                && Objects.equals(mSymbolRateRange, info.getSymbolRateRange())
                && mAcquireRange == info.getAcquireRange()
                && mExclusiveGroupId == info.getExclusiveGroupId()
                && Arrays.equals(mStatusCaps, info.getStatusCapabilities());
    }

    /** @hide */
    @Override
    public int hashCode() {
        return mId;
    }
}