diff --git a/tv/tuner/aidl/Android.bp b/tv/tuner/aidl/Android.bp index 7ffc8bb0b1..e53e84d19c 100644 --- a/tv/tuner/aidl/Android.bp +++ b/tv/tuner/aidl/Android.bp @@ -40,5 +40,6 @@ aidl_interface { ], }, ], + frozen: false, } diff --git a/tv/tuner/aidl/aidl_api/android.hardware.tv.tuner/current/android/hardware/tv/tuner/FrontendStandardExt.aidl b/tv/tuner/aidl/aidl_api/android.hardware.tv.tuner/current/android/hardware/tv/tuner/FrontendStandardExt.aidl new file mode 100644 index 0000000000..88637dbb24 --- /dev/null +++ b/tv/tuner/aidl/aidl_api/android.hardware.tv.tuner/current/android/hardware/tv/tuner/FrontendStandardExt.aidl @@ -0,0 +1,40 @@ +/* + * Copyright 2024 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.tv.tuner; +/* @hide */ +@VintfStability +union FrontendStandardExt { + android.hardware.tv.tuner.FrontendDvbsStandard dvbsStandardExt = android.hardware.tv.tuner.FrontendDvbsStandard.UNDEFINED; + android.hardware.tv.tuner.FrontendDvbtStandard dvbtStandardExt = android.hardware.tv.tuner.FrontendDvbtStandard.UNDEFINED; +} 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 b991ab6836..e79eba68ab 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 @@ -82,4 +82,5 @@ union FrontendStatus { long iptvPacketsLost; int iptvWorstJitterMs; int iptvAverageJitterMs; + android.hardware.tv.tuner.FrontendStandardExt standardExt; } 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 9f34e8ddcf..bfd2145e62 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 @@ -82,4 +82,5 @@ enum FrontendStatusType { IPTV_PACKETS_RECEIVED, IPTV_WORST_JITTER_MS, IPTV_AVERAGE_JITTER_MS, + STANDARD_EXT, } diff --git a/tv/tuner/aidl/android/hardware/tv/tuner/FrontendStandardExt.aidl b/tv/tuner/aidl/android/hardware/tv/tuner/FrontendStandardExt.aidl new file mode 100644 index 0000000000..0b68e89239 --- /dev/null +++ b/tv/tuner/aidl/android/hardware/tv/tuner/FrontendStandardExt.aidl @@ -0,0 +1,36 @@ +/* + * Copyright 2024 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.hardware.tv.tuner; + +import android.hardware.tv.tuner.FrontendDvbsStandard; +import android.hardware.tv.tuner.FrontendDvbtStandard; + +/** + * @hide + */ +@VintfStability +union FrontendStandardExt { + /** + * The DVB-S standard extension after standard transition. + */ + FrontendDvbsStandard dvbsStandardExt = FrontendDvbsStandard.UNDEFINED; + + /** + * The DVB-T standard extension after standard transition. + */ + FrontendDvbtStandard dvbtStandardExt = FrontendDvbtStandard.UNDEFINED; +} diff --git a/tv/tuner/aidl/android/hardware/tv/tuner/FrontendStatus.aidl b/tv/tuner/aidl/android/hardware/tv/tuner/FrontendStatus.aidl index 391f29be2a..a3902df171 100644 --- a/tv/tuner/aidl/android/hardware/tv/tuner/FrontendStatus.aidl +++ b/tv/tuner/aidl/android/hardware/tv/tuner/FrontendStatus.aidl @@ -28,6 +28,7 @@ import android.hardware.tv.tuner.FrontendModulationStatus; import android.hardware.tv.tuner.FrontendRollOff; import android.hardware.tv.tuner.FrontendScanAtsc3PlpInfo; import android.hardware.tv.tuner.FrontendSpectralInversion; +import android.hardware.tv.tuner.FrontendStandardExt; import android.hardware.tv.tuner.FrontendStatusAtsc3PlpInfo; import android.hardware.tv.tuner.FrontendTransmissionMode; import android.hardware.tv.tuner.LnbVoltage; @@ -272,4 +273,13 @@ union FrontendStatus { * Average jitter (milliseconds). */ int iptvAverageJitterMs; + + /** + * Standard extension. + * + * DVB-T and DVB-S can transition to another standard within the same standard series. For + * example, DVB-T can transition to DVB-T2 and back. This attribute represents the standard + * extension. Valid values include FrontendDvbtStandard.T or FrontendDvbsStandard.S2 etc. + */ + FrontendStandardExt standardExt; } diff --git a/tv/tuner/aidl/android/hardware/tv/tuner/FrontendStatusType.aidl b/tv/tuner/aidl/android/hardware/tv/tuner/FrontendStatusType.aidl index 6804b2daf2..3225c428be 100644 --- a/tv/tuner/aidl/android/hardware/tv/tuner/FrontendStatusType.aidl +++ b/tv/tuner/aidl/android/hardware/tv/tuner/FrontendStatusType.aidl @@ -259,4 +259,9 @@ enum FrontendStatusType { * Average jitter (milliseconds). */ IPTV_AVERAGE_JITTER_MS, + + /** + * Standard extension. + */ + STANDARD_EXT, } diff --git a/tv/tuner/aidl/default/Frontend.cpp b/tv/tuner/aidl/default/Frontend.cpp index 10316047ff..bba004a3f9 100644 --- a/tv/tuner/aidl/default/Frontend.cpp +++ b/tv/tuner/aidl/default/Frontend.cpp @@ -81,6 +81,7 @@ Frontend::Frontend(FrontendType type, int32_t id) { FrontendStatusType::SIGNAL_STRENGTH, FrontendStatusType::SYMBOL_RATE, FrontendStatusType::MODULATION, FrontendStatusType::MODULATIONS, FrontendStatusType::ROLL_OFF, FrontendStatusType::IS_MISO, + FrontendStatusType::STANDARD_EXT, }; break; } @@ -96,6 +97,7 @@ Frontend::Frontend(FrontendType type, int32_t id) { FrontendStatusType::TRANSMISSION_MODE, FrontendStatusType::T2_SYSTEM_ID, FrontendStatusType::DVBT_CELL_IDS, + FrontendStatusType::STANDARD_EXT, }; break; } @@ -985,6 +987,17 @@ void Frontend::scanThreadLoop() { status.set(5); break; } + case FrontendStatusType::STANDARD_EXT: { + FrontendStandardExt standardExt; + if (mType == FrontendType::DVBS) { + standardExt.set( + FrontendDvbsStandard::S2X); + } else if (mType == FrontendType::DVBT) { + standardExt.set(FrontendDvbtStandard::T2); + } + status.set(standardExt); + break; + } default: { continue; } diff --git a/tv/tuner/aidl/vts/functional/FrontendTests.cpp b/tv/tuner/aidl/vts/functional/FrontendTests.cpp index 85d0496a2c..99c0283485 100644 --- a/tv/tuner/aidl/vts/functional/FrontendTests.cpp +++ b/tv/tuner/aidl/vts/functional/FrontendTests.cpp @@ -636,7 +636,7 @@ void FrontendTests::statusReadinessTest(FrontendConfig frontendConf) { ASSERT_TRUE(tuneFrontend(frontendConf, false /*testWithDemux*/)); // TODO: find a better way to push all frontend status types - for (int32_t i = 0; i <= static_cast(FrontendStatusType::ATSC3_ALL_PLP_INFO); i++) { + for (int32_t i = 0; i <= static_cast(FrontendStatusType::STANDARD_EXT); i++) { allTypes.push_back(static_cast(i)); }