Add new Frontend Status Types into Tuner Framework

Test: atest android.media.tv.tuner.cts
Bug: 169868608
Change-Id: I34c1ba30e66ea29aedd57631dbdf1573026f8e90
This commit is contained in:
Amy Zhang
2020-10-20 16:39:16 -07:00
parent b17f849808
commit 196b8c3e9c
4 changed files with 171 additions and 2 deletions

View File

@@ -6144,6 +6144,7 @@ package android.media.tv.tuner.frontend {
method public int getPer();
method public int getPerBer();
method public int getPlpId();
method public int getRollOff();
method public int getSignalQuality();
method public int getSignalStrength();
method public int getSnr();
@@ -6155,8 +6156,11 @@ package android.media.tv.tuner.frontend {
method public int getUec();
method public boolean isDemodLocked();
method public boolean isEwbs();
method public boolean isLinear();
method public boolean isLnaOn();
method public boolean isMisoEnabled();
method public boolean isRfLocked();
method public boolean isShortFramesEnabled();
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
@@ -6171,6 +6175,9 @@ package android.media.tv.tuner.frontend {
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_IS_LINEAR = 35; // 0x23
field public static final int FRONTEND_STATUS_TYPE_IS_MISO = 34; // 0x22
field public static final int FRONTEND_STATUS_TYPE_IS_SHORT_FRAMES = 36; // 0x24
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
@@ -6181,6 +6188,7 @@ package android.media.tv.tuner.frontend {
field public static final int FRONTEND_STATUS_TYPE_PLP_ID = 12; // 0xc
field public static final int FRONTEND_STATUS_TYPE_PRE_BER = 4; // 0x4
field public static final int FRONTEND_STATUS_TYPE_RF_LOCK = 20; // 0x14
field public static final int FRONTEND_STATUS_TYPE_ROLL_OFF = 33; // 0x21
field public static final int FRONTEND_STATUS_TYPE_SIGNAL_QUALITY = 5; // 0x5
field public static final int FRONTEND_STATUS_TYPE_SIGNAL_STRENGTH = 6; // 0x6
field public static final int FRONTEND_STATUS_TYPE_SNR = 1; // 0x1

View File

@@ -6084,6 +6084,7 @@ package android.media.tv.tuner.frontend {
method public int getPer();
method public int getPerBer();
method public int getPlpId();
method public int getRollOff();
method public int getSignalQuality();
method public int getSignalStrength();
method public int getSnr();
@@ -6095,8 +6096,11 @@ package android.media.tv.tuner.frontend {
method public int getUec();
method public boolean isDemodLocked();
method public boolean isEwbs();
method public boolean isLinear();
method public boolean isLnaOn();
method public boolean isMisoEnabled();
method public boolean isRfLocked();
method public boolean isShortFramesEnabled();
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
@@ -6111,6 +6115,9 @@ package android.media.tv.tuner.frontend {
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_IS_LINEAR = 35; // 0x23
field public static final int FRONTEND_STATUS_TYPE_IS_MISO = 34; // 0x22
field public static final int FRONTEND_STATUS_TYPE_IS_SHORT_FRAMES = 36; // 0x24
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
@@ -6121,6 +6128,7 @@ package android.media.tv.tuner.frontend {
field public static final int FRONTEND_STATUS_TYPE_PLP_ID = 12; // 0xc
field public static final int FRONTEND_STATUS_TYPE_PRE_BER = 4; // 0x4
field public static final int FRONTEND_STATUS_TYPE_RF_LOCK = 20; // 0x14
field public static final int FRONTEND_STATUS_TYPE_ROLL_OFF = 33; // 0x21
field public static final int FRONTEND_STATUS_TYPE_SIGNAL_QUALITY = 5; // 0x5
field public static final int FRONTEND_STATUS_TYPE_SIGNAL_STRENGTH = 6; // 0x6
field public static final int FRONTEND_STATUS_TYPE_SNR = 1; // 0x1

View File

@@ -50,7 +50,9 @@ public class FrontendStatus {
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})
FRONTEND_STATUS_TYPE_MODULATIONS_EXT, FRONTEND_STATUS_TYPE_ROLL_OFF,
FRONTEND_STATUS_TYPE_IS_MISO, FRONTEND_STATUS_TYPE_IS_LINEAR,
FRONTEND_STATUS_TYPE_IS_SHORT_FRAMES})
@Retention(RetentionPolicy.SOURCE)
public @interface FrontendStatusType {}
@@ -207,6 +209,26 @@ public class FrontendStatus {
*/
public static final int FRONTEND_STATUS_TYPE_MODULATIONS_EXT =
android.hardware.tv.tuner.V1_1.Constants.FrontendStatusTypeExt1_1.MODULATIONS;
/**
* Roll Off Type status of the frontend. Only supported in Tuner HAL 1.1 or higher.
*/
public static final int FRONTEND_STATUS_TYPE_ROLL_OFF =
android.hardware.tv.tuner.V1_1.Constants.FrontendStatusTypeExt1_1.ROLL_OFF;
/**
* If the frontend currently supports MISO or not. Only supported in Tuner HAL 1.1 or higher.
*/
public static final int FRONTEND_STATUS_TYPE_IS_MISO =
android.hardware.tv.tuner.V1_1.Constants.FrontendStatusTypeExt1_1.IS_MISO;
/**
* If the frontend code rate is linear or not. Only supported in Tuner HAL 1.1 or higher.
*/
public static final int FRONTEND_STATUS_TYPE_IS_LINEAR =
android.hardware.tv.tuner.V1_1.Constants.FrontendStatusTypeExt1_1.IS_LINEAR;
/**
* If short frames is enabled or not. Only supported in Tuner HAL 1.1 or higher.
*/
public static final int FRONTEND_STATUS_TYPE_IS_SHORT_FRAMES =
android.hardware.tv.tuner.V1_1.Constants.FrontendStatusTypeExt1_1.IS_SHORT_FRAMES;
/** @hide */
@IntDef(value = {
@@ -378,6 +400,22 @@ public class FrontendStatus {
@Retention(RetentionPolicy.SOURCE)
public @interface FrontendGuardInterval {}
/** @hide */
@IntDef(value = {
DvbsFrontendSettings.ROLLOFF_UNDEFINED,
DvbsFrontendSettings.ROLLOFF_0_35,
DvbsFrontendSettings.ROLLOFF_0_25,
DvbsFrontendSettings.ROLLOFF_0_20,
DvbsFrontendSettings.ROLLOFF_0_15,
DvbsFrontendSettings.ROLLOFF_0_10,
DvbsFrontendSettings.ROLLOFF_0_5,
Isdbs3FrontendSettings.ROLLOFF_UNDEFINED,
Isdbs3FrontendSettings.ROLLOFF_0_03,
IsdbsFrontendSettings.ROLLOFF_UNDEFINED,
IsdbsFrontendSettings.ROLLOFF_0_35})
@Retention(RetentionPolicy.SOURCE)
public @interface FrontendRollOff {}
private Boolean mIsDemodLocked;
private Integer mSnr;
private Integer mBer;
@@ -411,6 +449,10 @@ public class FrontendStatus {
private int[] mTsDataRate;
private int[] mIsdbtSegment;
private int[] mModulationsExt;
private Integer mRollOff;
private Boolean mIsMisoEnabled;
private Boolean mIsLinear;
private Boolean mIsShortFrames;
// Constructed and fields set by JNI code.
@@ -809,6 +851,67 @@ public class FrontendStatus {
return mModulationsExt;
}
/**
* Gets roll off status.
*
* <p>This status query is only supported by Tuner HAL 1.1 or higher. Use
* {@link TunerVersionChecker.getTunerVersion()} to check the version.
*/
@FrontendRollOff
public int getRollOff() {
TunerVersionChecker.checkHigherOrEqualVersionTo(
TunerVersionChecker.TUNER_VERSION_1_1, "getRollOff status");
if (mRollOff == null) {
throw new IllegalStateException();
}
return mRollOff;
}
/**
* Gets is MISO enabled status.
*
* <p>This status query is only supported by Tuner HAL 1.1 or higher. Use
* {@link TunerVersionChecker.getTunerVersion()} to check the version.
*/
public boolean isMisoEnabled() {
TunerVersionChecker.checkHigherOrEqualVersionTo(
TunerVersionChecker.TUNER_VERSION_1_1, "isMisoEnabled status");
if (mIsMisoEnabled == null) {
throw new IllegalStateException();
}
return mIsMisoEnabled;
}
/**
* Gets is the Code Rate of the frontend is linear or not status.
*
* <p>This status query is only supported by Tuner HAL 1.1 or higher. Use
* {@link TunerVersionChecker.getTunerVersion()} to check the version.
*/
public boolean isLinear() {
TunerVersionChecker.checkHigherOrEqualVersionTo(
TunerVersionChecker.TUNER_VERSION_1_1, "isLinear status");
if (mIsLinear == null) {
throw new IllegalStateException();
}
return mIsLinear;
}
/**
* Gets is the Short Frames enabled or not status.
*
* <p>This status query is only supported by Tuner HAL 1.1 or higher. Use
* {@link TunerVersionChecker.getTunerVersion()} to check the version.
*/
public boolean isShortFramesEnabled() {
TunerVersionChecker.checkHigherOrEqualVersionTo(
TunerVersionChecker.TUNER_VERSION_1_1, "isShortFramesEnabled status");
if (mIsShortFrames == null) {
throw new IllegalStateException();
}
return mIsShortFrames;
}
/**
* Status for each tuning Physical Layer Pipes.
*/

View File

@@ -155,6 +155,7 @@ 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::FrontendRollOff;
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;
@@ -2476,6 +2477,55 @@ jobject JTuner::getFrontendStatus(jintArray types) {
env->SetObjectField(statusObj, field, valObj);
break;
}
case FrontendStatusExt1_1::hidl_discriminator::rollOff: {
jfieldID field = env->GetFieldID(clazz, "mRollOff", "Ljava/lang/Integer;");
auto rollOff = s.rollOff();
jint intRollOff;
bool valid = true;
switch(rollOff.getDiscriminator()) {
case FrontendRollOff::hidl_discriminator::dvbs: {
intRollOff = static_cast<jint>(rollOff.dvbs());
break;
}
case FrontendRollOff::hidl_discriminator::isdbs: {
intRollOff = static_cast<jint>(rollOff.isdbs());
break;
}
case FrontendRollOff::hidl_discriminator::isdbs3: {
intRollOff = static_cast<jint>(rollOff.isdbs3());
break;
}
default:
valid = false;
break;
}
if (valid) {
jobject newIntegerObj = env->NewObject(intClazz, initInt, intRollOff);
env->SetObjectField(statusObj, field, newIntegerObj);
}
break;
}
case FrontendStatusExt1_1::hidl_discriminator::isMiso: {
jfieldID field = env->GetFieldID(clazz, "mIsMisoEnabled", "Ljava/lang/Boolean;");
jobject newBooleanObj = env->NewObject(
booleanClazz, initBoolean, static_cast<jboolean>(s.isMiso()));
env->SetObjectField(statusObj, field, newBooleanObj);
break;
}
case FrontendStatusExt1_1::hidl_discriminator::isLinear: {
jfieldID field = env->GetFieldID(clazz, "mIsLinear", "Ljava/lang/Boolean;");
jobject newBooleanObj = env->NewObject(
booleanClazz, initBoolean, static_cast<jboolean>(s.isLinear()));
env->SetObjectField(statusObj, field, newBooleanObj);
break;
}
case FrontendStatusExt1_1::hidl_discriminator::isShortFrames: {
jfieldID field = env->GetFieldID(clazz, "mIsShortFrames", "Ljava/lang/Boolean;");
jobject newBooleanObj = env->NewObject(
booleanClazz, initBoolean, static_cast<jboolean>(s.isShortFrames()));
env->SetObjectField(statusObj, field, newBooleanObj);
break;
}
default: {
break;
}
@@ -2486,7 +2536,7 @@ jobject JTuner::getFrontendStatus(jintArray types) {
bool JTuner::isV1_1ExtendedStatusType(int type) {
return (type > static_cast<int>(FrontendStatusType::ATSC3_PLP_INFO)
&& type <= static_cast<int>(FrontendStatusTypeExt1_1::TS_DATA_RATES));
&& type <= static_cast<int>(FrontendStatusTypeExt1_1::IS_SHORT_FRAMES));
}
jint JTuner::closeFrontend() {