From 1448ad4d875b4c449576cf1a005dc8d02e1c9e8a Mon Sep 17 00:00:00 2001 From: sadiqsada Date: Tue, 31 Jan 2023 16:14:04 -0800 Subject: [PATCH] Add Frontend Status Types and tuning for IPTV IPTVFrontendSettings is a new setting for the tune() function. This function was modified to support the new setting. Test: None Bug: 266967059 Change-Id: I9d36dd47ca3aa419e7663570528ed2832baa1653 --- .../tv/tuner/FrontendCapabilities.aidl | 1 + .../tv/tuner/FrontendIptvCapabilities.aidl | 39 +++++++++++++++++++ .../tv/tuner/FrontendCapabilities.aidl | 3 ++ .../tv/tuner/FrontendIptvCapabilities.aidl | 29 ++++++++++++++ tv/tuner/aidl/default/Frontend.cpp | 16 +++++++- 5 files changed, 87 insertions(+), 1 deletion(-) create mode 100644 tv/tuner/aidl/aidl_api/android.hardware.tv.tuner/current/android/hardware/tv/tuner/FrontendIptvCapabilities.aidl create mode 100644 tv/tuner/aidl/android/hardware/tv/tuner/FrontendIptvCapabilities.aidl diff --git a/tv/tuner/aidl/aidl_api/android.hardware.tv.tuner/current/android/hardware/tv/tuner/FrontendCapabilities.aidl b/tv/tuner/aidl/aidl_api/android.hardware.tv.tuner/current/android/hardware/tv/tuner/FrontendCapabilities.aidl index c013cd111a..c9443b1782 100644 --- a/tv/tuner/aidl/aidl_api/android.hardware.tv.tuner/current/android/hardware/tv/tuner/FrontendCapabilities.aidl +++ b/tv/tuner/aidl/aidl_api/android.hardware.tv.tuner/current/android/hardware/tv/tuner/FrontendCapabilities.aidl @@ -45,4 +45,5 @@ union FrontendCapabilities { android.hardware.tv.tuner.FrontendIsdbsCapabilities isdbsCaps; android.hardware.tv.tuner.FrontendIsdbs3Capabilities isdbs3Caps; android.hardware.tv.tuner.FrontendIsdbtCapabilities isdbtCaps; + @nullable android.hardware.tv.tuner.FrontendIptvCapabilities iptvCaps; } diff --git a/tv/tuner/aidl/aidl_api/android.hardware.tv.tuner/current/android/hardware/tv/tuner/FrontendIptvCapabilities.aidl b/tv/tuner/aidl/aidl_api/android.hardware.tv.tuner/current/android/hardware/tv/tuner/FrontendIptvCapabilities.aidl new file mode 100644 index 0000000000..543543df96 --- /dev/null +++ b/tv/tuner/aidl/aidl_api/android.hardware.tv.tuner/current/android/hardware/tv/tuner/FrontendIptvCapabilities.aidl @@ -0,0 +1,39 @@ +/* + * Copyright 2023 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 +parcelable FrontendIptvCapabilities { + int protocolCap; +} diff --git a/tv/tuner/aidl/android/hardware/tv/tuner/FrontendCapabilities.aidl b/tv/tuner/aidl/android/hardware/tv/tuner/FrontendCapabilities.aidl index a6f14900d1..cfa1763e8d 100644 --- a/tv/tuner/aidl/android/hardware/tv/tuner/FrontendCapabilities.aidl +++ b/tv/tuner/aidl/android/hardware/tv/tuner/FrontendCapabilities.aidl @@ -23,6 +23,7 @@ import android.hardware.tv.tuner.FrontendDtmbCapabilities; import android.hardware.tv.tuner.FrontendDvbcCapabilities; import android.hardware.tv.tuner.FrontendDvbsCapabilities; import android.hardware.tv.tuner.FrontendDvbtCapabilities; +import android.hardware.tv.tuner.FrontendIptvCapabilities; import android.hardware.tv.tuner.FrontendIsdbs3Capabilities; import android.hardware.tv.tuner.FrontendIsdbsCapabilities; import android.hardware.tv.tuner.FrontendIsdbtCapabilities; @@ -51,4 +52,6 @@ union FrontendCapabilities { FrontendIsdbs3Capabilities isdbs3Caps; FrontendIsdbtCapabilities isdbtCaps; + + @nullable FrontendIptvCapabilities iptvCaps; } diff --git a/tv/tuner/aidl/android/hardware/tv/tuner/FrontendIptvCapabilities.aidl b/tv/tuner/aidl/android/hardware/tv/tuner/FrontendIptvCapabilities.aidl new file mode 100644 index 0000000000..438492b289 --- /dev/null +++ b/tv/tuner/aidl/android/hardware/tv/tuner/FrontendIptvCapabilities.aidl @@ -0,0 +1,29 @@ +/* + * Copyright 2023 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; + +/** + * Capabilities for IPTV Frontend. + * @hide + */ +@VintfStability +parcelable FrontendIptvCapabilities { + /** + * Transmission protocols for IPTV (UDP / RTP) defined in FrontendIptvSettingsProtocol. + */ + int protocolCap; +} diff --git a/tv/tuner/aidl/default/Frontend.cpp b/tv/tuner/aidl/default/Frontend.cpp index d140b7428b..cd072bfe8d 100644 --- a/tv/tuner/aidl/default/Frontend.cpp +++ b/tv/tuner/aidl/default/Frontend.cpp @@ -164,6 +164,17 @@ Frontend::Frontend(FrontendType type, int32_t id) { }; break; } + case FrontendType::IPTV: { + mFrontendCaps.set(FrontendIptvCapabilities()); + mFrontendStatusCaps = { + FrontendStatusType::IPTV_CONTENT_URL, + FrontendStatusType::IPTV_PACKETS_LOST, + FrontendStatusType::IPTV_PACKETS_RECEIVED, + FrontendStatusType::IPTV_AVERAGE_JITTER_MS, + FrontendStatusType::IPTV_WORST_JITTER_MS, + }; + break; + } default: { break; } @@ -210,7 +221,10 @@ Frontend::~Frontend() { static_cast(Result::INVALID_STATE)); } - mTuner->frontendStartTune(mId); + if (mType != FrontendType::IPTV) { + mTuner->frontendStartTune(mId); + } + mCallback->onEvent(FrontendEventType::LOCKED); mIsLocked = true;