blob: 1fb7a5c1802acf7f6db7ba067634550679d06ec1 [file] [log] [blame]
Amy Zhangada92d72021-01-22 16:45:53 -08001/**
2 * Copyright 2021, The Android Open Source Project
3 *
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_TUNERDVR_H
18#define ANDROID_MEDIA_TUNERDVR_H
19
Hongguangeae68392021-07-27 20:56:23 -070020#include <aidl/android/hardware/tv/tuner/BnDvrCallback.h>
21#include <aidl/android/hardware/tv/tuner/DvrSettings.h>
22#include <aidl/android/hardware/tv/tuner/DvrType.h>
23#include <aidl/android/hardware/tv/tuner/IDvr.h>
24#include <aidl/android/hardware/tv/tuner/PlaybackStatus.h>
25#include <aidl/android/hardware/tv/tuner/RecordStatus.h>
Amy Zhangada92d72021-01-22 16:45:53 -080026#include <aidl/android/media/tv/tuner/BnTunerDvr.h>
27#include <aidl/android/media/tv/tuner/ITunerDvrCallback.h>
Amy Zhangada92d72021-01-22 16:45:53 -080028
Hongguangeae68392021-07-27 20:56:23 -070029#include "TunerFilter.h"
Amy Zhangada92d72021-01-22 16:45:53 -080030
Amy Zhangada92d72021-01-22 16:45:53 -080031using ::aidl::android::hardware::common::fmq::MQDescriptor;
32using ::aidl::android::hardware::common::fmq::SynchronizedReadWrite;
Hongguangeae68392021-07-27 20:56:23 -070033using ::aidl::android::hardware::tv::tuner::BnDvrCallback;
34using ::aidl::android::hardware::tv::tuner::DvrSettings;
35using ::aidl::android::hardware::tv::tuner::DvrType;
36using ::aidl::android::hardware::tv::tuner::IDvr;
37using ::aidl::android::hardware::tv::tuner::PlaybackStatus;
38using ::aidl::android::hardware::tv::tuner::RecordStatus;
Amy Zhangada92d72021-01-22 16:45:53 -080039
40using namespace std;
41
Hongguangeae68392021-07-27 20:56:23 -070042namespace aidl {
Amy Zhangada92d72021-01-22 16:45:53 -080043namespace android {
Hongguangeae68392021-07-27 20:56:23 -070044namespace media {
45namespace tv {
46namespace tuner {
Amy Zhangada92d72021-01-22 16:45:53 -080047
Amy Zhangada92d72021-01-22 16:45:53 -080048using AidlMQDesc = MQDescriptor<int8_t, SynchronizedReadWrite>;
49
50class TunerDvr : public BnTunerDvr {
51
52public:
Hongguangeae68392021-07-27 20:56:23 -070053 TunerDvr(shared_ptr<IDvr> dvr, DvrType type);
Amy Zhangada92d72021-01-22 16:45:53 -080054 ~TunerDvr();
55
Hongguangeae68392021-07-27 20:56:23 -070056 ::ndk::ScopedAStatus getQueueDesc(AidlMQDesc* _aidl_return) override;
57 ::ndk::ScopedAStatus configure(const DvrSettings& in_settings) override;
58 ::ndk::ScopedAStatus attachFilter(const shared_ptr<ITunerFilter>& in_filter) override;
59 ::ndk::ScopedAStatus detachFilter(const shared_ptr<ITunerFilter>& in_filter) override;
60 ::ndk::ScopedAStatus start() override;
61 ::ndk::ScopedAStatus stop() override;
62 ::ndk::ScopedAStatus flush() override;
63 ::ndk::ScopedAStatus close() override;
Ray Chin82f49232022-09-15 14:29:29 +080064 ::ndk::ScopedAStatus setStatusCheckIntervalHint(int64_t in_milliseconds) override;
Amy Zhangada92d72021-01-22 16:45:53 -080065
Hongguangeae68392021-07-27 20:56:23 -070066 struct DvrCallback : public BnDvrCallback {
Amy Zhangada92d72021-01-22 16:45:53 -080067 DvrCallback(const shared_ptr<ITunerDvrCallback> tunerDvrCallback)
Hongguangeae68392021-07-27 20:56:23 -070068 : mTunerDvrCallback(tunerDvrCallback){};
Amy Zhangada92d72021-01-22 16:45:53 -080069
Hongguangeae68392021-07-27 20:56:23 -070070 ::ndk::ScopedAStatus onRecordStatus(const RecordStatus status) override;
71 ::ndk::ScopedAStatus onPlaybackStatus(const PlaybackStatus status) override;
Amy Zhangada92d72021-01-22 16:45:53 -080072
Hongguangeae68392021-07-27 20:56:23 -070073 private:
74 shared_ptr<ITunerDvrCallback> mTunerDvrCallback;
Amy Zhangada92d72021-01-22 16:45:53 -080075 };
76
77private:
Hongguangeae68392021-07-27 20:56:23 -070078 shared_ptr<IDvr> mDvr;
Amy Zhangada92d72021-01-22 16:45:53 -080079 DvrType mType;
Ray Chin420c0302024-03-12 15:46:26 +080080 bool isClosed = false;
Amy Zhangada92d72021-01-22 16:45:53 -080081};
82
Hongguangeae68392021-07-27 20:56:23 -070083} // namespace tuner
84} // namespace tv
85} // namespace media
86} // namespace android
87} // namespace aidl
Amy Zhangada92d72021-01-22 16:45:53 -080088
89#endif // ANDROID_MEDIA_TUNERDVR_H