Tuner CTS: Tuner, DemuxCapabilities, Lnb, etc.
Bug: 157428792
Test: android.media.tv.tuner.cts.TunerTest
Change-Id: Ie7bde07eb799014ebe9aad1731546a0d8e065496
diff --git a/tests/tests/tv/src/android/media/tv/tuner/cts/TunerTest.java b/tests/tests/tv/src/android/media/tv/tuner/cts/TunerTest.java
index a63d7e3..0e11776 100644
--- a/tests/tests/tv/src/android/media/tv/tuner/cts/TunerTest.java
+++ b/tests/tests/tv/src/android/media/tv/tuner/cts/TunerTest.java
@@ -24,6 +24,7 @@
import android.content.Context;
+import android.media.tv.tuner.DemuxCapabilities;
import android.media.tv.tuner.Descrambler;
import android.media.tv.tuner.LnbCallback;
import android.media.tv.tuner.Lnb;
@@ -73,6 +74,7 @@
import android.media.tv.tuner.frontend.IsdbsFrontendSettings;
import android.media.tv.tuner.frontend.IsdbtFrontendCapabilities;
import android.media.tv.tuner.frontend.IsdbtFrontendSettings;
+import android.media.tv.tuner.frontend.OnTuneEventListener;
import android.media.tv.tuner.frontend.ScanCallback;
import androidx.test.InstrumentationRegistry;
@@ -132,6 +134,7 @@
FrontendInfo info = mTuner.getFrontendInfoById(ids.get(0));
int res = mTuner.tune(createFrontendSettings(info));
assertEquals(Tuner.RESULT_SUCCESS, res);
+ assertEquals(Tuner.RESULT_SUCCESS, mTuner.setLnaEnabled(false));
res = mTuner.cancelTuning();
assertEquals(Tuner.RESULT_SUCCESS, res);
}
@@ -226,33 +229,48 @@
}
@Test
- public void testOpenLnb() throws Exception {
+ public void testLnb() throws Exception {
if (!hasTuner()) return;
Lnb lnb = mTuner.openLnb(getExecutor(), getLnbCallback());
- assertNotNull(lnb);
- }
-
- @Test
- public void testLnbSetVoltage() throws Exception {
- // TODO: move lnb-related tests to a separate file.
- if (!hasTuner()) return;
- Lnb lnb = mTuner.openLnb(getExecutor(), getLnbCallback());
+ if (lnb == null) return;
assertEquals(lnb.setVoltage(Lnb.VOLTAGE_5V), Tuner.RESULT_SUCCESS);
- }
-
- @Test
- public void testLnbSetTone() throws Exception {
- if (!hasTuner()) return;
- Lnb lnb = mTuner.openLnb(getExecutor(), getLnbCallback());
assertEquals(lnb.setTone(Lnb.TONE_NONE), Tuner.RESULT_SUCCESS);
- }
-
- @Test
- public void testLnbSetPosistion() throws Exception {
- if (!hasTuner()) return;
- Lnb lnb = mTuner.openLnb(getExecutor(), getLnbCallback());
assertEquals(
lnb.setSatellitePosition(Lnb.POSITION_A), Tuner.RESULT_SUCCESS);
+ lnb.sendDiseqcMessage(new byte[] {1, 2});
+ lnb.close();
+ }
+
+ @Test
+ public void testOpenLnbByname() throws Exception {
+ if (!hasTuner()) return;
+ Lnb lnb = mTuner.openLnbByName("default", getExecutor(), getLnbCallback());
+ if (lnb != null) {
+ lnb.close();
+ }
+ }
+
+ @Test
+ public void testCiCam() throws Exception {
+ if (!hasTuner()) return;
+ // open filter to get demux resource
+ mTuner.openFilter(
+ Filter.TYPE_TS, Filter.SUBTYPE_SECTION, 1000, getExecutor(), getFilterCallback());
+
+ mTuner.connectCiCam(1);
+ mTuner.disconnectCiCam();
+ }
+
+ @Test
+ public void testAvSyncId() throws Exception {
+ if (!hasTuner()) return;
+ // open filter to get demux resource
+ Filter f = mTuner.openFilter(
+ Filter.TYPE_TS, Filter.SUBTYPE_AUDIO, 1000, getExecutor(), getFilterCallback());
+ int id = mTuner.getAvSyncHwId(f);
+ if (id != Tuner.INVALID_AV_SYNC_ID) {
+ assertNotEquals(Tuner.INVALID_TIMESTAMP, mTuner.getAvSyncTime(id));
+ }
}
@Test
@@ -271,10 +289,17 @@
}
@Test
- public void testOpenDescrambler() throws Exception {
+ public void testDescrambler() throws Exception {
if (!hasTuner()) return;
Descrambler d = mTuner.openDescrambler();
assertNotNull(d);
+ Filter f = mTuner.openFilter(
+ Filter.TYPE_TS, Filter.SUBTYPE_SECTION, 1000, getExecutor(), getFilterCallback());
+ d.setKeyToken(new byte[] {1, 3, 2});
+ d.addPid(Descrambler.PID_TYPE_T, 1, f);
+ d.removePid(Descrambler.PID_TYPE_T, 1, f);
+ f.close();
+ d.close();
}
@Test
@@ -291,6 +316,69 @@
assertNotNull(d);
}
+ @Test
+ public void testDemuxCapabilities() throws Exception {
+ if (!hasTuner()) return;
+ DemuxCapabilities d = mTuner.getDemuxCapabilities();
+ assertNotNull(d);
+
+ d.getDemuxCount();
+ d.getRecordCount();
+ d.getPlaybackCount();
+ d.getTsFilterCount();
+ d.getSectionFilterCount();
+ d.getAudioFilterCount();
+ d.getVideoFilterCount();
+ d.getPesFilterCount();
+ d.getPcrFilterCount();
+ d.getSectionFilterLength();
+ d.getFilterCapabilities();
+ d.getLinkCapabilities();
+ d.isTimeFilterSupported();
+ }
+
+ @Test
+ public void testResourceLostListener() throws Exception {
+ if (!hasTuner()) return;
+ mTuner.setResourceLostListener(getExecutor(), new Tuner.OnResourceLostListener() {
+ @Override
+ public void onResourceLost(Tuner tuner) {}
+ });
+ mTuner.clearResourceLostListener();
+ }
+
+ @Test
+ public void testOnTuneEventListener() throws Exception {
+ if (!hasTuner()) return;
+ mTuner.setOnTuneEventListener(getExecutor(), new OnTuneEventListener() {
+ @Override
+ public void onTuneEvent(int tuneEvent) {}
+ });
+ mTuner.clearOnTuneEventListener();
+ }
+
+ @Test
+ public void testUpdateResourcePriority() throws Exception {
+ if (!hasTuner()) return;
+ mTuner.updateResourcePriority(100, 20);
+ }
+
+ @Test
+ public void testShareFrontendFromTuner() throws Exception {
+ if (!hasTuner()) return;
+ Tuner other = new Tuner(mContext, null, 100);
+ List<Integer> ids = other.getFrontendIds();
+ assertFalse(ids.isEmpty());
+ FrontendInfo info = other.getFrontendInfoById(ids.get(0));
+
+ // call tune() to open frontend resource
+ int res = other.tune(createFrontendSettings(info));
+ assertEquals(Tuner.RESULT_SUCCESS, res);
+ assertNotNull(other.getFrontendInfo());
+ mTuner.shareFrontendFromTuner(other);
+ other.close();
+ }
+
private boolean hasTuner() {
return mContext.getPackageManager().hasSystemFeature("android.hardware.tv.tuner");
}