diff --git a/tv/tuner/aidl/aidl_api/android.hardware.tv.tuner/current/android/hardware/tv/tuner/FrontendStatus.aidl b/tv/tuner/aidl/aidl_api/android.hardware.tv.tuner/current/android/hardware/tv/tuner/FrontendStatus.aidl index fc0efc92be..1e0f5f0840 100644 --- a/tv/tuner/aidl/aidl_api/android.hardware.tv.tuner/current/android/hardware/tv/tuner/FrontendStatus.aidl +++ b/tv/tuner/aidl/aidl_api/android.hardware.tv.tuner/current/android/hardware/tv/tuner/FrontendStatus.aidl @@ -76,4 +76,5 @@ union FrontendStatus { android.hardware.tv.tuner.FrontendIsdbtPartialReceptionFlag partialReceptionFlag; int[] streamIdList; int[] dvbtCellIds; + android.hardware.tv.tuner.FrontendScanAtsc3PlpInfo[] allPlpInfo; } diff --git a/tv/tuner/aidl/aidl_api/android.hardware.tv.tuner/current/android/hardware/tv/tuner/FrontendStatusType.aidl b/tv/tuner/aidl/aidl_api/android.hardware.tv.tuner/current/android/hardware/tv/tuner/FrontendStatusType.aidl index 2cc62d533e..cd6ccb3dc1 100644 --- a/tv/tuner/aidl/aidl_api/android.hardware.tv.tuner/current/android/hardware/tv/tuner/FrontendStatusType.aidl +++ b/tv/tuner/aidl/aidl_api/android.hardware.tv.tuner/current/android/hardware/tv/tuner/FrontendStatusType.aidl @@ -76,4 +76,5 @@ enum FrontendStatusType { ISDBT_PARTIAL_RECEPTION_FLAG = 38, STREAM_ID_LIST = 39, DVBT_CELL_IDS = 40, + ATSC3_ALL_PLP_INFO = 41, } diff --git a/tv/tuner/aidl/android/hardware/tv/tuner/FrontendStatus.aidl b/tv/tuner/aidl/android/hardware/tv/tuner/FrontendStatus.aidl index ae6e46fa29..b5d02016df 100644 --- a/tv/tuner/aidl/android/hardware/tv/tuner/FrontendStatus.aidl +++ b/tv/tuner/aidl/android/hardware/tv/tuner/FrontendStatus.aidl @@ -27,6 +27,7 @@ import android.hardware.tv.tuner.FrontendModulation; import android.hardware.tv.tuner.FrontendModulationStatus; import android.hardware.tv.tuner.FrontendRollOff; import android.hardware.tv.tuner.FrontendSpectralInversion; +import android.hardware.tv.tuner.FrontendScanAtsc3PlpInfo; import android.hardware.tv.tuner.FrontendStatusAtsc3PlpInfo; import android.hardware.tv.tuner.FrontendTransmissionMode; import android.hardware.tv.tuner.LnbVoltage; @@ -241,5 +242,9 @@ union FrontendStatus { */ int[] dvbtCellIds; - + /** + * A list of all PLPs in the frequency band for ATSC3 frontend, which includes both tuned + * and not tuned PLPs for currently watching service. + */ + FrontendScanAtsc3PlpInfo[] allPlpInfo; } diff --git a/tv/tuner/aidl/android/hardware/tv/tuner/FrontendStatusType.aidl b/tv/tuner/aidl/android/hardware/tv/tuner/FrontendStatusType.aidl index e7da51767a..8f3f2c56c1 100644 --- a/tv/tuner/aidl/android/hardware/tv/tuner/FrontendStatusType.aidl +++ b/tv/tuner/aidl/android/hardware/tv/tuner/FrontendStatusType.aidl @@ -130,7 +130,7 @@ enum FrontendStatusType { RF_LOCK, /** - * PLP information in a frequency band for ATSC3.0 frontend. + * Current tuned PLP information in a frequency band for ATSC3 frontend. */ ATSC3_PLP_INFO, @@ -222,10 +222,16 @@ enum FrontendStatusType { /** * Stream ID list included in a transponder. */ - STREAM_ID_LIST, + STREAM_ID_LIST, - /** - * DVB-T Cell Id. - */ - DVBT_CELL_IDS, + /** + * DVB-T Cell Id. + */ + DVBT_CELL_IDS, + + /** + * All PLP information in a frequency band for ATSC3 frontend, which includes both tuned + * and not tuned PLPs for currently watching service. + */ + ATSC3_ALL_PLP_INFO, } diff --git a/tv/tuner/aidl/default/Frontend.cpp b/tv/tuner/aidl/default/Frontend.cpp index 714612d006..445d2b6d7c 100644 --- a/tv/tuner/aidl/default/Frontend.cpp +++ b/tv/tuner/aidl/default/Frontend.cpp @@ -708,6 +708,20 @@ void Frontend::scanThreadLoop() { status.set(dvbtCellIds); break; } + case FrontendStatusType::ATSC3_ALL_PLP_INFO: { + FrontendScanAtsc3PlpInfo info1; + info1.plpId = 1; + info1.bLlsFlag = false; + FrontendScanAtsc3PlpInfo info2; + info2.plpId = 2; + info2.bLlsFlag = true; + FrontendScanAtsc3PlpInfo info3; + info3.plpId = 3; + info3.bLlsFlag = false; + vector infos = {info1, info2, info3}; + status.set(infos); + break; + } default: { continue; } diff --git a/tv/tuner/aidl/default/Tuner.cpp b/tv/tuner/aidl/default/Tuner.cpp index 48c1b66a50..7a5fa6ecad 100644 --- a/tv/tuner/aidl/default/Tuner.cpp +++ b/tv/tuner/aidl/default/Tuner.cpp @@ -77,6 +77,7 @@ void Tuner::init() { FrontendStatusType::BERS, FrontendStatusType::INTERLEAVINGS, FrontendStatusType::BANDWIDTH, + FrontendStatusType::ATSC3_ALL_PLP_INFO, }; mFrontendStatusCaps[1] = statusCaps; mMaxUsableFrontends[FrontendType::ATSC3] = 1; diff --git a/tv/tuner/aidl/vts/functional/FrontendTests.cpp b/tv/tuner/aidl/vts/functional/FrontendTests.cpp index 41e98ea586..a8799aba8b 100644 --- a/tv/tuner/aidl/vts/functional/FrontendTests.cpp +++ b/tv/tuner/aidl/vts/functional/FrontendTests.cpp @@ -414,6 +414,13 @@ void FrontendTests::verifyFrontendStatus(vector statusTypes, expectStatuses[i].get().begin())); break; } + case FrontendStatusType::ATSC3_ALL_PLP_INFO: { + ASSERT_TRUE(std::equal( + realStatuses[i].get().begin(), + realStatuses[i].get().end(), + expectStatuses[i].get().begin())); + break; + } default: { continue; }