xref: /aosp_15_r20/frameworks/base/media/jni/tuner/TunerClient.h (revision d57664e9bc4670b3ecf6748a746a57c557b6bc9e)
1*d57664e9SAndroid Build Coastguard Worker /*
2*d57664e9SAndroid Build Coastguard Worker  * Copyright 2021 The Android Open Source Project
3*d57664e9SAndroid Build Coastguard Worker  *
4*d57664e9SAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*d57664e9SAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*d57664e9SAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*d57664e9SAndroid Build Coastguard Worker  *
8*d57664e9SAndroid Build Coastguard Worker  *      http://www.apache.org/licenses/LICENSE-2.0
9*d57664e9SAndroid Build Coastguard Worker  *
10*d57664e9SAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*d57664e9SAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*d57664e9SAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*d57664e9SAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*d57664e9SAndroid Build Coastguard Worker  * limitations under the License.
15*d57664e9SAndroid Build Coastguard Worker  */
16*d57664e9SAndroid Build Coastguard Worker 
17*d57664e9SAndroid Build Coastguard Worker #ifndef _ANDROID_MEDIA_TV_TUNER_CLIENT_H_
18*d57664e9SAndroid Build Coastguard Worker #define _ANDROID_MEDIA_TV_TUNER_CLIENT_H_
19*d57664e9SAndroid Build Coastguard Worker 
20*d57664e9SAndroid Build Coastguard Worker #include <aidl/android/media/tv/tuner/ITunerService.h>
21*d57664e9SAndroid Build Coastguard Worker #include <android/binder_parcel_utils.h>
22*d57664e9SAndroid Build Coastguard Worker 
23*d57664e9SAndroid Build Coastguard Worker #include "ClientHelper.h"
24*d57664e9SAndroid Build Coastguard Worker #include "DemuxClient.h"
25*d57664e9SAndroid Build Coastguard Worker #include "DescramblerClient.h"
26*d57664e9SAndroid Build Coastguard Worker #include "FilterClient.h"
27*d57664e9SAndroid Build Coastguard Worker #include "FilterClientCallback.h"
28*d57664e9SAndroid Build Coastguard Worker #include "FrontendClient.h"
29*d57664e9SAndroid Build Coastguard Worker #include "LnbClient.h"
30*d57664e9SAndroid Build Coastguard Worker 
31*d57664e9SAndroid Build Coastguard Worker using Status = ::ndk::ScopedAStatus;
32*d57664e9SAndroid Build Coastguard Worker 
33*d57664e9SAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::DemuxCapabilities;
34*d57664e9SAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::DemuxInfo;
35*d57664e9SAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendInfo;
36*d57664e9SAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendType;
37*d57664e9SAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::Result;
38*d57664e9SAndroid Build Coastguard Worker using ::aidl::android::media::tv::tuner::ITunerService;
39*d57664e9SAndroid Build Coastguard Worker 
40*d57664e9SAndroid Build Coastguard Worker using namespace std;
41*d57664e9SAndroid Build Coastguard Worker 
42*d57664e9SAndroid Build Coastguard Worker namespace android {
43*d57664e9SAndroid Build Coastguard Worker 
44*d57664e9SAndroid Build Coastguard Worker const static int32_t TUNER_HAL_VERSION_UNKNOWN = 0;
45*d57664e9SAndroid Build Coastguard Worker const static int32_t TUNER_HAL_VERSION_1_0 = 1 << 16;
46*d57664e9SAndroid Build Coastguard Worker const static int32_t TUNER_HAL_VERSION_1_1 = (1 << 16) | 1;
47*d57664e9SAndroid Build Coastguard Worker const static int32_t TUNER_HAL_VERSION_2_0 = 2 << 16;
48*d57664e9SAndroid Build Coastguard Worker 
49*d57664e9SAndroid Build Coastguard Worker struct TunerClient : public RefBase {
50*d57664e9SAndroid Build Coastguard Worker 
51*d57664e9SAndroid Build Coastguard Worker public:
52*d57664e9SAndroid Build Coastguard Worker     TunerClient();
53*d57664e9SAndroid Build Coastguard Worker     ~TunerClient();
54*d57664e9SAndroid Build Coastguard Worker 
55*d57664e9SAndroid Build Coastguard Worker     /**
56*d57664e9SAndroid Build Coastguard Worker      * Retrieve all the frontend ids.
57*d57664e9SAndroid Build Coastguard Worker      *
58*d57664e9SAndroid Build Coastguard Worker      * @return a list of the available frontend ids
59*d57664e9SAndroid Build Coastguard Worker      */
60*d57664e9SAndroid Build Coastguard Worker     vector<int32_t> getFrontendIds();
61*d57664e9SAndroid Build Coastguard Worker 
62*d57664e9SAndroid Build Coastguard Worker     /**
63*d57664e9SAndroid Build Coastguard Worker      * Open a new interface of FrontendClient given a frontendHandle.
64*d57664e9SAndroid Build Coastguard Worker      *
65*d57664e9SAndroid Build Coastguard Worker      * @param frontendHandle the handle of the frontend granted by TRM.
66*d57664e9SAndroid Build Coastguard Worker      * @return a newly created FrontendClient interface.
67*d57664e9SAndroid Build Coastguard Worker      */
68*d57664e9SAndroid Build Coastguard Worker     sp<FrontendClient> openFrontend(int64_t frontendHandle);
69*d57664e9SAndroid Build Coastguard Worker 
70*d57664e9SAndroid Build Coastguard Worker     /**
71*d57664e9SAndroid Build Coastguard Worker      * Retrieve the granted frontend's information.
72*d57664e9SAndroid Build Coastguard Worker      *
73*d57664e9SAndroid Build Coastguard Worker      * @param id the id of the frontend granted by TRM.
74*d57664e9SAndroid Build Coastguard Worker      * @return the information for the frontend.
75*d57664e9SAndroid Build Coastguard Worker      */
76*d57664e9SAndroid Build Coastguard Worker     shared_ptr<FrontendInfo> getFrontendInfo(int32_t id);
77*d57664e9SAndroid Build Coastguard Worker 
78*d57664e9SAndroid Build Coastguard Worker     /**
79*d57664e9SAndroid Build Coastguard Worker      * Open a new interface of DemuxClient given a demuxHandle.
80*d57664e9SAndroid Build Coastguard Worker      *
81*d57664e9SAndroid Build Coastguard Worker      * @param demuxHandle the handle of the demux granted by TRM.
82*d57664e9SAndroid Build Coastguard Worker      * @return a newly created DemuxClient interface.
83*d57664e9SAndroid Build Coastguard Worker      */
84*d57664e9SAndroid Build Coastguard Worker     sp<DemuxClient> openDemux(int64_t demuxHandle);
85*d57664e9SAndroid Build Coastguard Worker 
86*d57664e9SAndroid Build Coastguard Worker     /**
87*d57664e9SAndroid Build Coastguard Worker      * Retrieve the DemuxInfo of a specific demux
88*d57664e9SAndroid Build Coastguard Worker      *
89*d57664e9SAndroid Build Coastguard Worker      * @param demuxHandle the handle of the demux to query demux info for
90*d57664e9SAndroid Build Coastguard Worker      * @return the demux info
91*d57664e9SAndroid Build Coastguard Worker      */
92*d57664e9SAndroid Build Coastguard Worker     shared_ptr<DemuxInfo> getDemuxInfo(int64_t demuxHandle);
93*d57664e9SAndroid Build Coastguard Worker 
94*d57664e9SAndroid Build Coastguard Worker     /**
95*d57664e9SAndroid Build Coastguard Worker      * Retrieve a list of demux info
96*d57664e9SAndroid Build Coastguard Worker      *
97*d57664e9SAndroid Build Coastguard Worker      * @return a list of DemuxInfo
98*d57664e9SAndroid Build Coastguard Worker      */
99*d57664e9SAndroid Build Coastguard Worker     void getDemuxInfoList(vector<DemuxInfo>* demuxInfoList);
100*d57664e9SAndroid Build Coastguard Worker 
101*d57664e9SAndroid Build Coastguard Worker     /**
102*d57664e9SAndroid Build Coastguard Worker      * Retrieve the Demux capabilities.
103*d57664e9SAndroid Build Coastguard Worker      *
104*d57664e9SAndroid Build Coastguard Worker      * @return the demux’s capabilities.
105*d57664e9SAndroid Build Coastguard Worker      */
106*d57664e9SAndroid Build Coastguard Worker     shared_ptr<DemuxCapabilities> getDemuxCaps();
107*d57664e9SAndroid Build Coastguard Worker 
108*d57664e9SAndroid Build Coastguard Worker     /**
109*d57664e9SAndroid Build Coastguard Worker      * Open a new interface of DescramblerClient given a descramblerHandle.
110*d57664e9SAndroid Build Coastguard Worker      *
111*d57664e9SAndroid Build Coastguard Worker      * @param descramblerHandle the handle of the descrambler granted by TRM.
112*d57664e9SAndroid Build Coastguard Worker      * @return a newly created DescramblerClient interface.
113*d57664e9SAndroid Build Coastguard Worker      */
114*d57664e9SAndroid Build Coastguard Worker     sp<DescramblerClient> openDescrambler(int64_t descramblerHandle);
115*d57664e9SAndroid Build Coastguard Worker 
116*d57664e9SAndroid Build Coastguard Worker     /**
117*d57664e9SAndroid Build Coastguard Worker      * Open a new interface of LnbClient given an lnbHandle.
118*d57664e9SAndroid Build Coastguard Worker      *
119*d57664e9SAndroid Build Coastguard Worker      * @param lnbHandle the handle of the LNB granted by TRM.
120*d57664e9SAndroid Build Coastguard Worker      * @return a newly created LnbClient interface.
121*d57664e9SAndroid Build Coastguard Worker      */
122*d57664e9SAndroid Build Coastguard Worker     sp<LnbClient> openLnb(int64_t lnbHandle);
123*d57664e9SAndroid Build Coastguard Worker 
124*d57664e9SAndroid Build Coastguard Worker     /**
125*d57664e9SAndroid Build Coastguard Worker      * Open a new interface of LnbClient given a LNB name.
126*d57664e9SAndroid Build Coastguard Worker      *
127*d57664e9SAndroid Build Coastguard Worker      * @param lnbName the name for an external LNB to be opened.
128*d57664e9SAndroid Build Coastguard Worker      * @return a newly created LnbClient interface.
129*d57664e9SAndroid Build Coastguard Worker      */
130*d57664e9SAndroid Build Coastguard Worker     sp<LnbClient> openLnbByName(string lnbName);
131*d57664e9SAndroid Build Coastguard Worker 
132*d57664e9SAndroid Build Coastguard Worker     /**
133*d57664e9SAndroid Build Coastguard Worker      * Get the current Tuner HAL version. The high 16 bits are the major version number
134*d57664e9SAndroid Build Coastguard Worker      * while the low 16 bits are the minor version. Default value is unknown version 0.
135*d57664e9SAndroid Build Coastguard Worker      */
getHalTunerVersionTunerClient136*d57664e9SAndroid Build Coastguard Worker     int32_t getHalTunerVersion() { return mTunerVersion; }
137*d57664e9SAndroid Build Coastguard Worker 
138*d57664e9SAndroid Build Coastguard Worker     /**
139*d57664e9SAndroid Build Coastguard Worker      * Open a new shared filter client.
140*d57664e9SAndroid Build Coastguard Worker      *
141*d57664e9SAndroid Build Coastguard Worker      * @param filterToken the shared filter token created by FilterClient.
142*d57664e9SAndroid Build Coastguard Worker      * @param cb the FilterClientCallback to receive filter events.
143*d57664e9SAndroid Build Coastguard Worker      * @return a newly created TunerFilter interface.
144*d57664e9SAndroid Build Coastguard Worker      */
145*d57664e9SAndroid Build Coastguard Worker     sp<FilterClient> openSharedFilter(const string& filterToken, sp<FilterClientCallback> cb);
146*d57664e9SAndroid Build Coastguard Worker 
147*d57664e9SAndroid Build Coastguard Worker     /**
148*d57664e9SAndroid Build Coastguard Worker      * Enable or Disable Low Noise Amplifier (LNA).
149*d57664e9SAndroid Build Coastguard Worker      */
150*d57664e9SAndroid Build Coastguard Worker     Result setLna(bool bEnable);
151*d57664e9SAndroid Build Coastguard Worker 
152*d57664e9SAndroid Build Coastguard Worker     /**
153*d57664e9SAndroid Build Coastguard Worker      * Set the maximum frontend number of a given frontend type.
154*d57664e9SAndroid Build Coastguard Worker      *
155*d57664e9SAndroid Build Coastguard Worker      * @param frontendType the frontend type which maximum number will be set.
156*d57664e9SAndroid Build Coastguard Worker      * @param maxNumber the new maximum number.
157*d57664e9SAndroid Build Coastguard Worker      */
158*d57664e9SAndroid Build Coastguard Worker     Result setMaxNumberOfFrontends(FrontendType frontendType, int32_t maxNumber);
159*d57664e9SAndroid Build Coastguard Worker 
160*d57664e9SAndroid Build Coastguard Worker     /**
161*d57664e9SAndroid Build Coastguard Worker      * Get the maximum frontend number of a given frontend type.
162*d57664e9SAndroid Build Coastguard Worker      *
163*d57664e9SAndroid Build Coastguard Worker      * @param frontendType the frontend type which maximum number will be queried.
164*d57664e9SAndroid Build Coastguard Worker      */
165*d57664e9SAndroid Build Coastguard Worker     int getMaxNumberOfFrontends(FrontendType frontendType);
166*d57664e9SAndroid Build Coastguard Worker 
167*d57664e9SAndroid Build Coastguard Worker     /**
168*d57664e9SAndroid Build Coastguard Worker      * Is Low Noise Amplifier (LNA) supported.
169*d57664e9SAndroid Build Coastguard Worker      */
170*d57664e9SAndroid Build Coastguard Worker     bool isLnaSupported();
171*d57664e9SAndroid Build Coastguard Worker 
172*d57664e9SAndroid Build Coastguard Worker private:
173*d57664e9SAndroid Build Coastguard Worker     /**
174*d57664e9SAndroid Build Coastguard Worker      * An AIDL Tuner Service assigned at the first time the Tuner Client connects with
175*d57664e9SAndroid Build Coastguard Worker      * the Tuner Service. null when the service does not exist. The tuner client in JNI
176*d57664e9SAndroid Build Coastguard Worker      * will be singleton, so this Tuner Service client will be singleton too.
177*d57664e9SAndroid Build Coastguard Worker      */
178*d57664e9SAndroid Build Coastguard Worker     shared_ptr<ITunerService> mTunerService;
179*d57664e9SAndroid Build Coastguard Worker 
180*d57664e9SAndroid Build Coastguard Worker     // An integer that carries the Tuner version. The high 16 bits are the major version number
181*d57664e9SAndroid Build Coastguard Worker     // while the low 16 bits are the minor version. Default value is unknown version 0.
182*d57664e9SAndroid Build Coastguard Worker     static int32_t mTunerVersion;
183*d57664e9SAndroid Build Coastguard Worker };
184*d57664e9SAndroid Build Coastguard Worker }  // namespace android
185*d57664e9SAndroid Build Coastguard Worker 
186*d57664e9SAndroid Build Coastguard Worker #endif  // _ANDROID_MEDIA_TV_TUNER_CLIENT_H_
187