blob: 96121245e3412489883e261b26ecd9ce31381703 [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;
Hongguang85c4b142022-01-14 13:34:00 -080033using ::aidl::android::hardware::tv::tuner::FrontendStatusReadiness;
Hongguangeae68392021-07-27 20:56:23 -070034using ::aidl::android::hardware::tv::tuner::FrontendStatusType;
35using ::aidl::android::hardware::tv::tuner::IFrontend;
36using ::aidl::android::hardware::tv::tuner::IFrontendCallback;
Amy Zhang0f04c452020-10-30 13:36:44 -070037
Amy Zhanga046eee2021-01-12 14:44:58 -080038using namespace std;
39
Hongguangeae68392021-07-27 20:56:23 -070040namespace aidl {
Amy Zhang0f04c452020-10-30 13:36:44 -070041namespace android {
Hongguangeae68392021-07-27 20:56:23 -070042namespace media {
43namespace tv {
44namespace tuner {
Amy Zhang0f04c452020-10-30 13:36:44 -070045
46class TunerFrontend : public BnTunerFrontend {
47
48public:
Hongguangeae68392021-07-27 20:56:23 -070049 TunerFrontend(shared_ptr<IFrontend> frontend, int id);
Amy Zhang0f04c452020-10-30 13:36:44 -070050 virtual ~TunerFrontend();
Amy Zhang0f04c452020-10-30 13:36:44 -070051
Hongguangeae68392021-07-27 20:56:23 -070052 ::ndk::ScopedAStatus setCallback(
53 const shared_ptr<ITunerFrontendCallback>& in_tunerFrontendCallback) override;
54 ::ndk::ScopedAStatus tune(const FrontendSettings& in_settings) override;
55 ::ndk::ScopedAStatus stopTune() override;
56 ::ndk::ScopedAStatus scan(const FrontendSettings& in_settings,
57 FrontendScanType in_frontendScanType) override;
58 ::ndk::ScopedAStatus stopScan() override;
59 ::ndk::ScopedAStatus setLnb(const shared_ptr<ITunerLnb>& in_lnb) override;
Hongguangeae68392021-07-27 20:56:23 -070060 ::ndk::ScopedAStatus linkCiCamToFrontend(int32_t in_ciCamId, int32_t* _aidl_return) override;
61 ::ndk::ScopedAStatus unlinkCiCamToFrontend(int32_t in_ciCamId) override;
62 ::ndk::ScopedAStatus close() override;
63 ::ndk::ScopedAStatus getStatus(const vector<FrontendStatusType>& in_statusTypes,
64 vector<FrontendStatus>* _aidl_return) override;
65 ::ndk::ScopedAStatus getFrontendId(int32_t* _aidl_return) override;
Hongguangd8ccaae2021-12-13 18:07:10 -080066 ::ndk::ScopedAStatus getHardwareInfo(std::string* _aidl_return) override;
Hongguangf6964ff2022-01-11 12:15:31 -080067 ::ndk::ScopedAStatus removeOutputPid(int32_t in_pid) override;
Hongguang85c4b142022-01-14 13:34:00 -080068 ::ndk::ScopedAStatus getFrontendStatusReadiness(
69 const std::vector<FrontendStatusType>& in_statusTypes,
70 std::vector<FrontendStatusReadiness>* _aidl_return) override;
Hongguangeae68392021-07-27 20:56:23 -070071
72 struct FrontendCallback : public BnFrontendCallback {
Amy Zhanga046eee2021-01-12 14:44:58 -080073 FrontendCallback(const shared_ptr<ITunerFrontendCallback> tunerFrontendCallback)
Hongguangeae68392021-07-27 20:56:23 -070074 : mTunerFrontendCallback(tunerFrontendCallback){};
Amy Zhang0f04c452020-10-30 13:36:44 -070075
Hongguangeae68392021-07-27 20:56:23 -070076 ::ndk::ScopedAStatus onEvent(FrontendEventType frontendEventType) override;
77 ::ndk::ScopedAStatus onScanMessage(FrontendScanMessageType type,
78 const FrontendScanMessage& message) override;
Amy Zhang0f04c452020-10-30 13:36:44 -070079
Amy Zhanga046eee2021-01-12 14:44:58 -080080 shared_ptr<ITunerFrontendCallback> mTunerFrontendCallback;
Amy Zhang0f04c452020-10-30 13:36:44 -070081 };
82
83private:
Amy Zhang0f04c452020-10-30 13:36:44 -070084 int mId;
Hongguangeae68392021-07-27 20:56:23 -070085 shared_ptr<IFrontend> mFrontend;
Ray Chin420c0302024-03-12 15:46:26 +080086 bool isClosed = false;
Amy Zhang0f04c452020-10-30 13:36:44 -070087};
88
Hongguangeae68392021-07-27 20:56:23 -070089} // namespace tuner
90} // namespace tv
91} // namespace media
92} // namespace android
93} // namespace aidl
Amy Zhang0f04c452020-10-30 13:36:44 -070094
95#endif // ANDROID_MEDIA_TUNERFRONTEND_H