Merge changes from topic "frstatus"
* changes: Tuner JNI to use the extended frontend status types and build up extended status struct Add Frontend Status Extended types and getter APIs
This commit is contained in:
@@ -5836,6 +5836,7 @@ package android.media.tv.tuner.frontend {
|
||||
method public int getSymbolRate();
|
||||
method public int getType();
|
||||
method public int getVcmMode();
|
||||
method public boolean isDiseqcRxMessage();
|
||||
field public static final int MODULATION_AUTO = 1; // 0x1
|
||||
field public static final int MODULATION_MOD_128APSK = 2048; // 0x800
|
||||
field public static final int MODULATION_MOD_16APSK = 256; // 0x100
|
||||
@@ -5879,6 +5880,7 @@ package android.media.tv.tuner.frontend {
|
||||
public static class DvbsFrontendSettings.Builder {
|
||||
method @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings build();
|
||||
method @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder setCodeRate(@Nullable android.media.tv.tuner.frontend.DvbsCodeRate);
|
||||
method @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder setDiseqcRxMessage(boolean);
|
||||
method @IntRange(from=1) @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder setFrequency(int);
|
||||
method @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder setInputStreamId(int);
|
||||
method @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder setModulation(int);
|
||||
@@ -6080,14 +6082,21 @@ package android.media.tv.tuner.frontend {
|
||||
public class FrontendStatus {
|
||||
method public int getAgc();
|
||||
method @NonNull public android.media.tv.tuner.frontend.FrontendStatus.Atsc3PlpTuningInfo[] getAtsc3PlpTuningInfo();
|
||||
method public int getBandwidth();
|
||||
method public int getBer();
|
||||
method @NonNull public int[] getBers();
|
||||
method @NonNull public int[] getCodeRates();
|
||||
method public int getFreqOffset();
|
||||
method public int getGuardInterval();
|
||||
method public int getHierarchy();
|
||||
method public long getInnerFec();
|
||||
method @NonNull public int[] getInterleaving();
|
||||
method @NonNull public int[] getIsdbtSegment();
|
||||
method @NonNull public boolean[] getLayerErrors();
|
||||
method public int getLnbVoltage();
|
||||
method public int getMer();
|
||||
method public int getModulation();
|
||||
method @NonNull public int[] getModulationsExt();
|
||||
method public int getPer();
|
||||
method public int getPerBer();
|
||||
method public int getPlpId();
|
||||
@@ -6096,23 +6105,34 @@ package android.media.tv.tuner.frontend {
|
||||
method public int getSnr();
|
||||
method public int getSpectralInversion();
|
||||
method public int getSymbolRate();
|
||||
method public int getSystemId();
|
||||
method public int getTransmissionMode();
|
||||
method @NonNull public int[] getTsDataRate();
|
||||
method public int getUec();
|
||||
method public boolean isDemodLocked();
|
||||
method public boolean isEwbs();
|
||||
method public boolean isLnaOn();
|
||||
method public boolean isRfLocked();
|
||||
field public static final int FRONTEND_STATUS_TYPE_AGC = 14; // 0xe
|
||||
field public static final int FRONTEND_STATUS_TYPE_ATSC3_PLP_INFO = 21; // 0x15
|
||||
field public static final int FRONTEND_STATUS_TYPE_BANDWIDTH = 25; // 0x19
|
||||
field public static final int FRONTEND_STATUS_TYPE_BER = 2; // 0x2
|
||||
field public static final int FRONTEND_STATUS_TYPE_BERS = 23; // 0x17
|
||||
field public static final int FRONTEND_STATUS_TYPE_CODERATES = 24; // 0x18
|
||||
field public static final int FRONTEND_STATUS_TYPE_DEMOD_LOCK = 0; // 0x0
|
||||
field public static final int FRONTEND_STATUS_TYPE_EWBS = 13; // 0xd
|
||||
field public static final int FRONTEND_STATUS_TYPE_FEC = 8; // 0x8
|
||||
field public static final int FRONTEND_STATUS_TYPE_FREQ_OFFSET = 18; // 0x12
|
||||
field public static final int FRONTEND_STATUS_TYPE_GUARD_INTERVAL = 26; // 0x1a
|
||||
field public static final int FRONTEND_STATUS_TYPE_HIERARCHY = 19; // 0x13
|
||||
field public static final int FRONTEND_STATUS_TYPE_INTERLEAVINGS = 30; // 0x1e
|
||||
field public static final int FRONTEND_STATUS_TYPE_ISDBT_SEGMENTS = 31; // 0x1f
|
||||
field public static final int FRONTEND_STATUS_TYPE_LAYER_ERROR = 16; // 0x10
|
||||
field public static final int FRONTEND_STATUS_TYPE_LNA = 15; // 0xf
|
||||
field public static final int FRONTEND_STATUS_TYPE_LNB_VOLTAGE = 11; // 0xb
|
||||
field public static final int FRONTEND_STATUS_TYPE_MER = 17; // 0x11
|
||||
field public static final int FRONTEND_STATUS_TYPE_MODULATION = 9; // 0x9
|
||||
field public static final int FRONTEND_STATUS_TYPE_MODULATIONS_EXT = 22; // 0x16
|
||||
field public static final int FRONTEND_STATUS_TYPE_PER = 3; // 0x3
|
||||
field public static final int FRONTEND_STATUS_TYPE_PLP_ID = 12; // 0xc
|
||||
field public static final int FRONTEND_STATUS_TYPE_PRE_BER = 4; // 0x4
|
||||
@@ -6122,6 +6142,10 @@ package android.media.tv.tuner.frontend {
|
||||
field public static final int FRONTEND_STATUS_TYPE_SNR = 1; // 0x1
|
||||
field public static final int FRONTEND_STATUS_TYPE_SPECTRAL = 10; // 0xa
|
||||
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
|
||||
field public static final int FRONTEND_STATUS_TYPE_TRANSMISSION_MODE = 27; // 0x1b
|
||||
field public static final int FRONTEND_STATUS_TYPE_TS_DATA_RATES = 32; // 0x20
|
||||
field public static final int FRONTEND_STATUS_TYPE_UEC = 28; // 0x1c
|
||||
}
|
||||
|
||||
public static class FrontendStatus.Atsc3PlpTuningInfo {
|
||||
|
||||
@@ -775,7 +775,8 @@ public class Tuner implements AutoCloseable {
|
||||
*
|
||||
* <p>This retrieve the statuses of the frontend for given status types.
|
||||
*
|
||||
* @param statusTypes an array of status types which the caller requests.
|
||||
* @param statusTypes an array of status types which the caller requests. Any types that are not
|
||||
* in {@link FrontendInfo.getStatusCapabilities()} would be ignored.
|
||||
* @return statuses which response the caller's requests. {@code null} if the operation failed.
|
||||
*/
|
||||
@Nullable
|
||||
|
||||
@@ -260,10 +260,12 @@ public class DvbsFrontendSettings extends FrontendSettings {
|
||||
private final int mVcmMode;
|
||||
// Dvbs scan type is only supported in Tuner 1.1 or higher.
|
||||
private final int mScanType;
|
||||
// isDiseqcRxMessage is only supported in Tuner 1.1 or higher.
|
||||
private final boolean mIsDiseqcRxMessage;
|
||||
|
||||
private DvbsFrontendSettings(int frequency, int modulation, DvbsCodeRate codeRate,
|
||||
int symbolRate, int rolloff, int pilot, int inputStreamId, int standard, int vcm,
|
||||
int scanType) {
|
||||
int scanType, boolean isDiseqcRxMessage) {
|
||||
super(frequency);
|
||||
mModulation = modulation;
|
||||
mCodeRate = codeRate;
|
||||
@@ -274,6 +276,7 @@ public class DvbsFrontendSettings extends FrontendSettings {
|
||||
mStandard = standard;
|
||||
mVcmMode = vcm;
|
||||
mScanType = scanType;
|
||||
mIsDiseqcRxMessage = isDiseqcRxMessage;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -337,6 +340,15 @@ public class DvbsFrontendSettings extends FrontendSettings {
|
||||
public int getScanType() {
|
||||
return mScanType;
|
||||
}
|
||||
/**
|
||||
* To receive Diseqc Message or not. Default value is false.
|
||||
*
|
||||
* The setter {@link Builder#setDiseqcRxMessage(boolean)} is only supported with Tuner HAL 1.1
|
||||
* or higher.
|
||||
*/
|
||||
public boolean isDiseqcRxMessage() {
|
||||
return mIsDiseqcRxMessage;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a builder for {@link DvbsFrontendSettings}.
|
||||
@@ -360,6 +372,7 @@ public class DvbsFrontendSettings extends FrontendSettings {
|
||||
private int mStandard = STANDARD_AUTO;
|
||||
private int mVcmMode = VCM_MODE_UNDEFINED;
|
||||
private int mScanType = SCAN_TYPE_UNDEFINED;
|
||||
private boolean mIsDiseqcRxMessage = false;
|
||||
|
||||
private Builder() {
|
||||
}
|
||||
@@ -394,6 +407,21 @@ public class DvbsFrontendSettings extends FrontendSettings {
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set true to receive Diseqc Message.
|
||||
*
|
||||
* <p>This API is only supported by Tuner HAL 1.1 or higher. Unsupported version would cause
|
||||
* no-op. Use {@link TunerVersionChecker.getTunerVersion()} to check the version.
|
||||
*/
|
||||
@NonNull
|
||||
public Builder setDiseqcRxMessage(boolean isDiseqcRxMessage) {
|
||||
if (TunerVersionChecker.checkHigherOrEqualVersionTo(
|
||||
TunerVersionChecker.TUNER_VERSION_1_1, "setDiseqcRxMessage")) {
|
||||
mIsDiseqcRxMessage = isDiseqcRxMessage;
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets Modulation.
|
||||
*
|
||||
@@ -481,7 +509,8 @@ public class DvbsFrontendSettings extends FrontendSettings {
|
||||
@NonNull
|
||||
public DvbsFrontendSettings build() {
|
||||
return new DvbsFrontendSettings(mFrequency, mModulation, mCodeRate, mSymbolRate,
|
||||
mRolloff, mPilot, mInputStreamId, mStandard, mVcmMode, mScanType);
|
||||
mRolloff, mPilot, mInputStreamId, mStandard, mVcmMode, mScanType,
|
||||
mIsDiseqcRxMessage);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -21,6 +21,7 @@ import android.annotation.NonNull;
|
||||
import android.annotation.SystemApi;
|
||||
import android.hardware.tv.tuner.V1_0.Constants;
|
||||
import android.media.tv.tuner.Lnb;
|
||||
import android.media.tv.tuner.TunerVersionChecker;
|
||||
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
@@ -43,7 +44,13 @@ public class FrontendStatus {
|
||||
FRONTEND_STATUS_TYPE_EWBS, FRONTEND_STATUS_TYPE_AGC, FRONTEND_STATUS_TYPE_LNA,
|
||||
FRONTEND_STATUS_TYPE_LAYER_ERROR, FRONTEND_STATUS_TYPE_MER,
|
||||
FRONTEND_STATUS_TYPE_FREQ_OFFSET, FRONTEND_STATUS_TYPE_HIERARCHY,
|
||||
FRONTEND_STATUS_TYPE_RF_LOCK, FRONTEND_STATUS_TYPE_ATSC3_PLP_INFO})
|
||||
FRONTEND_STATUS_TYPE_RF_LOCK, FRONTEND_STATUS_TYPE_ATSC3_PLP_INFO,
|
||||
FRONTEND_STATUS_TYPE_BERS, FRONTEND_STATUS_TYPE_CODERATES,
|
||||
FRONTEND_STATUS_TYPE_BANDWIDTH, FRONTEND_STATUS_TYPE_GUARD_INTERVAL,
|
||||
FRONTEND_STATUS_TYPE_TRANSMISSION_MODE, FRONTEND_STATUS_TYPE_UEC,
|
||||
FRONTEND_STATUS_TYPE_T2_SYSTEM_ID, FRONTEND_STATUS_TYPE_INTERLEAVINGS,
|
||||
FRONTEND_STATUS_TYPE_ISDBT_SEGMENTS, FRONTEND_STATUS_TYPE_TS_DATA_RATES,
|
||||
FRONTEND_STATUS_TYPE_MODULATIONS_EXT})
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
public @interface FrontendStatusType {}
|
||||
|
||||
@@ -145,10 +152,83 @@ public class FrontendStatus {
|
||||
*/
|
||||
public static final int FRONTEND_STATUS_TYPE_ATSC3_PLP_INFO =
|
||||
Constants.FrontendStatusType.ATSC3_PLP_INFO;
|
||||
|
||||
/**
|
||||
* BERS Type. Only supported in Tuner HAL 1.1 or higher.
|
||||
*/
|
||||
public static final int FRONTEND_STATUS_TYPE_BERS =
|
||||
android.hardware.tv.tuner.V1_1.Constants.FrontendStatusTypeExt1_1.BERS;
|
||||
/**
|
||||
* Coderate Type. Only supported in Tuner HAL 1.1 or higher.
|
||||
*/
|
||||
public static final int FRONTEND_STATUS_TYPE_CODERATES =
|
||||
android.hardware.tv.tuner.V1_1.Constants.FrontendStatusTypeExt1_1.CODERATES;
|
||||
/**
|
||||
* Bandwidth Type. Only supported in Tuner HAL 1.1 or higher.
|
||||
*/
|
||||
public static final int FRONTEND_STATUS_TYPE_BANDWIDTH =
|
||||
android.hardware.tv.tuner.V1_1.Constants.FrontendStatusTypeExt1_1.BANDWIDTH;
|
||||
/**
|
||||
* Guard Interval Type. Only supported in Tuner HAL 1.1 or higher.
|
||||
*/
|
||||
public static final int FRONTEND_STATUS_TYPE_GUARD_INTERVAL =
|
||||
android.hardware.tv.tuner.V1_1.Constants.FrontendStatusTypeExt1_1.GUARD_INTERVAL;
|
||||
/**
|
||||
* Transmission Mode Type. Only supported in Tuner HAL 1.1 or higher.
|
||||
*/
|
||||
public static final int FRONTEND_STATUS_TYPE_TRANSMISSION_MODE =
|
||||
android.hardware.tv.tuner.V1_1.Constants.FrontendStatusTypeExt1_1.TRANSMISSION_MODE;
|
||||
/**
|
||||
* UEC Type. Only supported in Tuner HAL 1.1 or higher.
|
||||
*/
|
||||
public static final int FRONTEND_STATUS_TYPE_UEC =
|
||||
android.hardware.tv.tuner.V1_1.Constants.FrontendStatusTypeExt1_1.UEC;
|
||||
/**
|
||||
* T2 System Id Type. Only supported in Tuner HAL 1.1 or higher.
|
||||
*/
|
||||
public static final int FRONTEND_STATUS_TYPE_T2_SYSTEM_ID =
|
||||
android.hardware.tv.tuner.V1_1.Constants.FrontendStatusTypeExt1_1.T2_SYSTEM_ID;
|
||||
/**
|
||||
* Interleavings Type. Only supported in Tuner HAL 1.1 or higher.
|
||||
*/
|
||||
public static final int FRONTEND_STATUS_TYPE_INTERLEAVINGS =
|
||||
android.hardware.tv.tuner.V1_1.Constants.FrontendStatusTypeExt1_1.INTERLEAVINGS;
|
||||
/**
|
||||
* ISDBT Segments Type. Only supported in Tuner HAL 1.1 or higher.
|
||||
*/
|
||||
public static final int FRONTEND_STATUS_TYPE_ISDBT_SEGMENTS =
|
||||
android.hardware.tv.tuner.V1_1.Constants.FrontendStatusTypeExt1_1.ISDBT_SEGMENTS;
|
||||
/**
|
||||
* TS Data Rates Type. Only supported in Tuner HAL 1.1 or higher.
|
||||
*/
|
||||
public static final int FRONTEND_STATUS_TYPE_TS_DATA_RATES =
|
||||
android.hardware.tv.tuner.V1_1.Constants.FrontendStatusTypeExt1_1.TS_DATA_RATES;
|
||||
/**
|
||||
* Extended Modulations Type. Only supported in Tuner HAL 1.1 or higher.
|
||||
*/
|
||||
public static final int FRONTEND_STATUS_TYPE_MODULATIONS_EXT =
|
||||
android.hardware.tv.tuner.V1_1.Constants.FrontendStatusTypeExt1_1.MODULATIONS;
|
||||
|
||||
/** @hide */
|
||||
@IntDef(value = {
|
||||
AtscFrontendSettings.MODULATION_UNDEFINED,
|
||||
AtscFrontendSettings.MODULATION_AUTO,
|
||||
AtscFrontendSettings.MODULATION_MOD_8VSB,
|
||||
AtscFrontendSettings.MODULATION_MOD_16VSB,
|
||||
Atsc3FrontendSettings.MODULATION_UNDEFINED,
|
||||
Atsc3FrontendSettings.MODULATION_AUTO,
|
||||
Atsc3FrontendSettings.MODULATION_MOD_QPSK,
|
||||
Atsc3FrontendSettings.MODULATION_MOD_16QAM,
|
||||
Atsc3FrontendSettings.MODULATION_MOD_64QAM,
|
||||
Atsc3FrontendSettings.MODULATION_MOD_256QAM,
|
||||
Atsc3FrontendSettings.MODULATION_MOD_1024QAM,
|
||||
Atsc3FrontendSettings.MODULATION_MOD_4096QAM,
|
||||
DtmbFrontendSettings.MODULATION_CONSTELLATION_UNDEFINED,
|
||||
DtmbFrontendSettings.MODULATION_CONSTELLATION_AUTO,
|
||||
DtmbFrontendSettings.MODULATION_CONSTELLATION_4QAM,
|
||||
DtmbFrontendSettings.MODULATION_CONSTELLATION_4QAM_NR,
|
||||
DtmbFrontendSettings.MODULATION_CONSTELLATION_16QAM,
|
||||
DtmbFrontendSettings.MODULATION_CONSTELLATION_32QAM,
|
||||
DtmbFrontendSettings.MODULATION_CONSTELLATION_64QAM,
|
||||
DvbcFrontendSettings.MODULATION_UNDEFINED,
|
||||
DvbcFrontendSettings.MODULATION_AUTO,
|
||||
DvbcFrontendSettings.MODULATION_MOD_16QAM,
|
||||
@@ -171,6 +251,16 @@ public class FrontendStatus {
|
||||
DvbsFrontendSettings.MODULATION_MOD_128APSK,
|
||||
DvbsFrontendSettings.MODULATION_MOD_256APSK,
|
||||
DvbsFrontendSettings.MODULATION_MOD_RESERVED,
|
||||
DvbtFrontendSettings.CONSTELLATION_UNDEFINED,
|
||||
DvbtFrontendSettings.CONSTELLATION_AUTO,
|
||||
DvbtFrontendSettings.CONSTELLATION_QPSK,
|
||||
DvbtFrontendSettings.CONSTELLATION_16QAM,
|
||||
DvbtFrontendSettings.CONSTELLATION_64QAM,
|
||||
DvbtFrontendSettings.CONSTELLATION_256QAM,
|
||||
DvbtFrontendSettings.CONSTELLATION_QPSK_R,
|
||||
DvbtFrontendSettings.CONSTELLATION_16QAM_R,
|
||||
DvbtFrontendSettings.CONSTELLATION_64QAM_R,
|
||||
DvbtFrontendSettings.CONSTELLATION_256QAM_R,
|
||||
IsdbsFrontendSettings.MODULATION_UNDEFINED,
|
||||
IsdbsFrontendSettings.MODULATION_AUTO,
|
||||
IsdbsFrontendSettings.MODULATION_MOD_BPSK,
|
||||
@@ -192,6 +282,101 @@ public class FrontendStatus {
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
public @interface FrontendModulation {}
|
||||
|
||||
/** @hide */
|
||||
@IntDef(value = {
|
||||
Atsc3FrontendSettings.TIME_INTERLEAVE_MODE_UNDEFINED,
|
||||
Atsc3FrontendSettings.TIME_INTERLEAVE_MODE_AUTO,
|
||||
Atsc3FrontendSettings.TIME_INTERLEAVE_MODE_CTI,
|
||||
Atsc3FrontendSettings.TIME_INTERLEAVE_MODE_HTI,
|
||||
DtmbFrontendSettings.TIME_INTERLEAVE_MODE_UNDEFINED,
|
||||
DtmbFrontendSettings.TIME_INTERLEAVE_MODE_AUTO,
|
||||
DtmbFrontendSettings.TIME_INTERLEAVE_MODE_TIMER_INT_240,
|
||||
DtmbFrontendSettings.TIME_INTERLEAVE_MODE_TIMER_INT_720,
|
||||
DvbcFrontendSettings.TIME_INTERLEAVE_MODE_UNDEFINED,
|
||||
DvbcFrontendSettings.TIME_INTERLEAVE_MODE_AUTO,
|
||||
DvbcFrontendSettings.TIME_INTERLEAVE_MODE_128_1_0,
|
||||
DvbcFrontendSettings.TIME_INTERLEAVE_MODE_128_1_1,
|
||||
DvbcFrontendSettings.TIME_INTERLEAVE_MODE_64_2,
|
||||
DvbcFrontendSettings.TIME_INTERLEAVE_MODE_32_4,
|
||||
DvbcFrontendSettings.TIME_INTERLEAVE_MODE_16_8,
|
||||
DvbcFrontendSettings.TIME_INTERLEAVE_MODE_8_16,
|
||||
DvbcFrontendSettings.TIME_INTERLEAVE_MODE_128_2,
|
||||
DvbcFrontendSettings.TIME_INTERLEAVE_MODE_128_3,
|
||||
DvbcFrontendSettings.TIME_INTERLEAVE_MODE_128_4})
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
public @interface FrontendInterleaveMode {}
|
||||
|
||||
/** @hide */
|
||||
@IntDef(value = {
|
||||
Atsc3FrontendSettings.BANDWIDTH_UNDEFINED,
|
||||
Atsc3FrontendSettings.BANDWIDTH_AUTO,
|
||||
Atsc3FrontendSettings.BANDWIDTH_BANDWIDTH_6MHZ,
|
||||
Atsc3FrontendSettings.BANDWIDTH_BANDWIDTH_7MHZ,
|
||||
Atsc3FrontendSettings.BANDWIDTH_BANDWIDTH_8MHZ,
|
||||
DtmbFrontendSettings.BANDWIDTH_UNDEFINED,
|
||||
DtmbFrontendSettings.BANDWIDTH_AUTO,
|
||||
DtmbFrontendSettings.BANDWIDTH_6MHZ,
|
||||
DtmbFrontendSettings.BANDWIDTH_8MHZ,
|
||||
DvbtFrontendSettings.BANDWIDTH_UNDEFINED,
|
||||
DvbtFrontendSettings.BANDWIDTH_AUTO,
|
||||
DvbtFrontendSettings.BANDWIDTH_8MHZ,
|
||||
DvbtFrontendSettings.BANDWIDTH_7MHZ,
|
||||
DvbtFrontendSettings.BANDWIDTH_6MHZ,
|
||||
DvbtFrontendSettings.BANDWIDTH_5MHZ,
|
||||
DvbtFrontendSettings.BANDWIDTH_1_7MHZ,
|
||||
DvbtFrontendSettings.BANDWIDTH_10MHZ,
|
||||
IsdbtFrontendSettings.BANDWIDTH_UNDEFINED,
|
||||
IsdbtFrontendSettings.BANDWIDTH_AUTO,
|
||||
IsdbtFrontendSettings.BANDWIDTH_8MHZ,
|
||||
IsdbtFrontendSettings.BANDWIDTH_7MHZ,
|
||||
IsdbtFrontendSettings.BANDWIDTH_6MHZ})
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
public @interface FrontendBandwidth {}
|
||||
|
||||
/** @hide */
|
||||
@IntDef(value = {
|
||||
DtmbFrontendSettings.TRANSMISSION_MODE_UNDEFINED,
|
||||
DtmbFrontendSettings.TRANSMISSION_MODE_AUTO,
|
||||
DtmbFrontendSettings.TRANSMISSION_MODE_C1,
|
||||
DtmbFrontendSettings.TRANSMISSION_MODE_C3780,
|
||||
DvbtFrontendSettings.TRANSMISSION_MODE_UNDEFINED,
|
||||
DvbtFrontendSettings.TRANSMISSION_MODE_AUTO,
|
||||
DvbtFrontendSettings.TRANSMISSION_MODE_2K,
|
||||
DvbtFrontendSettings.TRANSMISSION_MODE_8K,
|
||||
DvbtFrontendSettings.TRANSMISSION_MODE_4K,
|
||||
DvbtFrontendSettings.TRANSMISSION_MODE_1K,
|
||||
DvbtFrontendSettings.TRANSMISSION_MODE_16K,
|
||||
DvbtFrontendSettings.TRANSMISSION_MODE_32K,
|
||||
IsdbtFrontendSettings.MODE_UNDEFINED,
|
||||
IsdbtFrontendSettings.MODE_AUTO,
|
||||
IsdbtFrontendSettings.MODE_1,
|
||||
IsdbtFrontendSettings.MODE_2,
|
||||
IsdbtFrontendSettings.MODE_3})
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
public @interface FrontendTransmissionMode {}
|
||||
|
||||
/** @hide */
|
||||
@IntDef(value = {
|
||||
DtmbFrontendSettings.GUARD_INTERVAL_UNDEFINED,
|
||||
DtmbFrontendSettings.GUARD_INTERVAL_AUTO,
|
||||
DtmbFrontendSettings.GUARD_INTERVAL_PN_420_VARIOUS,
|
||||
DtmbFrontendSettings.GUARD_INTERVAL_PN_595_CONST,
|
||||
DtmbFrontendSettings.GUARD_INTERVAL_PN_945_VARIOUS,
|
||||
DtmbFrontendSettings.GUARD_INTERVAL_PN_420_CONST,
|
||||
DtmbFrontendSettings.GUARD_INTERVAL_PN_945_CONST,
|
||||
DtmbFrontendSettings.GUARD_INTERVAL_PN_RESERVED,
|
||||
DvbtFrontendSettings.GUARD_INTERVAL_UNDEFINED,
|
||||
DvbtFrontendSettings.GUARD_INTERVAL_AUTO,
|
||||
DvbtFrontendSettings.GUARD_INTERVAL_1_32,
|
||||
DvbtFrontendSettings.GUARD_INTERVAL_1_16,
|
||||
DvbtFrontendSettings.GUARD_INTERVAL_1_8,
|
||||
DvbtFrontendSettings.GUARD_INTERVAL_1_4,
|
||||
DvbtFrontendSettings.GUARD_INTERVAL_1_128,
|
||||
DvbtFrontendSettings.GUARD_INTERVAL_19_128,
|
||||
DvbtFrontendSettings.GUARD_INTERVAL_19_256,
|
||||
DvbtFrontendSettings.GUARD_INTERVAL_19_128})
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
public @interface FrontendGuardInterval {}
|
||||
|
||||
private Boolean mIsDemodLocked;
|
||||
private Integer mSnr;
|
||||
@@ -215,6 +400,18 @@ public class FrontendStatus {
|
||||
private Integer mHierarchy;
|
||||
private Boolean mIsRfLocked;
|
||||
private Atsc3PlpTuningInfo[] mPlpInfo;
|
||||
private int[] mBers;
|
||||
private int[] mCodeRates;
|
||||
private Integer mBandwidth;
|
||||
private Integer mGuardInterval;
|
||||
private Integer mTransmissionMode;
|
||||
private Integer mUec;
|
||||
private Integer mSystemId;
|
||||
private int[] mInterleaving;
|
||||
private int[] mTsDataRate;
|
||||
private int[] mIsdbtSegment;
|
||||
private int[] mModulationsExt;
|
||||
|
||||
|
||||
// Constructed and fields set by JNI code.
|
||||
private FrontendStatus() {
|
||||
@@ -323,7 +520,7 @@ public class FrontendStatus {
|
||||
/**
|
||||
* Gets Spectral Inversion for DVBC.
|
||||
*/
|
||||
@DvbcFrontendSettings.SpectralInversion
|
||||
@FrontendSettings.FrontendSpectralInversion
|
||||
public int getSpectralInversion() {
|
||||
if (mInversion == null) {
|
||||
throw new IllegalStateException();
|
||||
@@ -436,6 +633,182 @@ public class FrontendStatus {
|
||||
return mPlpInfo;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets an array of BERS status.
|
||||
*
|
||||
* <p>This status query is only supported by Tuner HAL 1.1 or higher. Use
|
||||
* {@link TunerVersionChecker.getTunerVersion()} to check the version.
|
||||
*/
|
||||
@NonNull
|
||||
public int[] getBers() {
|
||||
TunerVersionChecker.checkHigherOrEqualVersionTo(
|
||||
TunerVersionChecker.TUNER_VERSION_1_1, "getBers status");
|
||||
if (mBers == null) {
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
return mBers;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets an array of code rates status.
|
||||
*
|
||||
* <p>This status query is only supported by Tuner HAL 1.1 or higher. Use
|
||||
* {@link TunerVersionChecker.getTunerVersion()} to check the version.
|
||||
*/
|
||||
@NonNull
|
||||
public int[] getCodeRates() {
|
||||
TunerVersionChecker.checkHigherOrEqualVersionTo(
|
||||
TunerVersionChecker.TUNER_VERSION_1_1, "getCodeRates status");
|
||||
if (mCodeRates == null) {
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
return mCodeRates;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets bandwidth status.
|
||||
*
|
||||
* <p>This status query is only supported by Tuner HAL 1.1 or higher. Use
|
||||
* {@link TunerVersionChecker.getTunerVersion()} to check the version.
|
||||
*/
|
||||
@FrontendBandwidth
|
||||
public int getBandwidth() {
|
||||
TunerVersionChecker.checkHigherOrEqualVersionTo(
|
||||
TunerVersionChecker.TUNER_VERSION_1_1, "getBandwidth status");
|
||||
if (mBandwidth == null) {
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
return mBandwidth;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets guard interval status.
|
||||
*
|
||||
* <p>This status query is only supported by Tuner HAL 1.1 or higher. Use
|
||||
* {@link TunerVersionChecker.getTunerVersion()} to check the version.
|
||||
*/
|
||||
@FrontendGuardInterval
|
||||
public int getGuardInterval() {
|
||||
TunerVersionChecker.checkHigherOrEqualVersionTo(
|
||||
TunerVersionChecker.TUNER_VERSION_1_1, "getGuardInterval status");
|
||||
if (mGuardInterval == null) {
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
return mGuardInterval;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets tansmission mode status.
|
||||
*
|
||||
* <p>This status query is only supported by Tuner HAL 1.1 or higher. Use
|
||||
* {@link TunerVersionChecker.getTunerVersion()} to check the version.
|
||||
*/
|
||||
@FrontendTransmissionMode
|
||||
public int getTransmissionMode() {
|
||||
TunerVersionChecker.checkHigherOrEqualVersionTo(
|
||||
TunerVersionChecker.TUNER_VERSION_1_1, "getTransmissionMode status");
|
||||
if (mTransmissionMode == null) {
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
return mTransmissionMode;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets UEC status.
|
||||
*
|
||||
* <p>This status query is only supported by Tuner HAL 1.1 or higher. Use
|
||||
* {@link TunerVersionChecker.getTunerVersion()} to check the version.
|
||||
*/
|
||||
public int getUec() {
|
||||
TunerVersionChecker.checkHigherOrEqualVersionTo(
|
||||
TunerVersionChecker.TUNER_VERSION_1_1, "getUec status");
|
||||
if (mUec == null) {
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
return mUec;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets system id status.
|
||||
*
|
||||
* <p>This status query is only supported by Tuner HAL 1.1 or higher. Use
|
||||
* {@link TunerVersionChecker.getTunerVersion()} to check the version.
|
||||
*/
|
||||
public int getSystemId() {
|
||||
TunerVersionChecker.checkHigherOrEqualVersionTo(
|
||||
TunerVersionChecker.TUNER_VERSION_1_1, "getSystemId status");
|
||||
if (mSystemId == null) {
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
return mSystemId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets an array of interleaving status. Array value should be withink {@link
|
||||
* FrontendInterleaveMode}.
|
||||
*
|
||||
* <p>This status query is only supported by Tuner HAL 1.1 or higher. Use
|
||||
* {@link TunerVersionChecker.getTunerVersion()} to check the version.
|
||||
*/
|
||||
@NonNull
|
||||
public int[] getInterleaving() {
|
||||
TunerVersionChecker.checkHigherOrEqualVersionTo(
|
||||
TunerVersionChecker.TUNER_VERSION_1_1, "getInterleaving status");
|
||||
if (mInterleaving == null) {
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
return mInterleaving;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets an array of isdbt segment status.
|
||||
*
|
||||
* <p>This status query is only supported by Tuner HAL 1.1 or higher. Use
|
||||
* {@link TunerVersionChecker.getTunerVersion()} to check the version.
|
||||
*/
|
||||
@NonNull
|
||||
public int[] getIsdbtSegment() {
|
||||
TunerVersionChecker.checkHigherOrEqualVersionTo(
|
||||
TunerVersionChecker.TUNER_VERSION_1_1, "getIsdbtSegment status");
|
||||
if (mIsdbtSegment == null) {
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
return mIsdbtSegment;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets an array of TS data rate status.
|
||||
*
|
||||
* <p>This status query is only supported by Tuner HAL 1.1 or higher. Use
|
||||
* {@link TunerVersionChecker.getTunerVersion()} to check the version.
|
||||
*/
|
||||
@NonNull
|
||||
public int[] getTsDataRate() {
|
||||
TunerVersionChecker.checkHigherOrEqualVersionTo(
|
||||
TunerVersionChecker.TUNER_VERSION_1_1, "getTsDataRate status");
|
||||
if (mTsDataRate == null) {
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
return mTsDataRate;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets an array of the extended modulations status. Array value should be withink {@link
|
||||
* FrontendModulation}.
|
||||
*
|
||||
* <p>This status query is only supported by Tuner HAL 1.1 or higher. Use
|
||||
* {@link TunerVersionChecker.getTunerVersion()} to check the version.
|
||||
*/
|
||||
@NonNull
|
||||
public int[] getModulationsExt() {
|
||||
TunerVersionChecker.checkHigherOrEqualVersionTo(
|
||||
TunerVersionChecker.TUNER_VERSION_1_1, "getModulationsExt status");
|
||||
if (mModulationsExt == null) {
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
return mModulationsExt;
|
||||
}
|
||||
|
||||
/**
|
||||
* Status for each tuning Physical Layer Pipes.
|
||||
*/
|
||||
|
||||
@@ -136,6 +136,7 @@ using ::android::hardware::tv::tuner::V1_1::Constant;
|
||||
using ::android::hardware::tv::tuner::V1_1::Constant64Bit;
|
||||
using ::android::hardware::tv::tuner::V1_1::FrontendAnalogAftFlag;
|
||||
using ::android::hardware::tv::tuner::V1_1::FrontendAnalogSettingsExt1_1;
|
||||
using ::android::hardware::tv::tuner::V1_1::FrontendBandwidth;
|
||||
using ::android::hardware::tv::tuner::V1_1::FrontendCableTimeInterleaveMode;
|
||||
using ::android::hardware::tv::tuner::V1_1::FrontendDvbsScanType;
|
||||
using ::android::hardware::tv::tuner::V1_1::FrontendDvbcSettingsExt1_1;
|
||||
@@ -149,7 +150,13 @@ using ::android::hardware::tv::tuner::V1_1::FrontendDtmbModulation;
|
||||
using ::android::hardware::tv::tuner::V1_1::FrontendDtmbSettings;
|
||||
using ::android::hardware::tv::tuner::V1_1::FrontendDtmbTimeInterleaveMode;
|
||||
using ::android::hardware::tv::tuner::V1_1::FrontendDtmbTransmissionMode;
|
||||
using ::android::hardware::tv::tuner::V1_1::FrontendGuardInterval;
|
||||
using ::android::hardware::tv::tuner::V1_1::FrontendInterleaveMode;
|
||||
using ::android::hardware::tv::tuner::V1_1::FrontendModulation;
|
||||
using ::android::hardware::tv::tuner::V1_1::FrontendSpectralInversion;
|
||||
using ::android::hardware::tv::tuner::V1_1::FrontendStatusExt1_1;
|
||||
using ::android::hardware::tv::tuner::V1_1::FrontendStatusTypeExt1_1;
|
||||
using ::android::hardware::tv::tuner::V1_1::FrontendTransmissionMode;
|
||||
|
||||
struct fields_t {
|
||||
jfieldID tunerContext;
|
||||
@@ -1862,18 +1869,49 @@ jobject JTuner::getFrontendStatus(jintArray types) {
|
||||
}
|
||||
JNIEnv *env = AndroidRuntime::getJNIEnv();
|
||||
jsize size = env->GetArrayLength(types);
|
||||
std::vector<FrontendStatusType> v(size);
|
||||
env->GetIntArrayRegion(types, 0, size, reinterpret_cast<jint*>(&v[0]));
|
||||
jint intTypes[size];
|
||||
env->GetIntArrayRegion(types, 0, size, intTypes);
|
||||
std::vector<FrontendStatusType> v;
|
||||
std::vector<FrontendStatusTypeExt1_1> v_1_1;
|
||||
for (int i = 0; i < size; i++) {
|
||||
if (isV1_1ExtendedStatusType(intTypes[i])) {
|
||||
v_1_1.push_back(static_cast<FrontendStatusTypeExt1_1>(intTypes[i]));
|
||||
} else {
|
||||
v.push_back(static_cast<FrontendStatusType>(intTypes[i]));
|
||||
}
|
||||
}
|
||||
|
||||
Result res;
|
||||
hidl_vec<FrontendStatus> status;
|
||||
mFe->getStatus(v,
|
||||
[&](Result r, const hidl_vec<FrontendStatus>& s) {
|
||||
res = r;
|
||||
status = s;
|
||||
});
|
||||
if (res != Result::SUCCESS) {
|
||||
return NULL;
|
||||
hidl_vec<FrontendStatusExt1_1> status_1_1;
|
||||
|
||||
if (v.size() > 0) {
|
||||
mFe->getStatus(v,
|
||||
[&](Result r, const hidl_vec<FrontendStatus>& s) {
|
||||
res = r;
|
||||
status = s;
|
||||
});
|
||||
if (res != Result::SUCCESS) {
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
if (v_1_1.size() > 0) {
|
||||
sp<::android::hardware::tv::tuner::V1_1::IFrontend> iFeSp_1_1;
|
||||
iFeSp_1_1 = ::android::hardware::tv::tuner::V1_1::IFrontend::castFrom(mFe);
|
||||
|
||||
if (iFeSp_1_1 != NULL) {
|
||||
iFeSp_1_1->getStatusExt1_1(v_1_1,
|
||||
[&](Result r, const hidl_vec<FrontendStatusExt1_1>& s) {
|
||||
res = r;
|
||||
status_1_1 = s;
|
||||
});
|
||||
if (res != Result::SUCCESS) {
|
||||
return NULL;
|
||||
}
|
||||
} else {
|
||||
ALOGW("getStatusExt1_1 is not supported with the current HAL implementation.");
|
||||
}
|
||||
}
|
||||
|
||||
jclass clazz = env->FindClass("android/media/tv/tuner/frontend/FrontendStatus");
|
||||
@@ -2101,9 +2139,256 @@ jobject JTuner::getFrontendStatus(jintArray types) {
|
||||
}
|
||||
}
|
||||
|
||||
for (auto s : status_1_1) {
|
||||
switch(s.getDiscriminator()) {
|
||||
case FrontendStatusExt1_1::hidl_discriminator::modulations: {
|
||||
jfieldID field = env->GetFieldID(clazz, "mModulationsExt", "[I");
|
||||
std::vector<FrontendModulation> v = s.modulations();
|
||||
|
||||
jintArray valObj = env->NewIntArray(v.size());
|
||||
bool valid = false;
|
||||
jint m[1];
|
||||
for (int i = 0; i < v.size(); i++) {
|
||||
auto modulation = v[i];
|
||||
switch(modulation.getDiscriminator()) {
|
||||
case FrontendModulation::hidl_discriminator::dvbc: {
|
||||
m[0] = static_cast<jint>(modulation.dvbc());
|
||||
env->SetIntArrayRegion(valObj, i, 1, m);
|
||||
valid = true;
|
||||
break;
|
||||
}
|
||||
case FrontendModulation::hidl_discriminator::dvbs: {
|
||||
m[0] = static_cast<jint>(modulation.dvbs());
|
||||
env->SetIntArrayRegion(valObj, i, 1, m);
|
||||
valid = true;
|
||||
break;
|
||||
}
|
||||
case FrontendModulation::hidl_discriminator::dvbt: {
|
||||
m[0] = static_cast<jint>(modulation.dvbt());
|
||||
env->SetIntArrayRegion(valObj, i, 1, m);
|
||||
valid = true;
|
||||
break;
|
||||
}
|
||||
case FrontendModulation::hidl_discriminator::isdbs: {
|
||||
m[0] = static_cast<jint>(modulation.isdbs());
|
||||
env->SetIntArrayRegion(valObj, i, 1, m);
|
||||
valid = true;
|
||||
break;
|
||||
}
|
||||
case FrontendModulation::hidl_discriminator::isdbs3: {
|
||||
m[0] = static_cast<jint>(modulation.isdbs3());
|
||||
env->SetIntArrayRegion(valObj, i, 1, m);
|
||||
valid = true;
|
||||
break;
|
||||
}
|
||||
case FrontendModulation::hidl_discriminator::isdbt: {
|
||||
m[0] = static_cast<jint>(modulation.isdbt());
|
||||
env->SetIntArrayRegion(valObj, i, 1, m);
|
||||
valid = true;
|
||||
break;
|
||||
}
|
||||
case FrontendModulation::hidl_discriminator::atsc: {
|
||||
m[0] = static_cast<jint>(modulation.atsc());
|
||||
env->SetIntArrayRegion(valObj, i, 1, m);
|
||||
valid = true;
|
||||
break;
|
||||
}
|
||||
case FrontendModulation::hidl_discriminator::atsc3: {
|
||||
m[0] = static_cast<jint>(modulation.atsc3());
|
||||
env->SetIntArrayRegion(valObj, i, 1, m);
|
||||
valid = true;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (valid) {
|
||||
env->SetObjectField(statusObj, field, valObj);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case FrontendStatusExt1_1::hidl_discriminator::bers: {
|
||||
jfieldID field = env->GetFieldID(clazz, "mBers", "[I");
|
||||
std::vector<uint32_t> v = s.bers();
|
||||
|
||||
jintArray valObj = env->NewIntArray(v.size());
|
||||
env->SetIntArrayRegion(valObj, 0, v.size(), reinterpret_cast<jint*>(&v[0]));
|
||||
|
||||
env->SetObjectField(statusObj, field, valObj);
|
||||
break;
|
||||
}
|
||||
case FrontendStatusExt1_1::hidl_discriminator::codeRates: {
|
||||
jfieldID field = env->GetFieldID(clazz, "mCodeRates", "[I");
|
||||
std::vector<::android::hardware::tv::tuner::V1_1::FrontendInnerFec> v
|
||||
= s.codeRates();
|
||||
|
||||
jintArray valObj = env->NewIntArray(v.size());
|
||||
env->SetIntArrayRegion(valObj, 0, v.size(), reinterpret_cast<jint*>(&v[0]));
|
||||
|
||||
env->SetObjectField(statusObj, field, valObj);
|
||||
break;
|
||||
}
|
||||
case FrontendStatusExt1_1::hidl_discriminator::bandwidth: {
|
||||
jfieldID field = env->GetFieldID(clazz, "mBandwidth", "Ljava/lang/Integer;");
|
||||
auto bandwidth = s.bandwidth();
|
||||
jint intBandwidth;
|
||||
bool valid = true;
|
||||
switch(bandwidth.getDiscriminator()) {
|
||||
case FrontendBandwidth::hidl_discriminator::atsc3: {
|
||||
intBandwidth = static_cast<jint>(bandwidth.atsc3());
|
||||
break;
|
||||
}
|
||||
case FrontendBandwidth::hidl_discriminator::dvbt: {
|
||||
intBandwidth = static_cast<jint>(bandwidth.dvbt());
|
||||
break;
|
||||
}
|
||||
case FrontendBandwidth::hidl_discriminator::isdbt: {
|
||||
intBandwidth = static_cast<jint>(bandwidth.isdbt());
|
||||
break;
|
||||
}
|
||||
default:
|
||||
valid = false;
|
||||
break;
|
||||
}
|
||||
if (valid) {
|
||||
jobject newIntegerObj = env->NewObject(intClazz, initInt, intBandwidth);
|
||||
env->SetObjectField(statusObj, field, newIntegerObj);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case FrontendStatusExt1_1::hidl_discriminator::interval: {
|
||||
jfieldID field = env->GetFieldID(clazz, "mGuardInterval", "Ljava/lang/Integer;");
|
||||
auto interval = s.interval();
|
||||
jint intInterval;
|
||||
bool valid = true;
|
||||
switch(interval.getDiscriminator()) {
|
||||
case FrontendGuardInterval::hidl_discriminator::dvbt: {
|
||||
intInterval = static_cast<jint>(interval.dvbt());
|
||||
break;
|
||||
}
|
||||
case FrontendGuardInterval::hidl_discriminator::isdbt: {
|
||||
intInterval = static_cast<jint>(interval.isdbt());
|
||||
break;
|
||||
}
|
||||
default:
|
||||
valid = false;
|
||||
break;
|
||||
}
|
||||
if (valid) {
|
||||
jobject newIntegerObj = env->NewObject(intClazz, initInt, intInterval);
|
||||
env->SetObjectField(statusObj, field, newIntegerObj);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case FrontendStatusExt1_1::hidl_discriminator::transmissionMode: {
|
||||
jfieldID field = env->GetFieldID(clazz, "mTransmissionMode", "Ljava/lang/Integer;");
|
||||
auto transmissionMode = s.transmissionMode();
|
||||
jint intTransmissionMode;
|
||||
bool valid = true;
|
||||
switch(transmissionMode.getDiscriminator()) {
|
||||
case FrontendTransmissionMode::hidl_discriminator::dvbt: {
|
||||
intTransmissionMode = static_cast<jint>(transmissionMode.dvbt());
|
||||
break;
|
||||
}
|
||||
case FrontendTransmissionMode::hidl_discriminator::isdbt: {
|
||||
intTransmissionMode = static_cast<jint>(transmissionMode.isdbt());
|
||||
break;
|
||||
}
|
||||
default:
|
||||
valid = false;
|
||||
break;
|
||||
}
|
||||
if (valid) {
|
||||
jobject newIntegerObj = env->NewObject(intClazz, initInt, intTransmissionMode);
|
||||
env->SetObjectField(statusObj, field, newIntegerObj);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case FrontendStatusExt1_1::hidl_discriminator::uec: {
|
||||
jfieldID field = env->GetFieldID(clazz, "mUec", "Ljava/lang/Integer;");
|
||||
jobject newIntegerObj = env->NewObject(
|
||||
intClazz, initInt, static_cast<jint>(s.uec()));
|
||||
env->SetObjectField(statusObj, field, newIntegerObj);
|
||||
break;
|
||||
}
|
||||
case FrontendStatusExt1_1::hidl_discriminator::systemId: {
|
||||
jfieldID field = env->GetFieldID(clazz, "mSystemId", "Ljava/lang/Integer;");
|
||||
jobject newIntegerObj = env->NewObject(
|
||||
intClazz, initInt, static_cast<jint>(s.systemId()));
|
||||
env->SetObjectField(statusObj, field, newIntegerObj);
|
||||
break;
|
||||
}
|
||||
case FrontendStatusExt1_1::hidl_discriminator::interleaving: {
|
||||
jfieldID field = env->GetFieldID(clazz, "mInterleaving", "[I");
|
||||
|
||||
std::vector<FrontendInterleaveMode> v = s.interleaving();
|
||||
jintArray valObj = env->NewIntArray(v.size());
|
||||
bool valid = false;
|
||||
jint in[1];
|
||||
for (int i = 0; i < v.size(); i++) {
|
||||
auto interleaving = v[i];
|
||||
switch(interleaving.getDiscriminator()) {
|
||||
case FrontendInterleaveMode::hidl_discriminator::atsc3: {
|
||||
in[0] = static_cast<jint>(interleaving.atsc3());
|
||||
env->SetIntArrayRegion(valObj, i, 1, in);
|
||||
valid = true;
|
||||
break;
|
||||
}
|
||||
case FrontendInterleaveMode::hidl_discriminator::dvbc: {
|
||||
in[0] = static_cast<jint>(interleaving.dvbc());
|
||||
env->SetIntArrayRegion(valObj, i, 1, in);
|
||||
valid = true;
|
||||
break;
|
||||
}
|
||||
case FrontendInterleaveMode::hidl_discriminator::dtmb: {
|
||||
in[0] = static_cast<jint>(interleaving.dtmb());
|
||||
env->SetIntArrayRegion(valObj, i, 1, in);
|
||||
valid = true;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (valid) {
|
||||
env->SetObjectField(statusObj, field, valObj);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case FrontendStatusExt1_1::hidl_discriminator::isdbtSegment: {
|
||||
jfieldID field = env->GetFieldID(clazz, "mIsdbtSegment", "[I");
|
||||
std::vector<uint8_t> v = s.isdbtSegment();
|
||||
|
||||
jintArray valObj = env->NewIntArray(v.size());
|
||||
env->SetIntArrayRegion(valObj, 0, v.size(), reinterpret_cast<jint*>(&v[0]));
|
||||
|
||||
env->SetObjectField(statusObj, field, valObj);
|
||||
break;
|
||||
}
|
||||
case FrontendStatusExt1_1::hidl_discriminator::tsDataRate: {
|
||||
jfieldID field = env->GetFieldID(clazz, "mTsDataRate", "[I");
|
||||
std::vector<uint32_t> v = s.tsDataRate();
|
||||
|
||||
jintArray valObj = env->NewIntArray(v.size());
|
||||
env->SetIntArrayRegion(valObj, 0, v.size(), reinterpret_cast<jint*>(&v[0]));
|
||||
|
||||
env->SetObjectField(statusObj, field, valObj);
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return statusObj;
|
||||
}
|
||||
|
||||
bool JTuner::isV1_1ExtendedStatusType(int type) {
|
||||
return (type > static_cast<int>(FrontendStatusType::ATSC3_PLP_INFO)
|
||||
&& type <= static_cast<int>(FrontendStatusTypeExt1_1::TS_DATA_RATES));
|
||||
}
|
||||
|
||||
jint JTuner::closeFrontend() {
|
||||
Result r = Result::SUCCESS;
|
||||
if (mFe != NULL) {
|
||||
|
||||
@@ -268,6 +268,8 @@ private:
|
||||
static jobject getIsdbsFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities& caps);
|
||||
static jobject getIsdbtFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities& caps);
|
||||
static jobject getDtmbFrontendCaps(JNIEnv *env, int id);
|
||||
|
||||
bool isV1_1ExtendedStatusType(jint type);
|
||||
};
|
||||
|
||||
class C2DataIdInfo : public C2Param {
|
||||
|
||||
@@ -5776,6 +5776,7 @@ package android.media.tv.tuner.frontend {
|
||||
method public int getSymbolRate();
|
||||
method public int getType();
|
||||
method public int getVcmMode();
|
||||
method public boolean isDiseqcRxMessage();
|
||||
field public static final int MODULATION_AUTO = 1; // 0x1
|
||||
field public static final int MODULATION_MOD_128APSK = 2048; // 0x800
|
||||
field public static final int MODULATION_MOD_16APSK = 256; // 0x100
|
||||
@@ -5819,6 +5820,7 @@ package android.media.tv.tuner.frontend {
|
||||
public static class DvbsFrontendSettings.Builder {
|
||||
method @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings build();
|
||||
method @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder setCodeRate(@Nullable android.media.tv.tuner.frontend.DvbsCodeRate);
|
||||
method @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder setDiseqcRxMessage(boolean);
|
||||
method @IntRange(from=1) @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder setFrequency(int);
|
||||
method @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder setInputStreamId(int);
|
||||
method @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder setModulation(int);
|
||||
@@ -6020,14 +6022,21 @@ package android.media.tv.tuner.frontend {
|
||||
public class FrontendStatus {
|
||||
method public int getAgc();
|
||||
method @NonNull public android.media.tv.tuner.frontend.FrontendStatus.Atsc3PlpTuningInfo[] getAtsc3PlpTuningInfo();
|
||||
method public int getBandwidth();
|
||||
method public int getBer();
|
||||
method @NonNull public int[] getBers();
|
||||
method @NonNull public int[] getCodeRates();
|
||||
method public int getFreqOffset();
|
||||
method public int getGuardInterval();
|
||||
method public int getHierarchy();
|
||||
method public long getInnerFec();
|
||||
method @NonNull public int[] getInterleaving();
|
||||
method @NonNull public int[] getIsdbtSegment();
|
||||
method @NonNull public boolean[] getLayerErrors();
|
||||
method public int getLnbVoltage();
|
||||
method public int getMer();
|
||||
method public int getModulation();
|
||||
method @NonNull public int[] getModulationsExt();
|
||||
method public int getPer();
|
||||
method public int getPerBer();
|
||||
method public int getPlpId();
|
||||
@@ -6036,23 +6045,34 @@ package android.media.tv.tuner.frontend {
|
||||
method public int getSnr();
|
||||
method public int getSpectralInversion();
|
||||
method public int getSymbolRate();
|
||||
method public int getSystemId();
|
||||
method public int getTransmissionMode();
|
||||
method @NonNull public int[] getTsDataRate();
|
||||
method public int getUec();
|
||||
method public boolean isDemodLocked();
|
||||
method public boolean isEwbs();
|
||||
method public boolean isLnaOn();
|
||||
method public boolean isRfLocked();
|
||||
field public static final int FRONTEND_STATUS_TYPE_AGC = 14; // 0xe
|
||||
field public static final int FRONTEND_STATUS_TYPE_ATSC3_PLP_INFO = 21; // 0x15
|
||||
field public static final int FRONTEND_STATUS_TYPE_BANDWIDTH = 25; // 0x19
|
||||
field public static final int FRONTEND_STATUS_TYPE_BER = 2; // 0x2
|
||||
field public static final int FRONTEND_STATUS_TYPE_BERS = 23; // 0x17
|
||||
field public static final int FRONTEND_STATUS_TYPE_CODERATES = 24; // 0x18
|
||||
field public static final int FRONTEND_STATUS_TYPE_DEMOD_LOCK = 0; // 0x0
|
||||
field public static final int FRONTEND_STATUS_TYPE_EWBS = 13; // 0xd
|
||||
field public static final int FRONTEND_STATUS_TYPE_FEC = 8; // 0x8
|
||||
field public static final int FRONTEND_STATUS_TYPE_FREQ_OFFSET = 18; // 0x12
|
||||
field public static final int FRONTEND_STATUS_TYPE_GUARD_INTERVAL = 26; // 0x1a
|
||||
field public static final int FRONTEND_STATUS_TYPE_HIERARCHY = 19; // 0x13
|
||||
field public static final int FRONTEND_STATUS_TYPE_INTERLEAVINGS = 30; // 0x1e
|
||||
field public static final int FRONTEND_STATUS_TYPE_ISDBT_SEGMENTS = 31; // 0x1f
|
||||
field public static final int FRONTEND_STATUS_TYPE_LAYER_ERROR = 16; // 0x10
|
||||
field public static final int FRONTEND_STATUS_TYPE_LNA = 15; // 0xf
|
||||
field public static final int FRONTEND_STATUS_TYPE_LNB_VOLTAGE = 11; // 0xb
|
||||
field public static final int FRONTEND_STATUS_TYPE_MER = 17; // 0x11
|
||||
field public static final int FRONTEND_STATUS_TYPE_MODULATION = 9; // 0x9
|
||||
field public static final int FRONTEND_STATUS_TYPE_MODULATIONS_EXT = 22; // 0x16
|
||||
field public static final int FRONTEND_STATUS_TYPE_PER = 3; // 0x3
|
||||
field public static final int FRONTEND_STATUS_TYPE_PLP_ID = 12; // 0xc
|
||||
field public static final int FRONTEND_STATUS_TYPE_PRE_BER = 4; // 0x4
|
||||
@@ -6062,6 +6082,10 @@ package android.media.tv.tuner.frontend {
|
||||
field public static final int FRONTEND_STATUS_TYPE_SNR = 1; // 0x1
|
||||
field public static final int FRONTEND_STATUS_TYPE_SPECTRAL = 10; // 0xa
|
||||
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
|
||||
field public static final int FRONTEND_STATUS_TYPE_TRANSMISSION_MODE = 27; // 0x1b
|
||||
field public static final int FRONTEND_STATUS_TYPE_TS_DATA_RATES = 32; // 0x20
|
||||
field public static final int FRONTEND_STATUS_TYPE_UEC = 28; // 0x1c
|
||||
}
|
||||
|
||||
public static class FrontendStatus.Atsc3PlpTuningInfo {
|
||||
|
||||
Reference in New Issue
Block a user