blob: 1d36da34429e56aaa9161174d24df5b9c1ed41f0 [file] [log] [blame]
/*
* 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;
import android.annotation.IntDef;
import android.annotation.IntRange;
import android.annotation.NonNull;
import android.annotation.SystemApi;
import android.hardware.tv.tuner.V1_0.Constants;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
/**
* Frontend settings for analog tuner.
*
* @hide
*/
@SystemApi
public class AnalogFrontendSettings extends FrontendSettings {
/** @hide */
@IntDef(flag = true,
prefix = "SIGNAL_TYPE_",
value = {SIGNAL_TYPE_UNDEFINED, SIGNAL_TYPE_AUTO, SIGNAL_TYPE_PAL, SIGNAL_TYPE_PAL_M,
SIGNAL_TYPE_PAL_N, SIGNAL_TYPE_PAL_60, SIGNAL_TYPE_NTSC, SIGNAL_TYPE_NTSC_443,
SIGNAL_TYPE_SECAM})
@Retention(RetentionPolicy.SOURCE)
public @interface SignalType {}
/**
* Undefined analog signal type.
*/
public static final int SIGNAL_TYPE_UNDEFINED = Constants.FrontendAnalogType.UNDEFINED;
/**
* AUTO analog signal type.
*/
public static final int SIGNAL_TYPE_AUTO = Constants.FrontendAnalogType.AUTO;
/**
* PAL analog signal type.
*/
public static final int SIGNAL_TYPE_PAL = Constants.FrontendAnalogType.PAL;
/**
* PAL M analog signal type.
*/
public static final int SIGNAL_TYPE_PAL_M = Constants.FrontendAnalogType.PAL_M;
/**
* PAL N analog signal type.
*/
public static final int SIGNAL_TYPE_PAL_N = Constants.FrontendAnalogType.PAL_N;
/**
* PAL 60 analog signal type.
*/
public static final int SIGNAL_TYPE_PAL_60 = Constants.FrontendAnalogType.PAL_60;
/**
* NTSC analog signal type.
*/
public static final int SIGNAL_TYPE_NTSC = Constants.FrontendAnalogType.NTSC;
/**
* NTSC 443 analog signal type.
*/
public static final int SIGNAL_TYPE_NTSC_443 = Constants.FrontendAnalogType.NTSC_443;
/**
* SECM analog signal type.
*/
public static final int SIGNAL_TYPE_SECAM = Constants.FrontendAnalogType.SECAM;
/** @hide */
@IntDef(flag = true,
prefix = "SIF_",
value = {SIF_UNDEFINED, SIF_AUTO, SIF_BG, SIF_BG_A2, SIF_BG_NICAM, SIF_I, SIF_DK,
SIF_DK1_A2, SIF_DK2_A2, SIF_DK3_A2, SIF_DK_NICAM, SIF_L, SIF_M, SIF_M_BTSC, SIF_M_A2,
SIF_M_EIAJ, SIF_I_NICAM, SIF_L_NICAM, SIF_L_PRIME})
@Retention(RetentionPolicy.SOURCE)
public @interface SifStandard {}
/**
* Undefined Analog Standard Interchange Format (SIF).
*/
public static final int SIF_UNDEFINED = Constants.FrontendAnalogSifStandard.UNDEFINED;
/**
* Audo Analog Standard Interchange Format (SIF).
*/
public static final int SIF_AUTO = Constants.FrontendAnalogSifStandard.AUTO;
/**
* BG Analog Standard Interchange Format (SIF).
*/
public static final int SIF_BG = Constants.FrontendAnalogSifStandard.BG;
/**
* BG-A2 Analog Standard Interchange Format (SIF).
*/
public static final int SIF_BG_A2 = Constants.FrontendAnalogSifStandard.BG_A2;
/**
* BG-NICAM Analog Standard Interchange Format (SIF).
*/
public static final int SIF_BG_NICAM = Constants.FrontendAnalogSifStandard.BG_NICAM;
/**
* I Analog Standard Interchange Format (SIF).
*/
public static final int SIF_I = Constants.FrontendAnalogSifStandard.I;
/**
* DK Analog Standard Interchange Format (SIF).
*/
public static final int SIF_DK = Constants.FrontendAnalogSifStandard.DK;
/**
* DK1 A2 Analog Standard Interchange Format (SIF).
*/
public static final int SIF_DK1_A2 = Constants.FrontendAnalogSifStandard.DK1_A2;
/**
* DK2 A2 Analog Standard Interchange Format (SIF).
*/
public static final int SIF_DK2_A2 = Constants.FrontendAnalogSifStandard.DK2_A2;
/**
* DK3 A2 Analog Standard Interchange Format (SIF).
*/
public static final int SIF_DK3_A2 = Constants.FrontendAnalogSifStandard.DK3_A2;
/**
* DK-NICAM Analog Standard Interchange Format (SIF).
*/
public static final int SIF_DK_NICAM = Constants.FrontendAnalogSifStandard.DK_NICAM;
/**
* L Analog Standard Interchange Format (SIF).
*/
public static final int SIF_L = Constants.FrontendAnalogSifStandard.L;
/**
* M Analog Standard Interchange Format (SIF).
*/
public static final int SIF_M = Constants.FrontendAnalogSifStandard.M;
/**
* M-BTSC Analog Standard Interchange Format (SIF).
*/
public static final int SIF_M_BTSC = Constants.FrontendAnalogSifStandard.M_BTSC;
/**
* M-A2 Analog Standard Interchange Format (SIF).
*/
public static final int SIF_M_A2 = Constants.FrontendAnalogSifStandard.M_A2;
/**
* M-EIAJ Analog Standard Interchange Format (SIF).
*/
public static final int SIF_M_EIAJ = Constants.FrontendAnalogSifStandard.M_EIAJ;
/**
* I-NICAM Analog Standard Interchange Format (SIF).
*/
public static final int SIF_I_NICAM = Constants.FrontendAnalogSifStandard.I_NICAM;
/**
* L-NICAM Analog Standard Interchange Format (SIF).
*/
public static final int SIF_L_NICAM = Constants.FrontendAnalogSifStandard.L_NICAM;
/**
* L-PRIME Analog Standard Interchange Format (SIF).
*/
public static final int SIF_L_PRIME = Constants.FrontendAnalogSifStandard.L_PRIME;
private final int mSignalType;
private final int mSifStandard;
@Override
public int getType() {
return FrontendSettings.TYPE_ANALOG;
}
/**
* Gets analog signal type.
*/
@SignalType
public int getSignalType() {
return mSignalType;
}
/**
* Gets Standard Interchange Format (SIF).
*/
@SifStandard
public int getSifStandard() {
return mSifStandard;
}
/**
* Creates a builder for {@link AnalogFrontendSettings}.
*/
@NonNull
public static Builder builder() {
return new Builder();
}
private AnalogFrontendSettings(int frequency, int signalType, int sifStandard) {
super(frequency);
mSignalType = signalType;
mSifStandard = sifStandard;
}
/**
* Builder for {@link AnalogFrontendSettings}.
*/
public static class Builder {
private int mFrequency = 0;
private int mSignalType = SIGNAL_TYPE_UNDEFINED;
private int mSifStandard = SIF_UNDEFINED;
private Builder() {}
/**
* Sets frequency in Hz.
*
* <p>Default value is 0.
*/
@NonNull
@IntRange(from = 1)
public Builder setFrequency(int frequency) {
mFrequency = frequency;
return this;
}
/**
* Sets analog signal type.
*
* <p>Default value is {@link #SIGNAL_TYPE_UNDEFINED}.
*/
@NonNull
public Builder setSignalType(@SignalType int signalType) {
mSignalType = signalType;
return this;
}
/**
* Sets Standard Interchange Format (SIF).
*
* <p>Default value is {@link #SIF_UNDEFINED}.
*/
@NonNull
public Builder setSifStandard(@SifStandard int sifStandard) {
mSifStandard = sifStandard;
return this;
}
/**
* Builds a {@link AnalogFrontendSettings} object.
*/
@NonNull
public AnalogFrontendSettings build() {
return new AnalogFrontendSettings(mFrequency, mSignalType, mSifStandard);
}
}
}