xref: /aosp_15_r20/frameworks/base/media/jni/tuner/LnbClient.cpp (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 #define LOG_TAG "LnbClient"
18*d57664e9SAndroid Build Coastguard Worker 
19*d57664e9SAndroid Build Coastguard Worker #include <android-base/logging.h>
20*d57664e9SAndroid Build Coastguard Worker #include <utils/Log.h>
21*d57664e9SAndroid Build Coastguard Worker 
22*d57664e9SAndroid Build Coastguard Worker #include "LnbClient.h"
23*d57664e9SAndroid Build Coastguard Worker 
24*d57664e9SAndroid Build Coastguard Worker namespace android {
25*d57664e9SAndroid Build Coastguard Worker 
26*d57664e9SAndroid Build Coastguard Worker /////////////// LnbClient ///////////////////////
LnbClient(shared_ptr<ITunerLnb> tunerLnb)27*d57664e9SAndroid Build Coastguard Worker LnbClient::LnbClient(shared_ptr<ITunerLnb> tunerLnb) {
28*d57664e9SAndroid Build Coastguard Worker     mTunerLnb = tunerLnb;
29*d57664e9SAndroid Build Coastguard Worker }
30*d57664e9SAndroid Build Coastguard Worker 
~LnbClient()31*d57664e9SAndroid Build Coastguard Worker LnbClient::~LnbClient() {
32*d57664e9SAndroid Build Coastguard Worker     mTunerLnb = nullptr;
33*d57664e9SAndroid Build Coastguard Worker }
34*d57664e9SAndroid Build Coastguard Worker 
setCallback(sp<LnbClientCallback> cb)35*d57664e9SAndroid Build Coastguard Worker Result LnbClient::setCallback(sp<LnbClientCallback> cb) {
36*d57664e9SAndroid Build Coastguard Worker     if (mTunerLnb != nullptr) {
37*d57664e9SAndroid Build Coastguard Worker         shared_ptr<TunerLnbCallback> aidlCallback =
38*d57664e9SAndroid Build Coastguard Worker                 ::ndk::SharedRefBase::make<TunerLnbCallback>(cb);
39*d57664e9SAndroid Build Coastguard Worker         Status s = mTunerLnb->setCallback(aidlCallback);
40*d57664e9SAndroid Build Coastguard Worker         return ClientHelper::getServiceSpecificErrorCode(s);
41*d57664e9SAndroid Build Coastguard Worker     }
42*d57664e9SAndroid Build Coastguard Worker 
43*d57664e9SAndroid Build Coastguard Worker     return Result::INVALID_STATE;
44*d57664e9SAndroid Build Coastguard Worker }
45*d57664e9SAndroid Build Coastguard Worker 
setVoltage(LnbVoltage voltage)46*d57664e9SAndroid Build Coastguard Worker Result LnbClient::setVoltage(LnbVoltage voltage) {
47*d57664e9SAndroid Build Coastguard Worker     if (mTunerLnb != nullptr) {
48*d57664e9SAndroid Build Coastguard Worker         Status s = mTunerLnb->setVoltage(voltage);
49*d57664e9SAndroid Build Coastguard Worker         return ClientHelper::getServiceSpecificErrorCode(s);
50*d57664e9SAndroid Build Coastguard Worker     }
51*d57664e9SAndroid Build Coastguard Worker 
52*d57664e9SAndroid Build Coastguard Worker     return Result::INVALID_STATE;
53*d57664e9SAndroid Build Coastguard Worker }
54*d57664e9SAndroid Build Coastguard Worker 
setTone(LnbTone tone)55*d57664e9SAndroid Build Coastguard Worker Result LnbClient::setTone(LnbTone tone) {
56*d57664e9SAndroid Build Coastguard Worker     if (mTunerLnb != nullptr) {
57*d57664e9SAndroid Build Coastguard Worker         Status s = mTunerLnb->setTone(tone);
58*d57664e9SAndroid Build Coastguard Worker         return ClientHelper::getServiceSpecificErrorCode(s);
59*d57664e9SAndroid Build Coastguard Worker     }
60*d57664e9SAndroid Build Coastguard Worker 
61*d57664e9SAndroid Build Coastguard Worker     return Result::INVALID_STATE;
62*d57664e9SAndroid Build Coastguard Worker }
63*d57664e9SAndroid Build Coastguard Worker 
setSatellitePosition(LnbPosition position)64*d57664e9SAndroid Build Coastguard Worker Result LnbClient::setSatellitePosition(LnbPosition position) {
65*d57664e9SAndroid Build Coastguard Worker     if (mTunerLnb != nullptr) {
66*d57664e9SAndroid Build Coastguard Worker         Status s = mTunerLnb->setSatellitePosition(position);
67*d57664e9SAndroid Build Coastguard Worker         return ClientHelper::getServiceSpecificErrorCode(s);
68*d57664e9SAndroid Build Coastguard Worker     }
69*d57664e9SAndroid Build Coastguard Worker 
70*d57664e9SAndroid Build Coastguard Worker     return Result::INVALID_STATE;
71*d57664e9SAndroid Build Coastguard Worker }
72*d57664e9SAndroid Build Coastguard Worker 
sendDiseqcMessage(vector<uint8_t> diseqcMessage)73*d57664e9SAndroid Build Coastguard Worker Result LnbClient::sendDiseqcMessage(vector<uint8_t> diseqcMessage) {
74*d57664e9SAndroid Build Coastguard Worker     if (mTunerLnb != nullptr) {
75*d57664e9SAndroid Build Coastguard Worker         Status s = mTunerLnb->sendDiseqcMessage(diseqcMessage);
76*d57664e9SAndroid Build Coastguard Worker         return ClientHelper::getServiceSpecificErrorCode(s);
77*d57664e9SAndroid Build Coastguard Worker     }
78*d57664e9SAndroid Build Coastguard Worker 
79*d57664e9SAndroid Build Coastguard Worker     return Result::INVALID_STATE;
80*d57664e9SAndroid Build Coastguard Worker }
81*d57664e9SAndroid Build Coastguard Worker 
close()82*d57664e9SAndroid Build Coastguard Worker Result LnbClient::close() {
83*d57664e9SAndroid Build Coastguard Worker     if (mTunerLnb != nullptr) {
84*d57664e9SAndroid Build Coastguard Worker         Status s = mTunerLnb->close();
85*d57664e9SAndroid Build Coastguard Worker         mTunerLnb = nullptr;
86*d57664e9SAndroid Build Coastguard Worker         return ClientHelper::getServiceSpecificErrorCode(s);
87*d57664e9SAndroid Build Coastguard Worker     }
88*d57664e9SAndroid Build Coastguard Worker 
89*d57664e9SAndroid Build Coastguard Worker     return Result::INVALID_STATE;
90*d57664e9SAndroid Build Coastguard Worker }
91*d57664e9SAndroid Build Coastguard Worker 
92*d57664e9SAndroid Build Coastguard Worker /////////////// TunerLnbCallback ///////////////////////
TunerLnbCallback(sp<LnbClientCallback> lnbClientCallback)93*d57664e9SAndroid Build Coastguard Worker TunerLnbCallback::TunerLnbCallback(sp<LnbClientCallback> lnbClientCallback)
94*d57664e9SAndroid Build Coastguard Worker         : mLnbClientCallback(lnbClientCallback) {}
95*d57664e9SAndroid Build Coastguard Worker 
onEvent(LnbEventType lnbEventType)96*d57664e9SAndroid Build Coastguard Worker Status TunerLnbCallback::onEvent(LnbEventType lnbEventType) {
97*d57664e9SAndroid Build Coastguard Worker     if (mLnbClientCallback != nullptr) {
98*d57664e9SAndroid Build Coastguard Worker         mLnbClientCallback->onEvent(lnbEventType);
99*d57664e9SAndroid Build Coastguard Worker         return Status::ok();
100*d57664e9SAndroid Build Coastguard Worker     }
101*d57664e9SAndroid Build Coastguard Worker     return Status::fromServiceSpecificError(static_cast<int32_t>(Result::INVALID_STATE));
102*d57664e9SAndroid Build Coastguard Worker }
103*d57664e9SAndroid Build Coastguard Worker 
onDiseqcMessage(const vector<uint8_t> & diseqcMessage)104*d57664e9SAndroid Build Coastguard Worker Status TunerLnbCallback::onDiseqcMessage(const vector<uint8_t>& diseqcMessage) {
105*d57664e9SAndroid Build Coastguard Worker     if (mLnbClientCallback != nullptr) {
106*d57664e9SAndroid Build Coastguard Worker         mLnbClientCallback->onDiseqcMessage(diseqcMessage);
107*d57664e9SAndroid Build Coastguard Worker         return Status::ok();
108*d57664e9SAndroid Build Coastguard Worker     }
109*d57664e9SAndroid Build Coastguard Worker     return Status::fromServiceSpecificError(static_cast<int32_t>(Result::INVALID_STATE));
110*d57664e9SAndroid Build Coastguard Worker }
111*d57664e9SAndroid Build Coastguard Worker }  // namespace android
112