blob: a96099e3469ca405cdff4744d9c91a24a3c324b2 [file] [log] [blame]
Amy Zhang0f04c452020-10-30 13:36:44 -07001/**
Hongguangeae68392021-07-27 20:56:23 -07002 * Copyright 2021, The Android Open Source Project
Amy Zhang0f04c452020-10-30 13:36:44 -07003 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#ifndef ANDROID_MEDIA_TUNERFRONTEND_H
18#define ANDROID_MEDIA_TUNERFRONTEND_H
19
Hongguangeae68392021-07-27 20:56:23 -070020#include <aidl/android/hardware/tv/tuner/BnFrontendCallback.h>
21#include <aidl/android/hardware/tv/tuner/IFrontend.h>
22#include <aidl/android/hardware/tv/tuner/IFrontendCallback.h>
Amy Zhang0f04c452020-10-30 13:36:44 -070023#include <aidl/android/media/tv/tuner/BnTunerFrontend.h>
Amy Zhang0f04c452020-10-30 13:36:44 -070024#include <utils/Log.h>
25
Hongguangeae68392021-07-27 20:56:23 -070026using ::aidl::android::hardware::tv::tuner::BnFrontendCallback;
27using ::aidl::android::hardware::tv::tuner::FrontendEventType;
28using ::aidl::android::hardware::tv::tuner::FrontendScanMessage;
29using ::aidl::android::hardware::tv::tuner::FrontendScanMessageType;
30using ::aidl::android::hardware::tv::tuner::FrontendScanType;
31using ::aidl::android::hardware::tv::tuner::FrontendSettings;
32using ::aidl::android::hardware::tv::tuner::FrontendStatus;
33using ::aidl::android::hardware::tv::tuner::FrontendStatusType;
34using ::aidl::android::hardware::tv::tuner::IFrontend;
35using ::aidl::android::hardware::tv::tuner::IFrontendCallback;
Amy Zhang0f04c452020-10-30 13:36:44 -070036
Amy Zhanga046eee2021-01-12 14:44:58 -080037using namespace std;
38
Hongguangeae68392021-07-27 20:56:23 -070039namespace aidl {
Amy Zhang0f04c452020-10-30 13:36:44 -070040namespace android {
Hongguangeae68392021-07-27 20:56:23 -070041namespace media {
42namespace tv {
43namespace tuner {
Amy Zhang0f04c452020-10-30 13:36:44 -070044
45class TunerFrontend : public BnTunerFrontend {
46
47public:
Hongguangeae68392021-07-27 20:56:23 -070048 TunerFrontend(shared_ptr<IFrontend> frontend, int id);
Amy Zhang0f04c452020-10-30 13:36:44 -070049 virtual ~TunerFrontend();
Amy Zhang0f04c452020-10-30 13:36:44 -070050
Hongguangeae68392021-07-27 20:56:23 -070051 ::ndk::ScopedAStatus setCallback(
52 const shared_ptr<ITunerFrontendCallback>& in_tunerFrontendCallback) override;
53 ::ndk::ScopedAStatus tune(const FrontendSettings& in_settings) override;
54 ::ndk::ScopedAStatus stopTune() override;
55 ::ndk::ScopedAStatus scan(const FrontendSettings& in_settings,
56 FrontendScanType in_frontendScanType) override;
57 ::ndk::ScopedAStatus stopScan() override;
58 ::ndk::ScopedAStatus setLnb(const shared_ptr<ITunerLnb>& in_lnb) override;
Hongguangeae68392021-07-27 20:56:23 -070059 ::ndk::ScopedAStatus linkCiCamToFrontend(int32_t in_ciCamId, int32_t* _aidl_return) override;
60 ::ndk::ScopedAStatus unlinkCiCamToFrontend(int32_t in_ciCamId) override;
61 ::ndk::ScopedAStatus close() override;
62 ::ndk::ScopedAStatus getStatus(const vector<FrontendStatusType>& in_statusTypes,
63 vector<FrontendStatus>* _aidl_return) override;
64 ::ndk::ScopedAStatus getFrontendId(int32_t* _aidl_return) override;
Hongguangd8ccaae2021-12-13 18:07:10 -080065 ::ndk::ScopedAStatus getHardwareInfo(std::string* _aidl_return) override;
Hongguangf6964ff2022-01-11 12:15:31 -080066 ::ndk::ScopedAStatus removeOutputPid(int32_t in_pid) override;
Hongguangeae68392021-07-27 20:56:23 -070067
68 struct FrontendCallback : public BnFrontendCallback {
Amy Zhanga046eee2021-01-12 14:44:58 -080069 FrontendCallback(const shared_ptr<ITunerFrontendCallback> tunerFrontendCallback)
Hongguangeae68392021-07-27 20:56:23 -070070 : mTunerFrontendCallback(tunerFrontendCallback){};
Amy Zhang0f04c452020-10-30 13:36:44 -070071
Hongguangeae68392021-07-27 20:56:23 -070072 ::ndk::ScopedAStatus onEvent(FrontendEventType frontendEventType) override;
73 ::ndk::ScopedAStatus onScanMessage(FrontendScanMessageType type,
74 const FrontendScanMessage& message) override;
Amy Zhang0f04c452020-10-30 13:36:44 -070075
Amy Zhanga046eee2021-01-12 14:44:58 -080076 shared_ptr<ITunerFrontendCallback> mTunerFrontendCallback;
Amy Zhang0f04c452020-10-30 13:36:44 -070077 };
78
79private:
Amy Zhang0f04c452020-10-30 13:36:44 -070080 int mId;
Hongguangeae68392021-07-27 20:56:23 -070081 shared_ptr<IFrontend> mFrontend;
Amy Zhang0f04c452020-10-30 13:36:44 -070082};
83
Hongguangeae68392021-07-27 20:56:23 -070084} // namespace tuner
85} // namespace tv
86} // namespace media
87} // namespace android
88} // namespace aidl
Amy Zhang0f04c452020-10-30 13:36:44 -070089
90#endif // ANDROID_MEDIA_TUNERFRONTEND_H