xref: /aosp_15_r20/frameworks/av/services/tuner/TunerHelper.h (revision ec779b8e0859a360c3d303172224686826e6e0e1)
1*ec779b8eSAndroid Build Coastguard Worker /*
2*ec779b8eSAndroid Build Coastguard Worker  * Copyright 2021 The Android Open Source Project
3*ec779b8eSAndroid Build Coastguard Worker  *
4*ec779b8eSAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*ec779b8eSAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*ec779b8eSAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*ec779b8eSAndroid Build Coastguard Worker  *
8*ec779b8eSAndroid Build Coastguard Worker  *      http://www.apache.org/licenses/LICENSE-2.0
9*ec779b8eSAndroid Build Coastguard Worker  *
10*ec779b8eSAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*ec779b8eSAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*ec779b8eSAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*ec779b8eSAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*ec779b8eSAndroid Build Coastguard Worker  * limitations under the License.
15*ec779b8eSAndroid Build Coastguard Worker  */
16*ec779b8eSAndroid Build Coastguard Worker 
17*ec779b8eSAndroid Build Coastguard Worker #ifndef ANDROID_MEDIA_TUNERDVRHELPER_H
18*ec779b8eSAndroid Build Coastguard Worker #define ANDROID_MEDIA_TUNERDVRHELPER_H
19*ec779b8eSAndroid Build Coastguard Worker 
20*ec779b8eSAndroid Build Coastguard Worker #include <aidl/android/media/tv/tunerresourcemanager/TunerDemuxInfo.h>
21*ec779b8eSAndroid Build Coastguard Worker #include <aidl/android/media/tv/tunerresourcemanager/TunerFrontendInfo.h>
22*ec779b8eSAndroid Build Coastguard Worker #include <utils/String16.h>
23*ec779b8eSAndroid Build Coastguard Worker 
24*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::media::tv::tunerresourcemanager::TunerDemuxInfo;
25*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::media::tv::tunerresourcemanager::TunerFrontendInfo;
26*ec779b8eSAndroid Build Coastguard Worker using ::android::String16;
27*ec779b8eSAndroid Build Coastguard Worker 
28*ec779b8eSAndroid Build Coastguard Worker using namespace std;
29*ec779b8eSAndroid Build Coastguard Worker 
30*ec779b8eSAndroid Build Coastguard Worker namespace aidl {
31*ec779b8eSAndroid Build Coastguard Worker namespace android {
32*ec779b8eSAndroid Build Coastguard Worker namespace media {
33*ec779b8eSAndroid Build Coastguard Worker namespace tv {
34*ec779b8eSAndroid Build Coastguard Worker namespace tuner {
35*ec779b8eSAndroid Build Coastguard Worker 
36*ec779b8eSAndroid Build Coastguard Worker const static int TUNER_HAL_VERSION_UNKNOWN = 0;
37*ec779b8eSAndroid Build Coastguard Worker const static int TUNER_HAL_VERSION_1_0 = 1 << 16;
38*ec779b8eSAndroid Build Coastguard Worker const static int TUNER_HAL_VERSION_1_1 = (1 << 16) | 1;
39*ec779b8eSAndroid Build Coastguard Worker const static int TUNER_HAL_VERSION_2_0 = 2 << 16;
40*ec779b8eSAndroid Build Coastguard Worker 
41*ec779b8eSAndroid Build Coastguard Worker // Keep syncing with ShareFilter.java
42*ec779b8eSAndroid Build Coastguard Worker const static int STATUS_INACCESSIBLE = 1 << 7;
43*ec779b8eSAndroid Build Coastguard Worker 
44*ec779b8eSAndroid Build Coastguard Worker const static String16 sSharedFilterPermission("android.permission.ACCESS_TV_SHARED_FILTER");
45*ec779b8eSAndroid Build Coastguard Worker 
46*ec779b8eSAndroid Build Coastguard Worker typedef enum {
47*ec779b8eSAndroid Build Coastguard Worker     FRONTEND,
48*ec779b8eSAndroid Build Coastguard Worker     DEMUX,
49*ec779b8eSAndroid Build Coastguard Worker     DESCRAMBLER,
50*ec779b8eSAndroid Build Coastguard Worker     LNB
51*ec779b8eSAndroid Build Coastguard Worker } TunerResourceType;
52*ec779b8eSAndroid Build Coastguard Worker 
53*ec779b8eSAndroid Build Coastguard Worker class TunerHelper {
54*ec779b8eSAndroid Build Coastguard Worker public:
55*ec779b8eSAndroid Build Coastguard Worker     static bool checkTunerFeature();
56*ec779b8eSAndroid Build Coastguard Worker 
57*ec779b8eSAndroid Build Coastguard Worker     // TODO: update Demux, Descrambler.
58*ec779b8eSAndroid Build Coastguard Worker     static void updateTunerResources(const vector<TunerFrontendInfo>& feInfos,
59*ec779b8eSAndroid Build Coastguard Worker                                      const vector<int64_t>& lnbHandles);
60*ec779b8eSAndroid Build Coastguard Worker 
61*ec779b8eSAndroid Build Coastguard Worker     static void updateTunerResources(const vector<TunerFrontendInfo>& feInfos,
62*ec779b8eSAndroid Build Coastguard Worker                                      const vector<TunerDemuxInfo>& demuxInfos,
63*ec779b8eSAndroid Build Coastguard Worker                                      const vector<int64_t>& lnbHandles);
64*ec779b8eSAndroid Build Coastguard Worker     // TODO: create a map between resource id and handles.
65*ec779b8eSAndroid Build Coastguard Worker     static int getResourceIdFromHandle(long resourceHandle, int type);
66*ec779b8eSAndroid Build Coastguard Worker     static long getResourceHandleFromId(int id, int resourceType);
67*ec779b8eSAndroid Build Coastguard Worker 
68*ec779b8eSAndroid Build Coastguard Worker private:
69*ec779b8eSAndroid Build Coastguard Worker     static int32_t sResourceRequestCount;
70*ec779b8eSAndroid Build Coastguard Worker 
71*ec779b8eSAndroid Build Coastguard Worker     static constexpr uint32_t RESOURCE_ID_SHIFT = 24;
72*ec779b8eSAndroid Build Coastguard Worker     static constexpr uint32_t RESOURCE_TYPE_SHIFT = 56;
73*ec779b8eSAndroid Build Coastguard Worker     static constexpr uint32_t RESOURCE_COUNT_MASK = 0xffffff;
74*ec779b8eSAndroid Build Coastguard Worker     static constexpr uint32_t RESOURCE_ID_MASK = 0xffffffff;
75*ec779b8eSAndroid Build Coastguard Worker     static constexpr uint32_t RESOURCE_TYPE_MASK = 0xff;
76*ec779b8eSAndroid Build Coastguard Worker };
77*ec779b8eSAndroid Build Coastguard Worker 
78*ec779b8eSAndroid Build Coastguard Worker }  // namespace tuner
79*ec779b8eSAndroid Build Coastguard Worker }  // namespace tv
80*ec779b8eSAndroid Build Coastguard Worker }  // namespace media
81*ec779b8eSAndroid Build Coastguard Worker }  // namespace android
82*ec779b8eSAndroid Build Coastguard Worker }  // namespace aidl
83*ec779b8eSAndroid Build Coastguard Worker 
84*ec779b8eSAndroid Build Coastguard Worker #endif  // ANDROID_MEDIA_TUNERDVRHELPER_H
85