1*ec779b8eSAndroid Build Coastguard Worker /**
2*ec779b8eSAndroid Build Coastguard Worker * Copyright 2021, The Android Open Source Project
3*ec779b8eSAndroid Build Coastguard Worker *
4*ec779b8eSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License");
5*ec779b8eSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License.
6*ec779b8eSAndroid Build Coastguard Worker * You may obtain a copy of the License at
7*ec779b8eSAndroid Build Coastguard Worker *
8*ec779b8eSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0
9*ec779b8eSAndroid Build Coastguard Worker *
10*ec779b8eSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software
11*ec779b8eSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS,
12*ec779b8eSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*ec779b8eSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and
14*ec779b8eSAndroid Build Coastguard Worker * limitations under the License.
15*ec779b8eSAndroid Build Coastguard Worker */
16*ec779b8eSAndroid Build Coastguard Worker
17*ec779b8eSAndroid Build Coastguard Worker //#define LOG_NDEBUG 0
18*ec779b8eSAndroid Build Coastguard Worker #define LOG_TAG "TunerHidlFrontend"
19*ec779b8eSAndroid Build Coastguard Worker
20*ec779b8eSAndroid Build Coastguard Worker #include "TunerHidlFrontend.h"
21*ec779b8eSAndroid Build Coastguard Worker
22*ec779b8eSAndroid Build Coastguard Worker #include <aidl/android/hardware/tv/tuner/Result.h>
23*ec779b8eSAndroid Build Coastguard Worker
24*ec779b8eSAndroid Build Coastguard Worker #include "TunerHidlLnb.h"
25*ec779b8eSAndroid Build Coastguard Worker #include "TunerHidlService.h"
26*ec779b8eSAndroid Build Coastguard Worker
27*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendAnalogSettings;
28*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendAnalogSifStandard;
29*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendAnalogType;
30*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendAtsc3Bandwidth;
31*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendAtsc3CodeRate;
32*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendAtsc3Fec;
33*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendAtsc3Modulation;
34*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendAtsc3PlpSettings;
35*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendAtsc3Settings;
36*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendAtsc3TimeInterleaveMode;
37*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendAtscModulation;
38*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendAtscSettings;
39*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendBandwidth;
40*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendCableTimeInterleaveMode;
41*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendDtmbBandwidth;
42*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendDtmbGuardInterval;
43*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendDtmbModulation;
44*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendDtmbSettings;
45*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendDtmbTimeInterleaveMode;
46*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendDtmbTransmissionMode;
47*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendDvbcAnnex;
48*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendDvbcBandwidth;
49*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendDvbcModulation;
50*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendDvbcSettings;
51*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendDvbsModulation;
52*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendDvbsRolloff;
53*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendDvbsSettings;
54*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendDvbsStandard;
55*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendDvbtBandwidth;
56*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendDvbtConstellation;
57*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendDvbtGuardInterval;
58*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendDvbtHierarchy;
59*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendDvbtSettings;
60*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendDvbtStandard;
61*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendDvbtTransmissionMode;
62*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendGuardInterval;
63*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendInnerFec;
64*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendInterleaveMode;
65*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendIsdbs3Modulation;
66*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendIsdbs3Rolloff;
67*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendIsdbs3Settings;
68*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendIsdbsModulation;
69*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendIsdbsRolloff;
70*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendIsdbsSettings;
71*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendIsdbtBandwidth;
72*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendIsdbtCoderate;
73*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendIsdbtGuardInterval;
74*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendIsdbtMode;
75*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendIsdbtModulation;
76*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendIsdbtSettings;
77*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendModulation;
78*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendModulationStatus;
79*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendRollOff;
80*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendScanAtsc3PlpInfo;
81*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendScanMessageStandard;
82*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendSpectralInversion;
83*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendStatusAtsc3PlpInfo;
84*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::FrontendTransmissionMode;
85*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::hardware::tv::tuner::Result;
86*ec779b8eSAndroid Build Coastguard Worker
87*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendStatusAtsc3PlpInfo =
88*ec779b8eSAndroid Build Coastguard Worker ::aidl::android::hardware::tv::tuner::FrontendStatusAtsc3PlpInfo;
89*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendAnalogSifStandard =
90*ec779b8eSAndroid Build Coastguard Worker ::android::hardware::tv::tuner::V1_0::FrontendAnalogSifStandard;
91*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendAnalogType = ::android::hardware::tv::tuner::V1_0::FrontendAnalogType;
92*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendAtscModulation = ::android::hardware::tv::tuner::V1_0::FrontendAtscModulation;
93*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendAtsc3Bandwidth = ::android::hardware::tv::tuner::V1_0::FrontendAtsc3Bandwidth;
94*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendAtsc3CodeRate = ::android::hardware::tv::tuner::V1_0::FrontendAtsc3CodeRate;
95*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendAtsc3DemodOutputFormat =
96*ec779b8eSAndroid Build Coastguard Worker ::android::hardware::tv::tuner::V1_0::FrontendAtsc3DemodOutputFormat;
97*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendAtsc3Fec = ::android::hardware::tv::tuner::V1_0::FrontendAtsc3Fec;
98*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendAtsc3Modulation = ::android::hardware::tv::tuner::V1_0::FrontendAtsc3Modulation;
99*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendAtsc3TimeInterleaveMode =
100*ec779b8eSAndroid Build Coastguard Worker ::android::hardware::tv::tuner::V1_0::FrontendAtsc3TimeInterleaveMode;
101*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendDvbcAnnex = ::android::hardware::tv::tuner::V1_0::FrontendDvbcAnnex;
102*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendDvbcModulation = ::android::hardware::tv::tuner::V1_0::FrontendDvbcModulation;
103*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendDvbcOuterFec = ::android::hardware::tv::tuner::V1_0::FrontendDvbcOuterFec;
104*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendDvbcSpectralInversion =
105*ec779b8eSAndroid Build Coastguard Worker ::android::hardware::tv::tuner::V1_0::FrontendDvbcSpectralInversion;
106*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendDvbsModulation = ::android::hardware::tv::tuner::V1_0::FrontendDvbsModulation;
107*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendDvbsPilot = ::android::hardware::tv::tuner::V1_0::FrontendDvbsPilot;
108*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendDvbsRolloff = ::android::hardware::tv::tuner::V1_0::FrontendDvbsRolloff;
109*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendDvbsSettings = ::android::hardware::tv::tuner::V1_0::FrontendDvbsSettings;
110*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendDvbsStandard = ::android::hardware::tv::tuner::V1_0::FrontendDvbsStandard;
111*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendDvbsVcmMode = ::android::hardware::tv::tuner::V1_0::FrontendDvbsVcmMode;
112*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendDvbtBandwidth = ::android::hardware::tv::tuner::V1_0::FrontendDvbtBandwidth;
113*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendDvbtCoderate = ::android::hardware::tv::tuner::V1_0::FrontendDvbtCoderate;
114*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendDvbtConstellation =
115*ec779b8eSAndroid Build Coastguard Worker ::android::hardware::tv::tuner::V1_0::FrontendDvbtConstellation;
116*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendDvbtGuardInterval =
117*ec779b8eSAndroid Build Coastguard Worker ::android::hardware::tv::tuner::V1_0::FrontendDvbtGuardInterval;
118*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendDvbtHierarchy = ::android::hardware::tv::tuner::V1_0::FrontendDvbtHierarchy;
119*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendDvbtPlpMode = ::android::hardware::tv::tuner::V1_0::FrontendDvbtPlpMode;
120*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendDvbtSettings = ::android::hardware::tv::tuner::V1_0::FrontendDvbtSettings;
121*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendDvbtStandard = ::android::hardware::tv::tuner::V1_0::FrontendDvbtStandard;
122*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendDvbtTransmissionMode =
123*ec779b8eSAndroid Build Coastguard Worker ::android::hardware::tv::tuner::V1_0::FrontendDvbtTransmissionMode;
124*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendInnerFec = ::android::hardware::tv::tuner::V1_0::FrontendInnerFec;
125*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendIsdbs3Coderate = ::android::hardware::tv::tuner::V1_0::FrontendIsdbs3Coderate;
126*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendIsdbs3Modulation = ::android::hardware::tv::tuner::V1_0::FrontendIsdbs3Modulation;
127*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendIsdbs3Rolloff = ::android::hardware::tv::tuner::V1_0::FrontendIsdbs3Rolloff;
128*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendIsdbs3Settings = ::android::hardware::tv::tuner::V1_0::FrontendIsdbs3Settings;
129*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendIsdbsCoderate = ::android::hardware::tv::tuner::V1_0::FrontendIsdbsCoderate;
130*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendIsdbsModulation = ::android::hardware::tv::tuner::V1_0::FrontendIsdbsModulation;
131*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendIsdbsRolloff = ::android::hardware::tv::tuner::V1_0::FrontendIsdbsRolloff;
132*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendIsdbsSettings = ::android::hardware::tv::tuner::V1_0::FrontendIsdbsSettings;
133*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendIsdbsStreamIdType =
134*ec779b8eSAndroid Build Coastguard Worker ::android::hardware::tv::tuner::V1_0::FrontendIsdbsStreamIdType;
135*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendIsdbtBandwidth = ::android::hardware::tv::tuner::V1_0::FrontendIsdbtBandwidth;
136*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendIsdbtCoderate = ::android::hardware::tv::tuner::V1_0::FrontendIsdbtCoderate;
137*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendIsdbtGuardInterval =
138*ec779b8eSAndroid Build Coastguard Worker ::android::hardware::tv::tuner::V1_0::FrontendIsdbtGuardInterval;
139*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendIsdbtMode = ::android::hardware::tv::tuner::V1_0::FrontendIsdbtMode;
140*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendIsdbtModulation = ::android::hardware::tv::tuner::V1_0::FrontendIsdbtModulation;
141*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendIsdbtSettings = ::android::hardware::tv::tuner::V1_0::FrontendIsdbtSettings;
142*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendModulationStatus = ::android::hardware::tv::tuner::V1_0::FrontendModulationStatus;
143*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendScanAtsc3PlpInfo = ::android::hardware::tv::tuner::V1_0::FrontendScanAtsc3PlpInfo;
144*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendScanType = ::android::hardware::tv::tuner::V1_0::FrontendScanType;
145*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendStatusType = ::android::hardware::tv::tuner::V1_0::FrontendStatusType;
146*ec779b8eSAndroid Build Coastguard Worker using HidlResult = ::android::hardware::tv::tuner::V1_0::Result;
147*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendAnalogAftFlag = ::android::hardware::tv::tuner::V1_1::FrontendAnalogAftFlag;
148*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendBandwidth = ::android::hardware::tv::tuner::V1_1::FrontendBandwidth;
149*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendCableTimeInterleaveMode =
150*ec779b8eSAndroid Build Coastguard Worker ::android::hardware::tv::tuner::V1_1::FrontendCableTimeInterleaveMode;
151*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendDvbcBandwidth = ::android::hardware::tv::tuner::V1_1::FrontendDvbcBandwidth;
152*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendDtmbBandwidth = ::android::hardware::tv::tuner::V1_1::FrontendDtmbBandwidth;
153*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendDtmbCodeRate = ::android::hardware::tv::tuner::V1_1::FrontendDtmbCodeRate;
154*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendDtmbGuardInterval =
155*ec779b8eSAndroid Build Coastguard Worker ::android::hardware::tv::tuner::V1_1::FrontendDtmbGuardInterval;
156*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendDtmbModulation = ::android::hardware::tv::tuner::V1_1::FrontendDtmbModulation;
157*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendDtmbTimeInterleaveMode =
158*ec779b8eSAndroid Build Coastguard Worker ::android::hardware::tv::tuner::V1_1::FrontendDtmbTimeInterleaveMode;
159*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendDtmbTransmissionMode =
160*ec779b8eSAndroid Build Coastguard Worker ::android::hardware::tv::tuner::V1_1::FrontendDtmbTransmissionMode;
161*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendDvbsScanType = ::android::hardware::tv::tuner::V1_1::FrontendDvbsScanType;
162*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendGuardInterval = ::android::hardware::tv::tuner::V1_1::FrontendGuardInterval;
163*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendInterleaveMode = ::android::hardware::tv::tuner::V1_1::FrontendInterleaveMode;
164*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendModulation = ::android::hardware::tv::tuner::V1_1::FrontendModulation;
165*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendRollOff = ::android::hardware::tv::tuner::V1_1::FrontendRollOff;
166*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendTransmissionMode = ::android::hardware::tv::tuner::V1_1::FrontendTransmissionMode;
167*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendSpectralInversion =
168*ec779b8eSAndroid Build Coastguard Worker ::android::hardware::tv::tuner::V1_1::FrontendSpectralInversion;
169*ec779b8eSAndroid Build Coastguard Worker using HidlFrontendStatusTypeExt1_1 = ::android::hardware::tv::tuner::V1_1::FrontendStatusTypeExt1_1;
170*ec779b8eSAndroid Build Coastguard Worker
171*ec779b8eSAndroid Build Coastguard Worker using namespace std;
172*ec779b8eSAndroid Build Coastguard Worker
173*ec779b8eSAndroid Build Coastguard Worker namespace aidl {
174*ec779b8eSAndroid Build Coastguard Worker namespace android {
175*ec779b8eSAndroid Build Coastguard Worker namespace media {
176*ec779b8eSAndroid Build Coastguard Worker namespace tv {
177*ec779b8eSAndroid Build Coastguard Worker namespace tuner {
178*ec779b8eSAndroid Build Coastguard Worker
TunerHidlFrontend(const sp<HidlIFrontend> frontend,const int id,const shared_ptr<TunerHidlService> tuner)179*ec779b8eSAndroid Build Coastguard Worker TunerHidlFrontend::TunerHidlFrontend(const sp<HidlIFrontend> frontend, const int id,
180*ec779b8eSAndroid Build Coastguard Worker const shared_ptr<TunerHidlService> tuner) {
181*ec779b8eSAndroid Build Coastguard Worker mFrontend = frontend;
182*ec779b8eSAndroid Build Coastguard Worker mFrontend_1_1 = ::android::hardware::tv::tuner::V1_1::IFrontend::castFrom(mFrontend);
183*ec779b8eSAndroid Build Coastguard Worker mId = id;
184*ec779b8eSAndroid Build Coastguard Worker mTunerService = tuner;
185*ec779b8eSAndroid Build Coastguard Worker }
186*ec779b8eSAndroid Build Coastguard Worker
~TunerHidlFrontend()187*ec779b8eSAndroid Build Coastguard Worker TunerHidlFrontend::~TunerHidlFrontend() {
188*ec779b8eSAndroid Build Coastguard Worker mFrontend = nullptr;
189*ec779b8eSAndroid Build Coastguard Worker mFrontend_1_1 = nullptr;
190*ec779b8eSAndroid Build Coastguard Worker mId = -1;
191*ec779b8eSAndroid Build Coastguard Worker mTunerService = nullptr;
192*ec779b8eSAndroid Build Coastguard Worker }
193*ec779b8eSAndroid Build Coastguard Worker
setCallback(const shared_ptr<ITunerFrontendCallback> & tunerFrontendCallback)194*ec779b8eSAndroid Build Coastguard Worker ::ndk::ScopedAStatus TunerHidlFrontend::setCallback(
195*ec779b8eSAndroid Build Coastguard Worker const shared_ptr<ITunerFrontendCallback>& tunerFrontendCallback) {
196*ec779b8eSAndroid Build Coastguard Worker if (tunerFrontendCallback == nullptr) {
197*ec779b8eSAndroid Build Coastguard Worker return ::ndk::ScopedAStatus::fromServiceSpecificError(
198*ec779b8eSAndroid Build Coastguard Worker static_cast<int32_t>(Result::INVALID_ARGUMENT));
199*ec779b8eSAndroid Build Coastguard Worker }
200*ec779b8eSAndroid Build Coastguard Worker
201*ec779b8eSAndroid Build Coastguard Worker sp<HidlIFrontendCallback> frontendCallback = new FrontendCallback(tunerFrontendCallback);
202*ec779b8eSAndroid Build Coastguard Worker HidlResult status = mFrontend->setCallback(frontendCallback);
203*ec779b8eSAndroid Build Coastguard Worker if (status == HidlResult::SUCCESS) {
204*ec779b8eSAndroid Build Coastguard Worker return ::ndk::ScopedAStatus::ok();
205*ec779b8eSAndroid Build Coastguard Worker }
206*ec779b8eSAndroid Build Coastguard Worker
207*ec779b8eSAndroid Build Coastguard Worker return ::ndk::ScopedAStatus::fromServiceSpecificError(static_cast<int32_t>(status));
208*ec779b8eSAndroid Build Coastguard Worker }
209*ec779b8eSAndroid Build Coastguard Worker
tune(const FrontendSettings & settings)210*ec779b8eSAndroid Build Coastguard Worker ::ndk::ScopedAStatus TunerHidlFrontend::tune(const FrontendSettings& settings) {
211*ec779b8eSAndroid Build Coastguard Worker HidlResult status;
212*ec779b8eSAndroid Build Coastguard Worker HidlFrontendSettings frontendSettings;
213*ec779b8eSAndroid Build Coastguard Worker HidlFrontendSettingsExt1_1 frontendSettingsExt;
214*ec779b8eSAndroid Build Coastguard Worker getHidlFrontendSettings(settings, frontendSettings, frontendSettingsExt);
215*ec779b8eSAndroid Build Coastguard Worker if (mFrontend_1_1 != nullptr) {
216*ec779b8eSAndroid Build Coastguard Worker status = mFrontend_1_1->tune_1_1(frontendSettings, frontendSettingsExt);
217*ec779b8eSAndroid Build Coastguard Worker } else {
218*ec779b8eSAndroid Build Coastguard Worker status = mFrontend->tune(frontendSettings);
219*ec779b8eSAndroid Build Coastguard Worker }
220*ec779b8eSAndroid Build Coastguard Worker if (status == HidlResult::SUCCESS) {
221*ec779b8eSAndroid Build Coastguard Worker return ::ndk::ScopedAStatus::ok();
222*ec779b8eSAndroid Build Coastguard Worker }
223*ec779b8eSAndroid Build Coastguard Worker
224*ec779b8eSAndroid Build Coastguard Worker return ::ndk::ScopedAStatus::fromServiceSpecificError(static_cast<int32_t>(status));
225*ec779b8eSAndroid Build Coastguard Worker }
226*ec779b8eSAndroid Build Coastguard Worker
stopTune()227*ec779b8eSAndroid Build Coastguard Worker ::ndk::ScopedAStatus TunerHidlFrontend::stopTune() {
228*ec779b8eSAndroid Build Coastguard Worker HidlResult status = mFrontend->stopTune();
229*ec779b8eSAndroid Build Coastguard Worker if (status == HidlResult::SUCCESS) {
230*ec779b8eSAndroid Build Coastguard Worker return ::ndk::ScopedAStatus::ok();
231*ec779b8eSAndroid Build Coastguard Worker }
232*ec779b8eSAndroid Build Coastguard Worker
233*ec779b8eSAndroid Build Coastguard Worker return ::ndk::ScopedAStatus::fromServiceSpecificError(static_cast<int32_t>(status));
234*ec779b8eSAndroid Build Coastguard Worker }
235*ec779b8eSAndroid Build Coastguard Worker
scan(const FrontendSettings & settings,FrontendScanType frontendScanType)236*ec779b8eSAndroid Build Coastguard Worker ::ndk::ScopedAStatus TunerHidlFrontend::scan(const FrontendSettings& settings,
237*ec779b8eSAndroid Build Coastguard Worker FrontendScanType frontendScanType) {
238*ec779b8eSAndroid Build Coastguard Worker HidlResult status;
239*ec779b8eSAndroid Build Coastguard Worker HidlFrontendSettings frontendSettings;
240*ec779b8eSAndroid Build Coastguard Worker HidlFrontendSettingsExt1_1 frontendSettingsExt;
241*ec779b8eSAndroid Build Coastguard Worker getHidlFrontendSettings(settings, frontendSettings, frontendSettingsExt);
242*ec779b8eSAndroid Build Coastguard Worker if (mFrontend_1_1 != nullptr) {
243*ec779b8eSAndroid Build Coastguard Worker status = mFrontend_1_1->scan_1_1(frontendSettings,
244*ec779b8eSAndroid Build Coastguard Worker static_cast<HidlFrontendScanType>(frontendScanType),
245*ec779b8eSAndroid Build Coastguard Worker frontendSettingsExt);
246*ec779b8eSAndroid Build Coastguard Worker } else {
247*ec779b8eSAndroid Build Coastguard Worker status = mFrontend->scan(frontendSettings,
248*ec779b8eSAndroid Build Coastguard Worker static_cast<HidlFrontendScanType>(frontendScanType));
249*ec779b8eSAndroid Build Coastguard Worker }
250*ec779b8eSAndroid Build Coastguard Worker if (status == HidlResult::SUCCESS) {
251*ec779b8eSAndroid Build Coastguard Worker return ::ndk::ScopedAStatus::ok();
252*ec779b8eSAndroid Build Coastguard Worker }
253*ec779b8eSAndroid Build Coastguard Worker
254*ec779b8eSAndroid Build Coastguard Worker return ::ndk::ScopedAStatus::fromServiceSpecificError(static_cast<int32_t>(status));
255*ec779b8eSAndroid Build Coastguard Worker }
256*ec779b8eSAndroid Build Coastguard Worker
stopScan()257*ec779b8eSAndroid Build Coastguard Worker ::ndk::ScopedAStatus TunerHidlFrontend::stopScan() {
258*ec779b8eSAndroid Build Coastguard Worker HidlResult status = mFrontend->stopScan();
259*ec779b8eSAndroid Build Coastguard Worker if (status == HidlResult::SUCCESS) {
260*ec779b8eSAndroid Build Coastguard Worker return ::ndk::ScopedAStatus::ok();
261*ec779b8eSAndroid Build Coastguard Worker }
262*ec779b8eSAndroid Build Coastguard Worker
263*ec779b8eSAndroid Build Coastguard Worker return ::ndk::ScopedAStatus::fromServiceSpecificError(static_cast<int32_t>(status));
264*ec779b8eSAndroid Build Coastguard Worker }
265*ec779b8eSAndroid Build Coastguard Worker
setLnb(const shared_ptr<ITunerLnb> & lnb)266*ec779b8eSAndroid Build Coastguard Worker ::ndk::ScopedAStatus TunerHidlFrontend::setLnb(const shared_ptr<ITunerLnb>& lnb) {
267*ec779b8eSAndroid Build Coastguard Worker if (lnb == nullptr) {
268*ec779b8eSAndroid Build Coastguard Worker return ::ndk::ScopedAStatus::fromServiceSpecificError(
269*ec779b8eSAndroid Build Coastguard Worker static_cast<int32_t>(Result::INVALID_ARGUMENT));
270*ec779b8eSAndroid Build Coastguard Worker }
271*ec779b8eSAndroid Build Coastguard Worker
272*ec779b8eSAndroid Build Coastguard Worker HidlResult status = mFrontend->setLnb(static_cast<TunerHidlLnb*>(lnb.get())->getId());
273*ec779b8eSAndroid Build Coastguard Worker if (status == HidlResult::SUCCESS) {
274*ec779b8eSAndroid Build Coastguard Worker return ::ndk::ScopedAStatus::ok();
275*ec779b8eSAndroid Build Coastguard Worker }
276*ec779b8eSAndroid Build Coastguard Worker
277*ec779b8eSAndroid Build Coastguard Worker return ::ndk::ScopedAStatus::fromServiceSpecificError(static_cast<int32_t>(status));
278*ec779b8eSAndroid Build Coastguard Worker }
279*ec779b8eSAndroid Build Coastguard Worker
linkCiCamToFrontend(int32_t ciCamId,int32_t * _aidl_return)280*ec779b8eSAndroid Build Coastguard Worker ::ndk::ScopedAStatus TunerHidlFrontend::linkCiCamToFrontend(int32_t ciCamId,
281*ec779b8eSAndroid Build Coastguard Worker int32_t* _aidl_return) {
282*ec779b8eSAndroid Build Coastguard Worker if (mFrontend_1_1 == nullptr) {
283*ec779b8eSAndroid Build Coastguard Worker ALOGD("IFrontend_1_1 is not initialized");
284*ec779b8eSAndroid Build Coastguard Worker return ::ndk::ScopedAStatus::fromServiceSpecificError(
285*ec779b8eSAndroid Build Coastguard Worker static_cast<int32_t>(Result::UNAVAILABLE));
286*ec779b8eSAndroid Build Coastguard Worker }
287*ec779b8eSAndroid Build Coastguard Worker
288*ec779b8eSAndroid Build Coastguard Worker int ltsId;
289*ec779b8eSAndroid Build Coastguard Worker HidlResult status;
290*ec779b8eSAndroid Build Coastguard Worker mFrontend_1_1->linkCiCam(static_cast<uint32_t>(ciCamId), [&](HidlResult r, uint32_t id) {
291*ec779b8eSAndroid Build Coastguard Worker status = r;
292*ec779b8eSAndroid Build Coastguard Worker ltsId = id;
293*ec779b8eSAndroid Build Coastguard Worker });
294*ec779b8eSAndroid Build Coastguard Worker
295*ec779b8eSAndroid Build Coastguard Worker if (status == HidlResult::SUCCESS) {
296*ec779b8eSAndroid Build Coastguard Worker *_aidl_return = ltsId;
297*ec779b8eSAndroid Build Coastguard Worker return ::ndk::ScopedAStatus::ok();
298*ec779b8eSAndroid Build Coastguard Worker }
299*ec779b8eSAndroid Build Coastguard Worker
300*ec779b8eSAndroid Build Coastguard Worker return ::ndk::ScopedAStatus::fromServiceSpecificError(static_cast<int32_t>(status));
301*ec779b8eSAndroid Build Coastguard Worker }
302*ec779b8eSAndroid Build Coastguard Worker
unlinkCiCamToFrontend(int32_t ciCamId)303*ec779b8eSAndroid Build Coastguard Worker ::ndk::ScopedAStatus TunerHidlFrontend::unlinkCiCamToFrontend(int32_t ciCamId) {
304*ec779b8eSAndroid Build Coastguard Worker if (mFrontend_1_1 == nullptr) {
305*ec779b8eSAndroid Build Coastguard Worker ALOGD("IFrontend_1_1 is not initialized");
306*ec779b8eSAndroid Build Coastguard Worker return ::ndk::ScopedAStatus::fromServiceSpecificError(
307*ec779b8eSAndroid Build Coastguard Worker static_cast<int32_t>(Result::UNAVAILABLE));
308*ec779b8eSAndroid Build Coastguard Worker }
309*ec779b8eSAndroid Build Coastguard Worker
310*ec779b8eSAndroid Build Coastguard Worker HidlResult status = mFrontend_1_1->unlinkCiCam(ciCamId);
311*ec779b8eSAndroid Build Coastguard Worker if (status == HidlResult::SUCCESS) {
312*ec779b8eSAndroid Build Coastguard Worker return ::ndk::ScopedAStatus::ok();
313*ec779b8eSAndroid Build Coastguard Worker }
314*ec779b8eSAndroid Build Coastguard Worker
315*ec779b8eSAndroid Build Coastguard Worker return ::ndk::ScopedAStatus::fromServiceSpecificError(static_cast<int32_t>(status));
316*ec779b8eSAndroid Build Coastguard Worker }
317*ec779b8eSAndroid Build Coastguard Worker
close()318*ec779b8eSAndroid Build Coastguard Worker ::ndk::ScopedAStatus TunerHidlFrontend::close() {
319*ec779b8eSAndroid Build Coastguard Worker mTunerService->removeFrontend(this->ref<TunerHidlFrontend>());
320*ec779b8eSAndroid Build Coastguard Worker HidlResult status = mFrontend->close();
321*ec779b8eSAndroid Build Coastguard Worker if (status != HidlResult::SUCCESS) {
322*ec779b8eSAndroid Build Coastguard Worker return ::ndk::ScopedAStatus::fromServiceSpecificError(static_cast<int32_t>(status));
323*ec779b8eSAndroid Build Coastguard Worker }
324*ec779b8eSAndroid Build Coastguard Worker
325*ec779b8eSAndroid Build Coastguard Worker return ::ndk::ScopedAStatus::ok();
326*ec779b8eSAndroid Build Coastguard Worker }
327*ec779b8eSAndroid Build Coastguard Worker
getStatus(const vector<FrontendStatusType> & in_statusTypes,vector<FrontendStatus> * _aidl_return)328*ec779b8eSAndroid Build Coastguard Worker ::ndk::ScopedAStatus TunerHidlFrontend::getStatus(const vector<FrontendStatusType>& in_statusTypes,
329*ec779b8eSAndroid Build Coastguard Worker vector<FrontendStatus>* _aidl_return) {
330*ec779b8eSAndroid Build Coastguard Worker HidlResult res;
331*ec779b8eSAndroid Build Coastguard Worker vector<HidlFrontendStatus> status;
332*ec779b8eSAndroid Build Coastguard Worker vector<HidlFrontendStatusExt1_1> statusExt;
333*ec779b8eSAndroid Build Coastguard Worker vector<HidlFrontendStatusType> types;
334*ec779b8eSAndroid Build Coastguard Worker vector<HidlFrontendStatusTypeExt1_1> typesExt;
335*ec779b8eSAndroid Build Coastguard Worker for (auto s : in_statusTypes) {
336*ec779b8eSAndroid Build Coastguard Worker if (static_cast<int32_t>(s) <=
337*ec779b8eSAndroid Build Coastguard Worker static_cast<int32_t>(HidlFrontendStatusType::ATSC3_PLP_INFO)) {
338*ec779b8eSAndroid Build Coastguard Worker types.push_back(static_cast<HidlFrontendStatusType>(s));
339*ec779b8eSAndroid Build Coastguard Worker } else {
340*ec779b8eSAndroid Build Coastguard Worker typesExt.push_back(static_cast<HidlFrontendStatusTypeExt1_1>(s));
341*ec779b8eSAndroid Build Coastguard Worker }
342*ec779b8eSAndroid Build Coastguard Worker }
343*ec779b8eSAndroid Build Coastguard Worker
344*ec779b8eSAndroid Build Coastguard Worker mFrontend->getStatus(types, [&](HidlResult r, const hidl_vec<HidlFrontendStatus>& ss) {
345*ec779b8eSAndroid Build Coastguard Worker res = r;
346*ec779b8eSAndroid Build Coastguard Worker for (auto s : ss) {
347*ec779b8eSAndroid Build Coastguard Worker status.push_back(s);
348*ec779b8eSAndroid Build Coastguard Worker }
349*ec779b8eSAndroid Build Coastguard Worker });
350*ec779b8eSAndroid Build Coastguard Worker if (res != HidlResult::SUCCESS) {
351*ec779b8eSAndroid Build Coastguard Worker return ::ndk::ScopedAStatus::fromServiceSpecificError(static_cast<int32_t>(res));
352*ec779b8eSAndroid Build Coastguard Worker }
353*ec779b8eSAndroid Build Coastguard Worker
354*ec779b8eSAndroid Build Coastguard Worker if (mFrontend_1_1 != nullptr) {
355*ec779b8eSAndroid Build Coastguard Worker mFrontend_1_1->getStatusExt1_1(
356*ec779b8eSAndroid Build Coastguard Worker typesExt, [&](HidlResult r, const hidl_vec<HidlFrontendStatusExt1_1>& ss) {
357*ec779b8eSAndroid Build Coastguard Worker res = r;
358*ec779b8eSAndroid Build Coastguard Worker for (auto s : ss) {
359*ec779b8eSAndroid Build Coastguard Worker statusExt.push_back(s);
360*ec779b8eSAndroid Build Coastguard Worker }
361*ec779b8eSAndroid Build Coastguard Worker });
362*ec779b8eSAndroid Build Coastguard Worker if (res != HidlResult::SUCCESS) {
363*ec779b8eSAndroid Build Coastguard Worker return ::ndk::ScopedAStatus::fromServiceSpecificError(static_cast<int32_t>(res));
364*ec779b8eSAndroid Build Coastguard Worker }
365*ec779b8eSAndroid Build Coastguard Worker }
366*ec779b8eSAndroid Build Coastguard Worker
367*ec779b8eSAndroid Build Coastguard Worker getAidlFrontendStatus(status, statusExt, *_aidl_return);
368*ec779b8eSAndroid Build Coastguard Worker return ::ndk::ScopedAStatus::ok();
369*ec779b8eSAndroid Build Coastguard Worker }
370*ec779b8eSAndroid Build Coastguard Worker
getFrontendId(int32_t * _aidl_return)371*ec779b8eSAndroid Build Coastguard Worker ::ndk::ScopedAStatus TunerHidlFrontend::getFrontendId(int32_t* _aidl_return) {
372*ec779b8eSAndroid Build Coastguard Worker *_aidl_return = mId;
373*ec779b8eSAndroid Build Coastguard Worker return ::ndk::ScopedAStatus::ok();
374*ec779b8eSAndroid Build Coastguard Worker }
375*ec779b8eSAndroid Build Coastguard Worker
getHardwareInfo(std::string * _aidl_return)376*ec779b8eSAndroid Build Coastguard Worker ::ndk::ScopedAStatus TunerHidlFrontend::getHardwareInfo(std::string* _aidl_return) {
377*ec779b8eSAndroid Build Coastguard Worker _aidl_return->clear();
378*ec779b8eSAndroid Build Coastguard Worker return ::ndk::ScopedAStatus::fromServiceSpecificError(
379*ec779b8eSAndroid Build Coastguard Worker static_cast<int32_t>(Result::UNAVAILABLE));
380*ec779b8eSAndroid Build Coastguard Worker }
381*ec779b8eSAndroid Build Coastguard Worker
removeOutputPid(int32_t)382*ec779b8eSAndroid Build Coastguard Worker ::ndk::ScopedAStatus TunerHidlFrontend::removeOutputPid(int32_t /* in_pid */) {
383*ec779b8eSAndroid Build Coastguard Worker return ::ndk::ScopedAStatus::fromServiceSpecificError(
384*ec779b8eSAndroid Build Coastguard Worker static_cast<int32_t>(Result::UNAVAILABLE));
385*ec779b8eSAndroid Build Coastguard Worker }
386*ec779b8eSAndroid Build Coastguard Worker
getFrontendStatusReadiness(const std::vector<FrontendStatusType> &,std::vector<FrontendStatusReadiness> * _aidl_return)387*ec779b8eSAndroid Build Coastguard Worker ::ndk::ScopedAStatus TunerHidlFrontend::getFrontendStatusReadiness(
388*ec779b8eSAndroid Build Coastguard Worker const std::vector<FrontendStatusType>& /* in_statusTypes */,
389*ec779b8eSAndroid Build Coastguard Worker std::vector<FrontendStatusReadiness>* _aidl_return) {
390*ec779b8eSAndroid Build Coastguard Worker _aidl_return->clear();
391*ec779b8eSAndroid Build Coastguard Worker return ::ndk::ScopedAStatus::fromServiceSpecificError(
392*ec779b8eSAndroid Build Coastguard Worker static_cast<int32_t>(Result::UNAVAILABLE));
393*ec779b8eSAndroid Build Coastguard Worker }
394*ec779b8eSAndroid Build Coastguard Worker
setLna(bool bEnable)395*ec779b8eSAndroid Build Coastguard Worker void TunerHidlFrontend::setLna(bool bEnable) {
396*ec779b8eSAndroid Build Coastguard Worker mFrontend->setLna(bEnable);
397*ec779b8eSAndroid Build Coastguard Worker }
398*ec779b8eSAndroid Build Coastguard Worker
399*ec779b8eSAndroid Build Coastguard Worker /////////////// FrontendCallback ///////////////////////
onEvent(HidlFrontendEventType frontendEventType)400*ec779b8eSAndroid Build Coastguard Worker Return<void> TunerHidlFrontend::FrontendCallback::onEvent(HidlFrontendEventType frontendEventType) {
401*ec779b8eSAndroid Build Coastguard Worker ALOGV("FrontendCallback::onEvent, type=%d", frontendEventType);
402*ec779b8eSAndroid Build Coastguard Worker mTunerFrontendCallback->onEvent(static_cast<FrontendEventType>(frontendEventType));
403*ec779b8eSAndroid Build Coastguard Worker return Void();
404*ec779b8eSAndroid Build Coastguard Worker }
405*ec779b8eSAndroid Build Coastguard Worker
onScanMessage(HidlFrontendScanMessageType type,const HidlFrontendScanMessage & message)406*ec779b8eSAndroid Build Coastguard Worker Return<void> TunerHidlFrontend::FrontendCallback::onScanMessage(
407*ec779b8eSAndroid Build Coastguard Worker HidlFrontendScanMessageType type, const HidlFrontendScanMessage& message) {
408*ec779b8eSAndroid Build Coastguard Worker ALOGV("FrontendCallback::onScanMessage, type=%d", type);
409*ec779b8eSAndroid Build Coastguard Worker FrontendScanMessage scanMessage;
410*ec779b8eSAndroid Build Coastguard Worker switch (type) {
411*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendScanMessageType::LOCKED: {
412*ec779b8eSAndroid Build Coastguard Worker scanMessage.set<FrontendScanMessage::isLocked>(message.isLocked());
413*ec779b8eSAndroid Build Coastguard Worker break;
414*ec779b8eSAndroid Build Coastguard Worker }
415*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendScanMessageType::END: {
416*ec779b8eSAndroid Build Coastguard Worker scanMessage.set<FrontendScanMessage::isEnd>(message.isEnd());
417*ec779b8eSAndroid Build Coastguard Worker break;
418*ec779b8eSAndroid Build Coastguard Worker }
419*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendScanMessageType::PROGRESS_PERCENT: {
420*ec779b8eSAndroid Build Coastguard Worker scanMessage.set<FrontendScanMessage::progressPercent>(message.progressPercent());
421*ec779b8eSAndroid Build Coastguard Worker break;
422*ec779b8eSAndroid Build Coastguard Worker }
423*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendScanMessageType::FREQUENCY: {
424*ec779b8eSAndroid Build Coastguard Worker const vector<uint32_t>& f = message.frequencies();
425*ec779b8eSAndroid Build Coastguard Worker vector<int64_t> lf(begin(f), end(f));
426*ec779b8eSAndroid Build Coastguard Worker scanMessage.set<FrontendScanMessage::frequencies>(lf);
427*ec779b8eSAndroid Build Coastguard Worker break;
428*ec779b8eSAndroid Build Coastguard Worker }
429*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendScanMessageType::SYMBOL_RATE: {
430*ec779b8eSAndroid Build Coastguard Worker const vector<uint32_t>& s = message.symbolRates();
431*ec779b8eSAndroid Build Coastguard Worker vector<int32_t> symbolRates(begin(s), end(s));
432*ec779b8eSAndroid Build Coastguard Worker scanMessage.set<FrontendScanMessage::symbolRates>(symbolRates);
433*ec779b8eSAndroid Build Coastguard Worker break;
434*ec779b8eSAndroid Build Coastguard Worker }
435*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendScanMessageType::HIERARCHY: {
436*ec779b8eSAndroid Build Coastguard Worker scanMessage.set<FrontendScanMessage::hierarchy>(
437*ec779b8eSAndroid Build Coastguard Worker static_cast<FrontendDvbtHierarchy>(message.hierarchy()));
438*ec779b8eSAndroid Build Coastguard Worker break;
439*ec779b8eSAndroid Build Coastguard Worker }
440*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendScanMessageType::ANALOG_TYPE: {
441*ec779b8eSAndroid Build Coastguard Worker scanMessage.set<FrontendScanMessage::analogType>(
442*ec779b8eSAndroid Build Coastguard Worker static_cast<FrontendAnalogType>(message.analogType()));
443*ec779b8eSAndroid Build Coastguard Worker break;
444*ec779b8eSAndroid Build Coastguard Worker }
445*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendScanMessageType::PLP_IDS: {
446*ec779b8eSAndroid Build Coastguard Worker const vector<uint8_t>& p = message.plpIds();
447*ec779b8eSAndroid Build Coastguard Worker vector<int32_t> plpIds(begin(p), end(p));
448*ec779b8eSAndroid Build Coastguard Worker scanMessage.set<FrontendScanMessage::plpIds>(plpIds);
449*ec779b8eSAndroid Build Coastguard Worker break;
450*ec779b8eSAndroid Build Coastguard Worker }
451*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendScanMessageType::GROUP_IDS: {
452*ec779b8eSAndroid Build Coastguard Worker const vector<uint8_t>& g = message.groupIds();
453*ec779b8eSAndroid Build Coastguard Worker vector<int32_t> groupIds(begin(g), end(g));
454*ec779b8eSAndroid Build Coastguard Worker scanMessage.set<FrontendScanMessage::groupIds>(groupIds);
455*ec779b8eSAndroid Build Coastguard Worker break;
456*ec779b8eSAndroid Build Coastguard Worker }
457*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendScanMessageType::INPUT_STREAM_IDS: {
458*ec779b8eSAndroid Build Coastguard Worker const vector<uint16_t>& i = message.inputStreamIds();
459*ec779b8eSAndroid Build Coastguard Worker vector<int32_t> streamIds(begin(i), end(i));
460*ec779b8eSAndroid Build Coastguard Worker scanMessage.set<FrontendScanMessage::inputStreamIds>(streamIds);
461*ec779b8eSAndroid Build Coastguard Worker break;
462*ec779b8eSAndroid Build Coastguard Worker }
463*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendScanMessageType::STANDARD: {
464*ec779b8eSAndroid Build Coastguard Worker const HidlFrontendScanMessage::Standard& std = message.std();
465*ec779b8eSAndroid Build Coastguard Worker FrontendScanMessageStandard standard;
466*ec779b8eSAndroid Build Coastguard Worker if (std.getDiscriminator() == HidlFrontendScanMessage::Standard::hidl_discriminator::sStd) {
467*ec779b8eSAndroid Build Coastguard Worker standard.set<FrontendScanMessageStandard::sStd>(
468*ec779b8eSAndroid Build Coastguard Worker static_cast<FrontendDvbsStandard>(std.sStd()));
469*ec779b8eSAndroid Build Coastguard Worker } else if (std.getDiscriminator() ==
470*ec779b8eSAndroid Build Coastguard Worker HidlFrontendScanMessage::Standard::hidl_discriminator::tStd) {
471*ec779b8eSAndroid Build Coastguard Worker standard.set<FrontendScanMessageStandard::tStd>(
472*ec779b8eSAndroid Build Coastguard Worker static_cast<FrontendDvbtStandard>(std.tStd()));
473*ec779b8eSAndroid Build Coastguard Worker } else if (std.getDiscriminator() ==
474*ec779b8eSAndroid Build Coastguard Worker HidlFrontendScanMessage::Standard::hidl_discriminator::sifStd) {
475*ec779b8eSAndroid Build Coastguard Worker standard.set<FrontendScanMessageStandard::sifStd>(
476*ec779b8eSAndroid Build Coastguard Worker static_cast<FrontendAnalogSifStandard>(std.sifStd()));
477*ec779b8eSAndroid Build Coastguard Worker }
478*ec779b8eSAndroid Build Coastguard Worker scanMessage.set<FrontendScanMessage::std>(standard);
479*ec779b8eSAndroid Build Coastguard Worker break;
480*ec779b8eSAndroid Build Coastguard Worker }
481*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendScanMessageType::ATSC3_PLP_INFO: {
482*ec779b8eSAndroid Build Coastguard Worker const vector<HidlFrontendScanAtsc3PlpInfo>& plpInfos = message.atsc3PlpInfos();
483*ec779b8eSAndroid Build Coastguard Worker vector<FrontendScanAtsc3PlpInfo> tunerPlpInfos;
484*ec779b8eSAndroid Build Coastguard Worker for (int i = 0; i < plpInfos.size(); i++) {
485*ec779b8eSAndroid Build Coastguard Worker FrontendScanAtsc3PlpInfo plpInfo{
486*ec779b8eSAndroid Build Coastguard Worker .plpId = static_cast<int32_t>(plpInfos[i].plpId),
487*ec779b8eSAndroid Build Coastguard Worker .bLlsFlag = plpInfos[i].bLlsFlag,
488*ec779b8eSAndroid Build Coastguard Worker };
489*ec779b8eSAndroid Build Coastguard Worker tunerPlpInfos.push_back(plpInfo);
490*ec779b8eSAndroid Build Coastguard Worker }
491*ec779b8eSAndroid Build Coastguard Worker scanMessage.set<FrontendScanMessage::atsc3PlpInfos>(tunerPlpInfos);
492*ec779b8eSAndroid Build Coastguard Worker break;
493*ec779b8eSAndroid Build Coastguard Worker }
494*ec779b8eSAndroid Build Coastguard Worker default:
495*ec779b8eSAndroid Build Coastguard Worker break;
496*ec779b8eSAndroid Build Coastguard Worker }
497*ec779b8eSAndroid Build Coastguard Worker mTunerFrontendCallback->onScanMessage(static_cast<FrontendScanMessageType>(type), scanMessage);
498*ec779b8eSAndroid Build Coastguard Worker return Void();
499*ec779b8eSAndroid Build Coastguard Worker }
500*ec779b8eSAndroid Build Coastguard Worker
onScanMessageExt1_1(HidlFrontendScanMessageTypeExt1_1 type,const HidlFrontendScanMessageExt1_1 & message)501*ec779b8eSAndroid Build Coastguard Worker Return<void> TunerHidlFrontend::FrontendCallback::onScanMessageExt1_1(
502*ec779b8eSAndroid Build Coastguard Worker HidlFrontendScanMessageTypeExt1_1 type, const HidlFrontendScanMessageExt1_1& message) {
503*ec779b8eSAndroid Build Coastguard Worker ALOGV("onScanMessageExt1_1::onScanMessage, type=%d", type);
504*ec779b8eSAndroid Build Coastguard Worker FrontendScanMessage scanMessage;
505*ec779b8eSAndroid Build Coastguard Worker switch (type) {
506*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendScanMessageTypeExt1_1::MODULATION: {
507*ec779b8eSAndroid Build Coastguard Worker HidlFrontendModulation m = message.modulation();
508*ec779b8eSAndroid Build Coastguard Worker FrontendModulation modulation;
509*ec779b8eSAndroid Build Coastguard Worker switch (m.getDiscriminator()) {
510*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendModulation::hidl_discriminator::dvbc: {
511*ec779b8eSAndroid Build Coastguard Worker modulation.set<FrontendModulation::dvbc>(static_cast<FrontendDvbcModulation>(m.dvbc()));
512*ec779b8eSAndroid Build Coastguard Worker break;
513*ec779b8eSAndroid Build Coastguard Worker }
514*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendModulation::hidl_discriminator::dvbt: {
515*ec779b8eSAndroid Build Coastguard Worker modulation.set<FrontendModulation::dvbt>(
516*ec779b8eSAndroid Build Coastguard Worker static_cast<FrontendDvbtConstellation>(m.dvbt()));
517*ec779b8eSAndroid Build Coastguard Worker break;
518*ec779b8eSAndroid Build Coastguard Worker }
519*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendModulation::hidl_discriminator::dvbs: {
520*ec779b8eSAndroid Build Coastguard Worker modulation.set<FrontendModulation::dvbs>(static_cast<FrontendDvbsModulation>(m.dvbs()));
521*ec779b8eSAndroid Build Coastguard Worker break;
522*ec779b8eSAndroid Build Coastguard Worker }
523*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendModulation::hidl_discriminator::isdbs: {
524*ec779b8eSAndroid Build Coastguard Worker modulation.set<FrontendModulation::isdbs>(
525*ec779b8eSAndroid Build Coastguard Worker static_cast<FrontendIsdbsModulation>(m.isdbs()));
526*ec779b8eSAndroid Build Coastguard Worker break;
527*ec779b8eSAndroid Build Coastguard Worker }
528*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendModulation::hidl_discriminator::isdbs3: {
529*ec779b8eSAndroid Build Coastguard Worker modulation.set<FrontendModulation::isdbs3>(
530*ec779b8eSAndroid Build Coastguard Worker static_cast<FrontendIsdbs3Modulation>(m.isdbs3()));
531*ec779b8eSAndroid Build Coastguard Worker break;
532*ec779b8eSAndroid Build Coastguard Worker }
533*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendModulation::hidl_discriminator::isdbt: {
534*ec779b8eSAndroid Build Coastguard Worker modulation.set<FrontendModulation::isdbt>(
535*ec779b8eSAndroid Build Coastguard Worker static_cast<FrontendIsdbtModulation>(m.isdbt()));
536*ec779b8eSAndroid Build Coastguard Worker break;
537*ec779b8eSAndroid Build Coastguard Worker }
538*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendModulation::hidl_discriminator::atsc: {
539*ec779b8eSAndroid Build Coastguard Worker modulation.set<FrontendModulation::atsc>(static_cast<FrontendAtscModulation>(m.atsc()));
540*ec779b8eSAndroid Build Coastguard Worker break;
541*ec779b8eSAndroid Build Coastguard Worker }
542*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendModulation::hidl_discriminator::atsc3: {
543*ec779b8eSAndroid Build Coastguard Worker modulation.set<FrontendModulation::atsc3>(
544*ec779b8eSAndroid Build Coastguard Worker static_cast<FrontendAtsc3Modulation>(m.atsc3()));
545*ec779b8eSAndroid Build Coastguard Worker break;
546*ec779b8eSAndroid Build Coastguard Worker }
547*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendModulation::hidl_discriminator::dtmb: {
548*ec779b8eSAndroid Build Coastguard Worker modulation.set<FrontendModulation::dtmb>(static_cast<FrontendDtmbModulation>(m.dtmb()));
549*ec779b8eSAndroid Build Coastguard Worker break;
550*ec779b8eSAndroid Build Coastguard Worker }
551*ec779b8eSAndroid Build Coastguard Worker }
552*ec779b8eSAndroid Build Coastguard Worker scanMessage.set<FrontendScanMessage::modulation>(modulation);
553*ec779b8eSAndroid Build Coastguard Worker break;
554*ec779b8eSAndroid Build Coastguard Worker }
555*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendScanMessageTypeExt1_1::DVBC_ANNEX: {
556*ec779b8eSAndroid Build Coastguard Worker scanMessage.set<FrontendScanMessage::annex>(
557*ec779b8eSAndroid Build Coastguard Worker static_cast<FrontendDvbcAnnex>(message.annex()));
558*ec779b8eSAndroid Build Coastguard Worker break;
559*ec779b8eSAndroid Build Coastguard Worker }
560*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendScanMessageTypeExt1_1::HIGH_PRIORITY: {
561*ec779b8eSAndroid Build Coastguard Worker scanMessage.set<FrontendScanMessage::isHighPriority>(message.isHighPriority());
562*ec779b8eSAndroid Build Coastguard Worker break;
563*ec779b8eSAndroid Build Coastguard Worker }
564*ec779b8eSAndroid Build Coastguard Worker default: {
565*ec779b8eSAndroid Build Coastguard Worker break;
566*ec779b8eSAndroid Build Coastguard Worker }
567*ec779b8eSAndroid Build Coastguard Worker }
568*ec779b8eSAndroid Build Coastguard Worker mTunerFrontendCallback->onScanMessage(static_cast<FrontendScanMessageType>(type), scanMessage);
569*ec779b8eSAndroid Build Coastguard Worker return Void();
570*ec779b8eSAndroid Build Coastguard Worker }
571*ec779b8eSAndroid Build Coastguard Worker
572*ec779b8eSAndroid Build Coastguard Worker /////////////// TunerHidlFrontend Helper Methods ///////////////////////
getAidlFrontendStatus(const vector<HidlFrontendStatus> & hidlStatus,const vector<HidlFrontendStatusExt1_1> & hidlStatusExt,vector<FrontendStatus> & aidlStatus)573*ec779b8eSAndroid Build Coastguard Worker void TunerHidlFrontend::getAidlFrontendStatus(const vector<HidlFrontendStatus>& hidlStatus,
574*ec779b8eSAndroid Build Coastguard Worker const vector<HidlFrontendStatusExt1_1>& hidlStatusExt,
575*ec779b8eSAndroid Build Coastguard Worker vector<FrontendStatus>& aidlStatus) {
576*ec779b8eSAndroid Build Coastguard Worker for (HidlFrontendStatus s : hidlStatus) {
577*ec779b8eSAndroid Build Coastguard Worker FrontendStatus status;
578*ec779b8eSAndroid Build Coastguard Worker switch (s.getDiscriminator()) {
579*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendStatus::hidl_discriminator::isDemodLocked: {
580*ec779b8eSAndroid Build Coastguard Worker status.set<FrontendStatus::isDemodLocked>(s.isDemodLocked());
581*ec779b8eSAndroid Build Coastguard Worker aidlStatus.push_back(status);
582*ec779b8eSAndroid Build Coastguard Worker break;
583*ec779b8eSAndroid Build Coastguard Worker }
584*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendStatus::hidl_discriminator::snr: {
585*ec779b8eSAndroid Build Coastguard Worker status.set<FrontendStatus::snr>((int)s.snr());
586*ec779b8eSAndroid Build Coastguard Worker aidlStatus.push_back(status);
587*ec779b8eSAndroid Build Coastguard Worker break;
588*ec779b8eSAndroid Build Coastguard Worker }
589*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendStatus::hidl_discriminator::ber: {
590*ec779b8eSAndroid Build Coastguard Worker status.set<FrontendStatus::ber>((int)s.ber());
591*ec779b8eSAndroid Build Coastguard Worker aidlStatus.push_back(status);
592*ec779b8eSAndroid Build Coastguard Worker break;
593*ec779b8eSAndroid Build Coastguard Worker }
594*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendStatus::hidl_discriminator::per: {
595*ec779b8eSAndroid Build Coastguard Worker status.set<FrontendStatus::per>((int)s.per());
596*ec779b8eSAndroid Build Coastguard Worker aidlStatus.push_back(status);
597*ec779b8eSAndroid Build Coastguard Worker break;
598*ec779b8eSAndroid Build Coastguard Worker }
599*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendStatus::hidl_discriminator::preBer: {
600*ec779b8eSAndroid Build Coastguard Worker status.set<FrontendStatus::preBer>((int)s.preBer());
601*ec779b8eSAndroid Build Coastguard Worker aidlStatus.push_back(status);
602*ec779b8eSAndroid Build Coastguard Worker break;
603*ec779b8eSAndroid Build Coastguard Worker }
604*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendStatus::hidl_discriminator::signalQuality: {
605*ec779b8eSAndroid Build Coastguard Worker status.set<FrontendStatus::signalQuality>((int)s.signalQuality());
606*ec779b8eSAndroid Build Coastguard Worker aidlStatus.push_back(status);
607*ec779b8eSAndroid Build Coastguard Worker break;
608*ec779b8eSAndroid Build Coastguard Worker }
609*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendStatus::hidl_discriminator::signalStrength: {
610*ec779b8eSAndroid Build Coastguard Worker status.set<FrontendStatus::signalStrength>((int)s.signalStrength());
611*ec779b8eSAndroid Build Coastguard Worker aidlStatus.push_back(status);
612*ec779b8eSAndroid Build Coastguard Worker break;
613*ec779b8eSAndroid Build Coastguard Worker }
614*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendStatus::hidl_discriminator::symbolRate: {
615*ec779b8eSAndroid Build Coastguard Worker status.set<FrontendStatus::symbolRate>((int)s.symbolRate());
616*ec779b8eSAndroid Build Coastguard Worker aidlStatus.push_back(status);
617*ec779b8eSAndroid Build Coastguard Worker break;
618*ec779b8eSAndroid Build Coastguard Worker }
619*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendStatus::hidl_discriminator::innerFec: {
620*ec779b8eSAndroid Build Coastguard Worker status.set<FrontendStatus::innerFec>(static_cast<FrontendInnerFec>(s.innerFec()));
621*ec779b8eSAndroid Build Coastguard Worker aidlStatus.push_back(status);
622*ec779b8eSAndroid Build Coastguard Worker break;
623*ec779b8eSAndroid Build Coastguard Worker }
624*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendStatus::hidl_discriminator::modulation: {
625*ec779b8eSAndroid Build Coastguard Worker FrontendModulationStatus modulationStatus;
626*ec779b8eSAndroid Build Coastguard Worker switch (s.modulation().getDiscriminator()) {
627*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendModulationStatus::hidl_discriminator::dvbc:
628*ec779b8eSAndroid Build Coastguard Worker modulationStatus.set<FrontendModulationStatus::dvbc>(
629*ec779b8eSAndroid Build Coastguard Worker static_cast<FrontendDvbcModulation>(s.modulation().dvbc()));
630*ec779b8eSAndroid Build Coastguard Worker break;
631*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendModulationStatus::hidl_discriminator::dvbs:
632*ec779b8eSAndroid Build Coastguard Worker modulationStatus.set<FrontendModulationStatus::dvbs>(
633*ec779b8eSAndroid Build Coastguard Worker static_cast<FrontendDvbsModulation>(s.modulation().dvbs()));
634*ec779b8eSAndroid Build Coastguard Worker break;
635*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendModulationStatus::hidl_discriminator::isdbs:
636*ec779b8eSAndroid Build Coastguard Worker modulationStatus.set<FrontendModulationStatus::isdbs>(
637*ec779b8eSAndroid Build Coastguard Worker static_cast<FrontendIsdbsModulation>(s.modulation().isdbs()));
638*ec779b8eSAndroid Build Coastguard Worker break;
639*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendModulationStatus::hidl_discriminator::isdbs3:
640*ec779b8eSAndroid Build Coastguard Worker modulationStatus.set<FrontendModulationStatus::isdbs3>(
641*ec779b8eSAndroid Build Coastguard Worker static_cast<FrontendIsdbs3Modulation>(s.modulation().isdbs3()));
642*ec779b8eSAndroid Build Coastguard Worker break;
643*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendModulationStatus::hidl_discriminator::isdbt:
644*ec779b8eSAndroid Build Coastguard Worker modulationStatus.set<FrontendModulationStatus::isdbt>(
645*ec779b8eSAndroid Build Coastguard Worker static_cast<FrontendIsdbtModulation>(s.modulation().isdbt()));
646*ec779b8eSAndroid Build Coastguard Worker break;
647*ec779b8eSAndroid Build Coastguard Worker }
648*ec779b8eSAndroid Build Coastguard Worker status.set<FrontendStatus::modulationStatus>(modulationStatus);
649*ec779b8eSAndroid Build Coastguard Worker aidlStatus.push_back(status);
650*ec779b8eSAndroid Build Coastguard Worker break;
651*ec779b8eSAndroid Build Coastguard Worker }
652*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendStatus::hidl_discriminator::inversion: {
653*ec779b8eSAndroid Build Coastguard Worker status.set<FrontendStatus::inversion>(
654*ec779b8eSAndroid Build Coastguard Worker static_cast<FrontendSpectralInversion>(s.inversion()));
655*ec779b8eSAndroid Build Coastguard Worker aidlStatus.push_back(status);
656*ec779b8eSAndroid Build Coastguard Worker break;
657*ec779b8eSAndroid Build Coastguard Worker }
658*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendStatus::hidl_discriminator::lnbVoltage: {
659*ec779b8eSAndroid Build Coastguard Worker status.set<FrontendStatus::lnbVoltage>(static_cast<LnbVoltage>(s.lnbVoltage()));
660*ec779b8eSAndroid Build Coastguard Worker aidlStatus.push_back(status);
661*ec779b8eSAndroid Build Coastguard Worker break;
662*ec779b8eSAndroid Build Coastguard Worker }
663*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendStatus::hidl_discriminator::plpId: {
664*ec779b8eSAndroid Build Coastguard Worker status.set<FrontendStatus::plpId>((int32_t)s.plpId());
665*ec779b8eSAndroid Build Coastguard Worker aidlStatus.push_back(status);
666*ec779b8eSAndroid Build Coastguard Worker break;
667*ec779b8eSAndroid Build Coastguard Worker }
668*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendStatus::hidl_discriminator::isEWBS: {
669*ec779b8eSAndroid Build Coastguard Worker status.set<FrontendStatus::isEWBS>(s.isEWBS());
670*ec779b8eSAndroid Build Coastguard Worker aidlStatus.push_back(status);
671*ec779b8eSAndroid Build Coastguard Worker break;
672*ec779b8eSAndroid Build Coastguard Worker }
673*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendStatus::hidl_discriminator::agc: {
674*ec779b8eSAndroid Build Coastguard Worker status.set<FrontendStatus::agc>((int32_t)s.agc());
675*ec779b8eSAndroid Build Coastguard Worker aidlStatus.push_back(status);
676*ec779b8eSAndroid Build Coastguard Worker break;
677*ec779b8eSAndroid Build Coastguard Worker }
678*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendStatus::hidl_discriminator::isLnaOn: {
679*ec779b8eSAndroid Build Coastguard Worker status.set<FrontendStatus::isLnaOn>(s.isLnaOn());
680*ec779b8eSAndroid Build Coastguard Worker aidlStatus.push_back(status);
681*ec779b8eSAndroid Build Coastguard Worker break;
682*ec779b8eSAndroid Build Coastguard Worker }
683*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendStatus::hidl_discriminator::isLayerError: {
684*ec779b8eSAndroid Build Coastguard Worker vector<bool> e(s.isLayerError().begin(), s.isLayerError().end());
685*ec779b8eSAndroid Build Coastguard Worker status.set<FrontendStatus::isLayerError>(e);
686*ec779b8eSAndroid Build Coastguard Worker aidlStatus.push_back(status);
687*ec779b8eSAndroid Build Coastguard Worker break;
688*ec779b8eSAndroid Build Coastguard Worker }
689*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendStatus::hidl_discriminator::mer: {
690*ec779b8eSAndroid Build Coastguard Worker status.set<FrontendStatus::mer>(static_cast<int32_t>(s.mer()));
691*ec779b8eSAndroid Build Coastguard Worker aidlStatus.push_back(status);
692*ec779b8eSAndroid Build Coastguard Worker break;
693*ec779b8eSAndroid Build Coastguard Worker }
694*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendStatus::hidl_discriminator::freqOffset: {
695*ec779b8eSAndroid Build Coastguard Worker status.set<FrontendStatus::freqOffset>(static_cast<int64_t>(s.freqOffset()));
696*ec779b8eSAndroid Build Coastguard Worker aidlStatus.push_back(status);
697*ec779b8eSAndroid Build Coastguard Worker break;
698*ec779b8eSAndroid Build Coastguard Worker }
699*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendStatus::hidl_discriminator::hierarchy: {
700*ec779b8eSAndroid Build Coastguard Worker status.set<FrontendStatus::hierarchy>(
701*ec779b8eSAndroid Build Coastguard Worker static_cast<FrontendDvbtHierarchy>(s.hierarchy()));
702*ec779b8eSAndroid Build Coastguard Worker aidlStatus.push_back(status);
703*ec779b8eSAndroid Build Coastguard Worker break;
704*ec779b8eSAndroid Build Coastguard Worker }
705*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendStatus::hidl_discriminator::isRfLocked: {
706*ec779b8eSAndroid Build Coastguard Worker status.set<FrontendStatus::isRfLocked>(s.isRfLocked());
707*ec779b8eSAndroid Build Coastguard Worker aidlStatus.push_back(status);
708*ec779b8eSAndroid Build Coastguard Worker break;
709*ec779b8eSAndroid Build Coastguard Worker }
710*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendStatus::hidl_discriminator::plpInfo: {
711*ec779b8eSAndroid Build Coastguard Worker vector<FrontendStatusAtsc3PlpInfo> info;
712*ec779b8eSAndroid Build Coastguard Worker for (auto i : s.plpInfo()) {
713*ec779b8eSAndroid Build Coastguard Worker info.push_back({
714*ec779b8eSAndroid Build Coastguard Worker .plpId = static_cast<int32_t>(i.plpId),
715*ec779b8eSAndroid Build Coastguard Worker .isLocked = i.isLocked,
716*ec779b8eSAndroid Build Coastguard Worker .uec = static_cast<int32_t>(i.uec),
717*ec779b8eSAndroid Build Coastguard Worker });
718*ec779b8eSAndroid Build Coastguard Worker }
719*ec779b8eSAndroid Build Coastguard Worker status.set<FrontendStatus::plpInfo>(info);
720*ec779b8eSAndroid Build Coastguard Worker aidlStatus.push_back(status);
721*ec779b8eSAndroid Build Coastguard Worker break;
722*ec779b8eSAndroid Build Coastguard Worker }
723*ec779b8eSAndroid Build Coastguard Worker }
724*ec779b8eSAndroid Build Coastguard Worker }
725*ec779b8eSAndroid Build Coastguard Worker
726*ec779b8eSAndroid Build Coastguard Worker for (HidlFrontendStatusExt1_1 s : hidlStatusExt) {
727*ec779b8eSAndroid Build Coastguard Worker FrontendStatus status;
728*ec779b8eSAndroid Build Coastguard Worker switch (s.getDiscriminator()) {
729*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendStatusExt1_1::hidl_discriminator::modulations: {
730*ec779b8eSAndroid Build Coastguard Worker vector<FrontendModulation> aidlMod;
731*ec779b8eSAndroid Build Coastguard Worker for (auto m : s.modulations()) {
732*ec779b8eSAndroid Build Coastguard Worker switch (m.getDiscriminator()) {
733*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendModulation::hidl_discriminator::dvbc:
734*ec779b8eSAndroid Build Coastguard Worker aidlMod.push_back(static_cast<FrontendDvbcModulation>(m.dvbc()));
735*ec779b8eSAndroid Build Coastguard Worker break;
736*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendModulation::hidl_discriminator::dvbs:
737*ec779b8eSAndroid Build Coastguard Worker aidlMod.push_back(static_cast<FrontendDvbsModulation>(m.dvbs()));
738*ec779b8eSAndroid Build Coastguard Worker break;
739*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendModulation::hidl_discriminator::dvbt:
740*ec779b8eSAndroid Build Coastguard Worker aidlMod.push_back(static_cast<FrontendDvbtConstellation>(m.dvbt()));
741*ec779b8eSAndroid Build Coastguard Worker break;
742*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendModulation::hidl_discriminator::isdbs:
743*ec779b8eSAndroid Build Coastguard Worker aidlMod.push_back(static_cast<FrontendIsdbsModulation>(m.isdbs()));
744*ec779b8eSAndroid Build Coastguard Worker break;
745*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendModulation::hidl_discriminator::isdbs3:
746*ec779b8eSAndroid Build Coastguard Worker aidlMod.push_back(static_cast<FrontendIsdbs3Modulation>(m.isdbs3()));
747*ec779b8eSAndroid Build Coastguard Worker break;
748*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendModulation::hidl_discriminator::isdbt:
749*ec779b8eSAndroid Build Coastguard Worker aidlMod.push_back(static_cast<FrontendIsdbtModulation>(m.isdbt()));
750*ec779b8eSAndroid Build Coastguard Worker break;
751*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendModulation::hidl_discriminator::atsc:
752*ec779b8eSAndroid Build Coastguard Worker aidlMod.push_back(static_cast<FrontendAtscModulation>(m.atsc()));
753*ec779b8eSAndroid Build Coastguard Worker break;
754*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendModulation::hidl_discriminator::atsc3:
755*ec779b8eSAndroid Build Coastguard Worker aidlMod.push_back(static_cast<FrontendAtsc3Modulation>(m.atsc3()));
756*ec779b8eSAndroid Build Coastguard Worker break;
757*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendModulation::hidl_discriminator::dtmb:
758*ec779b8eSAndroid Build Coastguard Worker aidlMod.push_back(static_cast<FrontendDtmbModulation>(m.dtmb()));
759*ec779b8eSAndroid Build Coastguard Worker break;
760*ec779b8eSAndroid Build Coastguard Worker }
761*ec779b8eSAndroid Build Coastguard Worker }
762*ec779b8eSAndroid Build Coastguard Worker status.set<FrontendStatus::modulations>(aidlMod);
763*ec779b8eSAndroid Build Coastguard Worker aidlStatus.push_back(status);
764*ec779b8eSAndroid Build Coastguard Worker break;
765*ec779b8eSAndroid Build Coastguard Worker }
766*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendStatusExt1_1::hidl_discriminator::bers: {
767*ec779b8eSAndroid Build Coastguard Worker vector<int> b(s.bers().begin(), s.bers().end());
768*ec779b8eSAndroid Build Coastguard Worker status.set<FrontendStatus::bers>(b);
769*ec779b8eSAndroid Build Coastguard Worker aidlStatus.push_back(status);
770*ec779b8eSAndroid Build Coastguard Worker break;
771*ec779b8eSAndroid Build Coastguard Worker }
772*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendStatusExt1_1::hidl_discriminator::codeRates: {
773*ec779b8eSAndroid Build Coastguard Worker vector<FrontendInnerFec> codeRates;
774*ec779b8eSAndroid Build Coastguard Worker for (auto c : s.codeRates()) {
775*ec779b8eSAndroid Build Coastguard Worker codeRates.push_back(static_cast<FrontendInnerFec>(c));
776*ec779b8eSAndroid Build Coastguard Worker }
777*ec779b8eSAndroid Build Coastguard Worker status.set<FrontendStatus::codeRates>(codeRates);
778*ec779b8eSAndroid Build Coastguard Worker aidlStatus.push_back(status);
779*ec779b8eSAndroid Build Coastguard Worker break;
780*ec779b8eSAndroid Build Coastguard Worker }
781*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendStatusExt1_1::hidl_discriminator::bandwidth: {
782*ec779b8eSAndroid Build Coastguard Worker FrontendBandwidth bandwidth;
783*ec779b8eSAndroid Build Coastguard Worker switch (s.bandwidth().getDiscriminator()) {
784*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendBandwidth::hidl_discriminator::atsc3:
785*ec779b8eSAndroid Build Coastguard Worker bandwidth.set<FrontendBandwidth::atsc3>(
786*ec779b8eSAndroid Build Coastguard Worker static_cast<FrontendAtsc3Bandwidth>(s.bandwidth().atsc3()));
787*ec779b8eSAndroid Build Coastguard Worker break;
788*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendBandwidth::hidl_discriminator::dvbc:
789*ec779b8eSAndroid Build Coastguard Worker bandwidth.set<FrontendBandwidth::dvbc>(
790*ec779b8eSAndroid Build Coastguard Worker static_cast<FrontendDvbcBandwidth>(s.bandwidth().dvbc()));
791*ec779b8eSAndroid Build Coastguard Worker break;
792*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendBandwidth::hidl_discriminator::dvbt:
793*ec779b8eSAndroid Build Coastguard Worker bandwidth.set<FrontendBandwidth::dvbt>(
794*ec779b8eSAndroid Build Coastguard Worker static_cast<FrontendDvbtBandwidth>(s.bandwidth().dvbt()));
795*ec779b8eSAndroid Build Coastguard Worker break;
796*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendBandwidth::hidl_discriminator::isdbt:
797*ec779b8eSAndroid Build Coastguard Worker bandwidth.set<FrontendBandwidth::isdbt>(
798*ec779b8eSAndroid Build Coastguard Worker static_cast<FrontendIsdbtBandwidth>(s.bandwidth().isdbt()));
799*ec779b8eSAndroid Build Coastguard Worker break;
800*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendBandwidth::hidl_discriminator::dtmb:
801*ec779b8eSAndroid Build Coastguard Worker bandwidth.set<FrontendBandwidth::dtmb>(
802*ec779b8eSAndroid Build Coastguard Worker static_cast<FrontendDtmbBandwidth>(s.bandwidth().dtmb()));
803*ec779b8eSAndroid Build Coastguard Worker break;
804*ec779b8eSAndroid Build Coastguard Worker }
805*ec779b8eSAndroid Build Coastguard Worker status.set<FrontendStatus::bandwidth>(bandwidth);
806*ec779b8eSAndroid Build Coastguard Worker aidlStatus.push_back(status);
807*ec779b8eSAndroid Build Coastguard Worker break;
808*ec779b8eSAndroid Build Coastguard Worker }
809*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendStatusExt1_1::hidl_discriminator::interval: {
810*ec779b8eSAndroid Build Coastguard Worker FrontendGuardInterval interval;
811*ec779b8eSAndroid Build Coastguard Worker switch (s.interval().getDiscriminator()) {
812*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendGuardInterval::hidl_discriminator::dvbt:
813*ec779b8eSAndroid Build Coastguard Worker interval.set<FrontendGuardInterval::dvbt>(
814*ec779b8eSAndroid Build Coastguard Worker static_cast<FrontendDvbtGuardInterval>(s.interval().dvbt()));
815*ec779b8eSAndroid Build Coastguard Worker break;
816*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendGuardInterval::hidl_discriminator::isdbt:
817*ec779b8eSAndroid Build Coastguard Worker interval.set<FrontendGuardInterval::isdbt>(
818*ec779b8eSAndroid Build Coastguard Worker static_cast<FrontendIsdbtGuardInterval>(s.interval().isdbt()));
819*ec779b8eSAndroid Build Coastguard Worker break;
820*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendGuardInterval::hidl_discriminator::dtmb:
821*ec779b8eSAndroid Build Coastguard Worker interval.set<FrontendGuardInterval::dtmb>(
822*ec779b8eSAndroid Build Coastguard Worker static_cast<FrontendDtmbGuardInterval>(s.interval().dtmb()));
823*ec779b8eSAndroid Build Coastguard Worker break;
824*ec779b8eSAndroid Build Coastguard Worker }
825*ec779b8eSAndroid Build Coastguard Worker status.set<FrontendStatus::interval>(interval);
826*ec779b8eSAndroid Build Coastguard Worker aidlStatus.push_back(status);
827*ec779b8eSAndroid Build Coastguard Worker break;
828*ec779b8eSAndroid Build Coastguard Worker }
829*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendStatusExt1_1::hidl_discriminator::transmissionMode: {
830*ec779b8eSAndroid Build Coastguard Worker FrontendTransmissionMode transmissionMode;
831*ec779b8eSAndroid Build Coastguard Worker switch (s.transmissionMode().getDiscriminator()) {
832*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendTransmissionMode::hidl_discriminator::dvbt:
833*ec779b8eSAndroid Build Coastguard Worker transmissionMode.set<FrontendTransmissionMode::dvbt>(
834*ec779b8eSAndroid Build Coastguard Worker static_cast<FrontendDvbtTransmissionMode>(s.transmissionMode().dvbt()));
835*ec779b8eSAndroid Build Coastguard Worker break;
836*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendTransmissionMode::hidl_discriminator::isdbt:
837*ec779b8eSAndroid Build Coastguard Worker transmissionMode.set<FrontendTransmissionMode::isdbt>(
838*ec779b8eSAndroid Build Coastguard Worker static_cast<FrontendIsdbtMode>(s.transmissionMode().isdbt()));
839*ec779b8eSAndroid Build Coastguard Worker break;
840*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendTransmissionMode::hidl_discriminator::dtmb:
841*ec779b8eSAndroid Build Coastguard Worker transmissionMode.set<FrontendTransmissionMode::dtmb>(
842*ec779b8eSAndroid Build Coastguard Worker static_cast<FrontendDtmbTransmissionMode>(s.transmissionMode().dtmb()));
843*ec779b8eSAndroid Build Coastguard Worker break;
844*ec779b8eSAndroid Build Coastguard Worker }
845*ec779b8eSAndroid Build Coastguard Worker status.set<FrontendStatus::transmissionMode>(transmissionMode);
846*ec779b8eSAndroid Build Coastguard Worker aidlStatus.push_back(status);
847*ec779b8eSAndroid Build Coastguard Worker break;
848*ec779b8eSAndroid Build Coastguard Worker }
849*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendStatusExt1_1::hidl_discriminator::uec: {
850*ec779b8eSAndroid Build Coastguard Worker status.set<FrontendStatus::uec>(static_cast<int32_t>(s.uec()));
851*ec779b8eSAndroid Build Coastguard Worker aidlStatus.push_back(status);
852*ec779b8eSAndroid Build Coastguard Worker break;
853*ec779b8eSAndroid Build Coastguard Worker }
854*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendStatusExt1_1::hidl_discriminator::systemId: {
855*ec779b8eSAndroid Build Coastguard Worker status.set<FrontendStatus::systemId>(static_cast<int32_t>(s.systemId()));
856*ec779b8eSAndroid Build Coastguard Worker aidlStatus.push_back(status);
857*ec779b8eSAndroid Build Coastguard Worker break;
858*ec779b8eSAndroid Build Coastguard Worker }
859*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendStatusExt1_1::hidl_discriminator::interleaving: {
860*ec779b8eSAndroid Build Coastguard Worker vector<FrontendInterleaveMode> aidlInter;
861*ec779b8eSAndroid Build Coastguard Worker for (auto i : s.interleaving()) {
862*ec779b8eSAndroid Build Coastguard Worker FrontendInterleaveMode leaveMode;
863*ec779b8eSAndroid Build Coastguard Worker switch (i.getDiscriminator()) {
864*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendInterleaveMode::hidl_discriminator::atsc3:
865*ec779b8eSAndroid Build Coastguard Worker leaveMode.set<FrontendInterleaveMode::atsc3>(
866*ec779b8eSAndroid Build Coastguard Worker static_cast<FrontendAtsc3TimeInterleaveMode>(i.atsc3()));
867*ec779b8eSAndroid Build Coastguard Worker break;
868*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendInterleaveMode::hidl_discriminator::dvbc:
869*ec779b8eSAndroid Build Coastguard Worker leaveMode.set<FrontendInterleaveMode::dvbc>(
870*ec779b8eSAndroid Build Coastguard Worker static_cast<FrontendCableTimeInterleaveMode>(i.dvbc()));
871*ec779b8eSAndroid Build Coastguard Worker break;
872*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendInterleaveMode::hidl_discriminator::dtmb:
873*ec779b8eSAndroid Build Coastguard Worker leaveMode.set<FrontendInterleaveMode::dtmb>(
874*ec779b8eSAndroid Build Coastguard Worker static_cast<FrontendDtmbTimeInterleaveMode>(i.dtmb()));
875*ec779b8eSAndroid Build Coastguard Worker break;
876*ec779b8eSAndroid Build Coastguard Worker }
877*ec779b8eSAndroid Build Coastguard Worker aidlInter.push_back(leaveMode);
878*ec779b8eSAndroid Build Coastguard Worker }
879*ec779b8eSAndroid Build Coastguard Worker status.set<FrontendStatus::interleaving>(aidlInter);
880*ec779b8eSAndroid Build Coastguard Worker aidlStatus.push_back(status);
881*ec779b8eSAndroid Build Coastguard Worker break;
882*ec779b8eSAndroid Build Coastguard Worker }
883*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendStatusExt1_1::hidl_discriminator::isdbtSegment: {
884*ec779b8eSAndroid Build Coastguard Worker const vector<uint8_t>& seg = s.isdbtSegment();
885*ec779b8eSAndroid Build Coastguard Worker vector<int32_t> i(seg.begin(), seg.end());
886*ec779b8eSAndroid Build Coastguard Worker status.set<FrontendStatus::isdbtSegment>(i);
887*ec779b8eSAndroid Build Coastguard Worker aidlStatus.push_back(status);
888*ec779b8eSAndroid Build Coastguard Worker break;
889*ec779b8eSAndroid Build Coastguard Worker }
890*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendStatusExt1_1::hidl_discriminator::tsDataRate: {
891*ec779b8eSAndroid Build Coastguard Worker vector<int32_t> ts(s.tsDataRate().begin(), s.tsDataRate().end());
892*ec779b8eSAndroid Build Coastguard Worker status.set<FrontendStatus::tsDataRate>(ts);
893*ec779b8eSAndroid Build Coastguard Worker aidlStatus.push_back(status);
894*ec779b8eSAndroid Build Coastguard Worker break;
895*ec779b8eSAndroid Build Coastguard Worker }
896*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendStatusExt1_1::hidl_discriminator::rollOff: {
897*ec779b8eSAndroid Build Coastguard Worker FrontendRollOff rollOff;
898*ec779b8eSAndroid Build Coastguard Worker switch (s.rollOff().getDiscriminator()) {
899*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendRollOff::hidl_discriminator::dvbs:
900*ec779b8eSAndroid Build Coastguard Worker rollOff.set<FrontendRollOff::dvbs>(
901*ec779b8eSAndroid Build Coastguard Worker static_cast<FrontendDvbsRolloff>(s.rollOff().dvbs()));
902*ec779b8eSAndroid Build Coastguard Worker break;
903*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendRollOff::hidl_discriminator::isdbs:
904*ec779b8eSAndroid Build Coastguard Worker rollOff.set<FrontendRollOff::isdbs>(
905*ec779b8eSAndroid Build Coastguard Worker static_cast<FrontendIsdbsRolloff>(s.rollOff().isdbs()));
906*ec779b8eSAndroid Build Coastguard Worker break;
907*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendRollOff::hidl_discriminator::isdbs3:
908*ec779b8eSAndroid Build Coastguard Worker rollOff.set<FrontendRollOff::isdbs3>(
909*ec779b8eSAndroid Build Coastguard Worker static_cast<FrontendIsdbs3Rolloff>(s.rollOff().isdbs3()));
910*ec779b8eSAndroid Build Coastguard Worker break;
911*ec779b8eSAndroid Build Coastguard Worker }
912*ec779b8eSAndroid Build Coastguard Worker status.set<FrontendStatus::rollOff>(rollOff);
913*ec779b8eSAndroid Build Coastguard Worker aidlStatus.push_back(status);
914*ec779b8eSAndroid Build Coastguard Worker break;
915*ec779b8eSAndroid Build Coastguard Worker }
916*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendStatusExt1_1::hidl_discriminator::isMiso: {
917*ec779b8eSAndroid Build Coastguard Worker status.set<FrontendStatus::isMiso>(s.isMiso());
918*ec779b8eSAndroid Build Coastguard Worker aidlStatus.push_back(status);
919*ec779b8eSAndroid Build Coastguard Worker break;
920*ec779b8eSAndroid Build Coastguard Worker }
921*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendStatusExt1_1::hidl_discriminator::isLinear: {
922*ec779b8eSAndroid Build Coastguard Worker status.set<FrontendStatus::isLinear>(s.isLinear());
923*ec779b8eSAndroid Build Coastguard Worker aidlStatus.push_back(status);
924*ec779b8eSAndroid Build Coastguard Worker break;
925*ec779b8eSAndroid Build Coastguard Worker }
926*ec779b8eSAndroid Build Coastguard Worker case HidlFrontendStatusExt1_1::hidl_discriminator::isShortFrames: {
927*ec779b8eSAndroid Build Coastguard Worker status.set<FrontendStatus::isShortFrames>(s.isShortFrames());
928*ec779b8eSAndroid Build Coastguard Worker aidlStatus.push_back(status);
929*ec779b8eSAndroid Build Coastguard Worker break;
930*ec779b8eSAndroid Build Coastguard Worker }
931*ec779b8eSAndroid Build Coastguard Worker }
932*ec779b8eSAndroid Build Coastguard Worker }
933*ec779b8eSAndroid Build Coastguard Worker }
934*ec779b8eSAndroid Build Coastguard Worker
getAtsc3PlpSettings(const FrontendAtsc3Settings & settings)935*ec779b8eSAndroid Build Coastguard Worker hidl_vec<HidlFrontendAtsc3PlpSettings> TunerHidlFrontend::getAtsc3PlpSettings(
936*ec779b8eSAndroid Build Coastguard Worker const FrontendAtsc3Settings& settings) {
937*ec779b8eSAndroid Build Coastguard Worker int len = settings.plpSettings.size();
938*ec779b8eSAndroid Build Coastguard Worker hidl_vec<HidlFrontendAtsc3PlpSettings> plps = hidl_vec<HidlFrontendAtsc3PlpSettings>(len);
939*ec779b8eSAndroid Build Coastguard Worker // parse PLP settings
940*ec779b8eSAndroid Build Coastguard Worker for (int i = 0; i < len; i++) {
941*ec779b8eSAndroid Build Coastguard Worker uint8_t plpId = static_cast<uint8_t>(settings.plpSettings[i].plpId);
942*ec779b8eSAndroid Build Coastguard Worker HidlFrontendAtsc3Modulation modulation =
943*ec779b8eSAndroid Build Coastguard Worker static_cast<HidlFrontendAtsc3Modulation>(settings.plpSettings[i].modulation);
944*ec779b8eSAndroid Build Coastguard Worker HidlFrontendAtsc3TimeInterleaveMode interleaveMode =
945*ec779b8eSAndroid Build Coastguard Worker static_cast<HidlFrontendAtsc3TimeInterleaveMode>(
946*ec779b8eSAndroid Build Coastguard Worker settings.plpSettings[i].interleaveMode);
947*ec779b8eSAndroid Build Coastguard Worker HidlFrontendAtsc3CodeRate codeRate =
948*ec779b8eSAndroid Build Coastguard Worker static_cast<HidlFrontendAtsc3CodeRate>(settings.plpSettings[i].codeRate);
949*ec779b8eSAndroid Build Coastguard Worker HidlFrontendAtsc3Fec fec = static_cast<HidlFrontendAtsc3Fec>(settings.plpSettings[i].fec);
950*ec779b8eSAndroid Build Coastguard Worker HidlFrontendAtsc3PlpSettings frontendAtsc3PlpSettings{
951*ec779b8eSAndroid Build Coastguard Worker .plpId = plpId,
952*ec779b8eSAndroid Build Coastguard Worker .modulation = modulation,
953*ec779b8eSAndroid Build Coastguard Worker .interleaveMode = interleaveMode,
954*ec779b8eSAndroid Build Coastguard Worker .codeRate = codeRate,
955*ec779b8eSAndroid Build Coastguard Worker .fec = fec,
956*ec779b8eSAndroid Build Coastguard Worker };
957*ec779b8eSAndroid Build Coastguard Worker plps[i] = frontendAtsc3PlpSettings;
958*ec779b8eSAndroid Build Coastguard Worker }
959*ec779b8eSAndroid Build Coastguard Worker return plps;
960*ec779b8eSAndroid Build Coastguard Worker }
961*ec779b8eSAndroid Build Coastguard Worker
getDvbsCodeRate(const FrontendDvbsCodeRate & codeRate)962*ec779b8eSAndroid Build Coastguard Worker HidlFrontendDvbsCodeRate TunerHidlFrontend::getDvbsCodeRate(const FrontendDvbsCodeRate& codeRate) {
963*ec779b8eSAndroid Build Coastguard Worker HidlFrontendInnerFec innerFec = static_cast<HidlFrontendInnerFec>(codeRate.fec);
964*ec779b8eSAndroid Build Coastguard Worker bool isLinear = codeRate.isLinear;
965*ec779b8eSAndroid Build Coastguard Worker bool isShortFrames = codeRate.isShortFrames;
966*ec779b8eSAndroid Build Coastguard Worker uint32_t bitsPer1000Symbol = static_cast<uint32_t>(codeRate.bitsPer1000Symbol);
967*ec779b8eSAndroid Build Coastguard Worker HidlFrontendDvbsCodeRate coderate{
968*ec779b8eSAndroid Build Coastguard Worker .fec = innerFec,
969*ec779b8eSAndroid Build Coastguard Worker .isLinear = isLinear,
970*ec779b8eSAndroid Build Coastguard Worker .isShortFrames = isShortFrames,
971*ec779b8eSAndroid Build Coastguard Worker .bitsPer1000Symbol = bitsPer1000Symbol,
972*ec779b8eSAndroid Build Coastguard Worker };
973*ec779b8eSAndroid Build Coastguard Worker return coderate;
974*ec779b8eSAndroid Build Coastguard Worker }
975*ec779b8eSAndroid Build Coastguard Worker
getHidlFrontendSettings(const FrontendSettings & aidlSettings,HidlFrontendSettings & settings,HidlFrontendSettingsExt1_1 & settingsExt)976*ec779b8eSAndroid Build Coastguard Worker void TunerHidlFrontend::getHidlFrontendSettings(const FrontendSettings& aidlSettings,
977*ec779b8eSAndroid Build Coastguard Worker HidlFrontendSettings& settings,
978*ec779b8eSAndroid Build Coastguard Worker HidlFrontendSettingsExt1_1& settingsExt) {
979*ec779b8eSAndroid Build Coastguard Worker switch (aidlSettings.getTag()) {
980*ec779b8eSAndroid Build Coastguard Worker case FrontendSettings::analog: {
981*ec779b8eSAndroid Build Coastguard Worker const FrontendAnalogSettings& analog = aidlSettings.get<FrontendSettings::analog>();
982*ec779b8eSAndroid Build Coastguard Worker settings.analog({
983*ec779b8eSAndroid Build Coastguard Worker .frequency = static_cast<uint32_t>(analog.frequency),
984*ec779b8eSAndroid Build Coastguard Worker .type = static_cast<HidlFrontendAnalogType>(analog.type),
985*ec779b8eSAndroid Build Coastguard Worker .sifStandard = static_cast<HidlFrontendAnalogSifStandard>(analog.sifStandard),
986*ec779b8eSAndroid Build Coastguard Worker });
987*ec779b8eSAndroid Build Coastguard Worker settingsExt.settingExt.analog({
988*ec779b8eSAndroid Build Coastguard Worker .aftFlag = static_cast<HidlFrontendAnalogAftFlag>(analog.aftFlag),
989*ec779b8eSAndroid Build Coastguard Worker });
990*ec779b8eSAndroid Build Coastguard Worker settingsExt.endFrequency = static_cast<uint32_t>(analog.endFrequency);
991*ec779b8eSAndroid Build Coastguard Worker settingsExt.inversion = static_cast<HidlFrontendSpectralInversion>(analog.inversion);
992*ec779b8eSAndroid Build Coastguard Worker break;
993*ec779b8eSAndroid Build Coastguard Worker }
994*ec779b8eSAndroid Build Coastguard Worker case FrontendSettings::atsc: {
995*ec779b8eSAndroid Build Coastguard Worker const FrontendAtscSettings& atsc = aidlSettings.get<FrontendSettings::atsc>();
996*ec779b8eSAndroid Build Coastguard Worker settings.atsc({
997*ec779b8eSAndroid Build Coastguard Worker .frequency = static_cast<uint32_t>(atsc.frequency),
998*ec779b8eSAndroid Build Coastguard Worker .modulation = static_cast<HidlFrontendAtscModulation>(atsc.modulation),
999*ec779b8eSAndroid Build Coastguard Worker });
1000*ec779b8eSAndroid Build Coastguard Worker settingsExt.endFrequency = static_cast<uint32_t>(atsc.endFrequency);
1001*ec779b8eSAndroid Build Coastguard Worker settingsExt.inversion = static_cast<HidlFrontendSpectralInversion>(atsc.inversion);
1002*ec779b8eSAndroid Build Coastguard Worker settingsExt.settingExt.noinit();
1003*ec779b8eSAndroid Build Coastguard Worker break;
1004*ec779b8eSAndroid Build Coastguard Worker }
1005*ec779b8eSAndroid Build Coastguard Worker case FrontendSettings::atsc3: {
1006*ec779b8eSAndroid Build Coastguard Worker const FrontendAtsc3Settings& atsc3 = aidlSettings.get<FrontendSettings::atsc3>();
1007*ec779b8eSAndroid Build Coastguard Worker settings.atsc3({
1008*ec779b8eSAndroid Build Coastguard Worker .frequency = static_cast<uint32_t>(atsc3.frequency),
1009*ec779b8eSAndroid Build Coastguard Worker .bandwidth = static_cast<HidlFrontendAtsc3Bandwidth>(atsc3.bandwidth),
1010*ec779b8eSAndroid Build Coastguard Worker .demodOutputFormat =
1011*ec779b8eSAndroid Build Coastguard Worker static_cast<HidlFrontendAtsc3DemodOutputFormat>(atsc3.demodOutputFormat),
1012*ec779b8eSAndroid Build Coastguard Worker .plpSettings = getAtsc3PlpSettings(atsc3),
1013*ec779b8eSAndroid Build Coastguard Worker });
1014*ec779b8eSAndroid Build Coastguard Worker settingsExt.endFrequency = static_cast<uint32_t>(atsc3.endFrequency);
1015*ec779b8eSAndroid Build Coastguard Worker settingsExt.inversion = static_cast<HidlFrontendSpectralInversion>(atsc3.inversion);
1016*ec779b8eSAndroid Build Coastguard Worker settingsExt.settingExt.noinit();
1017*ec779b8eSAndroid Build Coastguard Worker break;
1018*ec779b8eSAndroid Build Coastguard Worker }
1019*ec779b8eSAndroid Build Coastguard Worker case FrontendSettings::dvbc: {
1020*ec779b8eSAndroid Build Coastguard Worker const FrontendDvbcSettings& dvbc = aidlSettings.get<FrontendSettings::dvbc>();
1021*ec779b8eSAndroid Build Coastguard Worker settings.dvbc({
1022*ec779b8eSAndroid Build Coastguard Worker .frequency = static_cast<uint32_t>(dvbc.frequency),
1023*ec779b8eSAndroid Build Coastguard Worker .modulation = static_cast<HidlFrontendDvbcModulation>(dvbc.modulation),
1024*ec779b8eSAndroid Build Coastguard Worker .fec = static_cast<HidlFrontendInnerFec>(dvbc.fec),
1025*ec779b8eSAndroid Build Coastguard Worker .symbolRate = static_cast<uint32_t>(dvbc.symbolRate),
1026*ec779b8eSAndroid Build Coastguard Worker .outerFec = static_cast<HidlFrontendDvbcOuterFec>(dvbc.outerFec),
1027*ec779b8eSAndroid Build Coastguard Worker .annex = static_cast<HidlFrontendDvbcAnnex>(dvbc.annex),
1028*ec779b8eSAndroid Build Coastguard Worker .spectralInversion = static_cast<HidlFrontendDvbcSpectralInversion>(dvbc.inversion),
1029*ec779b8eSAndroid Build Coastguard Worker });
1030*ec779b8eSAndroid Build Coastguard Worker settingsExt.settingExt.dvbc({
1031*ec779b8eSAndroid Build Coastguard Worker .interleaveMode =
1032*ec779b8eSAndroid Build Coastguard Worker static_cast<HidlFrontendCableTimeInterleaveMode>(dvbc.interleaveMode),
1033*ec779b8eSAndroid Build Coastguard Worker .bandwidth = static_cast<HidlFrontendDvbcBandwidth>(dvbc.bandwidth),
1034*ec779b8eSAndroid Build Coastguard Worker });
1035*ec779b8eSAndroid Build Coastguard Worker settingsExt.endFrequency = static_cast<uint32_t>(dvbc.endFrequency);
1036*ec779b8eSAndroid Build Coastguard Worker settingsExt.inversion = static_cast<HidlFrontendSpectralInversion>(dvbc.inversion);
1037*ec779b8eSAndroid Build Coastguard Worker break;
1038*ec779b8eSAndroid Build Coastguard Worker }
1039*ec779b8eSAndroid Build Coastguard Worker case FrontendSettings::dvbs: {
1040*ec779b8eSAndroid Build Coastguard Worker const FrontendDvbsSettings& dvbs = aidlSettings.get<FrontendSettings::dvbs>();
1041*ec779b8eSAndroid Build Coastguard Worker settings.dvbs({
1042*ec779b8eSAndroid Build Coastguard Worker .frequency = static_cast<uint32_t>(dvbs.frequency),
1043*ec779b8eSAndroid Build Coastguard Worker .modulation = static_cast<HidlFrontendDvbsModulation>(dvbs.modulation),
1044*ec779b8eSAndroid Build Coastguard Worker .coderate = getDvbsCodeRate(dvbs.coderate),
1045*ec779b8eSAndroid Build Coastguard Worker .symbolRate = static_cast<uint32_t>(dvbs.symbolRate),
1046*ec779b8eSAndroid Build Coastguard Worker .rolloff = static_cast<HidlFrontendDvbsRolloff>(dvbs.rolloff),
1047*ec779b8eSAndroid Build Coastguard Worker .pilot = static_cast<HidlFrontendDvbsPilot>(dvbs.pilot),
1048*ec779b8eSAndroid Build Coastguard Worker .inputStreamId = static_cast<uint32_t>(dvbs.inputStreamId),
1049*ec779b8eSAndroid Build Coastguard Worker .standard = static_cast<HidlFrontendDvbsStandard>(dvbs.standard),
1050*ec779b8eSAndroid Build Coastguard Worker .vcmMode = static_cast<HidlFrontendDvbsVcmMode>(dvbs.vcmMode),
1051*ec779b8eSAndroid Build Coastguard Worker });
1052*ec779b8eSAndroid Build Coastguard Worker settingsExt.settingExt.dvbs({
1053*ec779b8eSAndroid Build Coastguard Worker .scanType = static_cast<HidlFrontendDvbsScanType>(dvbs.scanType),
1054*ec779b8eSAndroid Build Coastguard Worker .isDiseqcRxMessage = dvbs.isDiseqcRxMessage,
1055*ec779b8eSAndroid Build Coastguard Worker });
1056*ec779b8eSAndroid Build Coastguard Worker settingsExt.endFrequency = static_cast<uint32_t>(dvbs.endFrequency);
1057*ec779b8eSAndroid Build Coastguard Worker settingsExt.inversion = static_cast<HidlFrontendSpectralInversion>(dvbs.inversion);
1058*ec779b8eSAndroid Build Coastguard Worker break;
1059*ec779b8eSAndroid Build Coastguard Worker }
1060*ec779b8eSAndroid Build Coastguard Worker case FrontendSettings::dvbt: {
1061*ec779b8eSAndroid Build Coastguard Worker const FrontendDvbtSettings& dvbt = aidlSettings.get<FrontendSettings::dvbt>();
1062*ec779b8eSAndroid Build Coastguard Worker settings.dvbt({
1063*ec779b8eSAndroid Build Coastguard Worker .frequency = static_cast<uint32_t>(dvbt.frequency),
1064*ec779b8eSAndroid Build Coastguard Worker .transmissionMode =
1065*ec779b8eSAndroid Build Coastguard Worker static_cast<HidlFrontendDvbtTransmissionMode>(dvbt.transmissionMode),
1066*ec779b8eSAndroid Build Coastguard Worker .bandwidth = static_cast<HidlFrontendDvbtBandwidth>(dvbt.bandwidth),
1067*ec779b8eSAndroid Build Coastguard Worker .constellation = static_cast<HidlFrontendDvbtConstellation>(dvbt.constellation),
1068*ec779b8eSAndroid Build Coastguard Worker .hierarchy = static_cast<HidlFrontendDvbtHierarchy>(dvbt.hierarchy),
1069*ec779b8eSAndroid Build Coastguard Worker .hpCoderate = static_cast<HidlFrontendDvbtCoderate>(dvbt.hpCoderate),
1070*ec779b8eSAndroid Build Coastguard Worker .lpCoderate = static_cast<HidlFrontendDvbtCoderate>(dvbt.lpCoderate),
1071*ec779b8eSAndroid Build Coastguard Worker .guardInterval = static_cast<HidlFrontendDvbtGuardInterval>(dvbt.guardInterval),
1072*ec779b8eSAndroid Build Coastguard Worker .isHighPriority = dvbt.isHighPriority,
1073*ec779b8eSAndroid Build Coastguard Worker .standard = static_cast<HidlFrontendDvbtStandard>(dvbt.standard),
1074*ec779b8eSAndroid Build Coastguard Worker .isMiso = dvbt.isMiso,
1075*ec779b8eSAndroid Build Coastguard Worker .plpMode = static_cast<HidlFrontendDvbtPlpMode>(dvbt.plpMode),
1076*ec779b8eSAndroid Build Coastguard Worker .plpId = static_cast<uint8_t>(dvbt.plpId),
1077*ec779b8eSAndroid Build Coastguard Worker .plpGroupId = static_cast<uint8_t>(dvbt.plpGroupId),
1078*ec779b8eSAndroid Build Coastguard Worker });
1079*ec779b8eSAndroid Build Coastguard Worker settingsExt.settingExt.dvbt({
1080*ec779b8eSAndroid Build Coastguard Worker .constellation = static_cast<
1081*ec779b8eSAndroid Build Coastguard Worker ::android::hardware::tv::tuner::V1_1::FrontendDvbtConstellation>(
1082*ec779b8eSAndroid Build Coastguard Worker dvbt.constellation),
1083*ec779b8eSAndroid Build Coastguard Worker .transmissionMode = static_cast<
1084*ec779b8eSAndroid Build Coastguard Worker ::android::hardware::tv::tuner::V1_1::FrontendDvbtTransmissionMode>(
1085*ec779b8eSAndroid Build Coastguard Worker dvbt.transmissionMode),
1086*ec779b8eSAndroid Build Coastguard Worker });
1087*ec779b8eSAndroid Build Coastguard Worker settingsExt.endFrequency = static_cast<uint32_t>(dvbt.endFrequency);
1088*ec779b8eSAndroid Build Coastguard Worker settingsExt.inversion = static_cast<HidlFrontendSpectralInversion>(dvbt.inversion);
1089*ec779b8eSAndroid Build Coastguard Worker break;
1090*ec779b8eSAndroid Build Coastguard Worker }
1091*ec779b8eSAndroid Build Coastguard Worker case FrontendSettings::isdbs: {
1092*ec779b8eSAndroid Build Coastguard Worker const FrontendIsdbsSettings& isdbs = aidlSettings.get<FrontendSettings::isdbs>();
1093*ec779b8eSAndroid Build Coastguard Worker settings.isdbs({
1094*ec779b8eSAndroid Build Coastguard Worker .frequency = static_cast<uint32_t>(isdbs.frequency),
1095*ec779b8eSAndroid Build Coastguard Worker .streamId = static_cast<uint16_t>(isdbs.streamId),
1096*ec779b8eSAndroid Build Coastguard Worker .streamIdType = static_cast<HidlFrontendIsdbsStreamIdType>(isdbs.streamIdType),
1097*ec779b8eSAndroid Build Coastguard Worker .modulation = static_cast<HidlFrontendIsdbsModulation>(isdbs.modulation),
1098*ec779b8eSAndroid Build Coastguard Worker .coderate = static_cast<HidlFrontendIsdbsCoderate>(isdbs.coderate),
1099*ec779b8eSAndroid Build Coastguard Worker .symbolRate = static_cast<uint32_t>(isdbs.symbolRate),
1100*ec779b8eSAndroid Build Coastguard Worker .rolloff = static_cast<HidlFrontendIsdbsRolloff>(isdbs.rolloff),
1101*ec779b8eSAndroid Build Coastguard Worker });
1102*ec779b8eSAndroid Build Coastguard Worker settingsExt.endFrequency = static_cast<uint32_t>(isdbs.endFrequency);
1103*ec779b8eSAndroid Build Coastguard Worker settingsExt.settingExt.noinit();
1104*ec779b8eSAndroid Build Coastguard Worker break;
1105*ec779b8eSAndroid Build Coastguard Worker }
1106*ec779b8eSAndroid Build Coastguard Worker case FrontendSettings::isdbs3: {
1107*ec779b8eSAndroid Build Coastguard Worker const FrontendIsdbs3Settings& isdbs3 = aidlSettings.get<FrontendSettings::isdbs3>();
1108*ec779b8eSAndroid Build Coastguard Worker settings.isdbs3({
1109*ec779b8eSAndroid Build Coastguard Worker .frequency = static_cast<uint32_t>(isdbs3.frequency),
1110*ec779b8eSAndroid Build Coastguard Worker .streamId = static_cast<uint16_t>(isdbs3.streamId),
1111*ec779b8eSAndroid Build Coastguard Worker .streamIdType = static_cast<HidlFrontendIsdbsStreamIdType>(isdbs3.streamIdType),
1112*ec779b8eSAndroid Build Coastguard Worker .modulation = static_cast<HidlFrontendIsdbs3Modulation>(isdbs3.modulation),
1113*ec779b8eSAndroid Build Coastguard Worker .coderate = static_cast<HidlFrontendIsdbs3Coderate>(isdbs3.coderate),
1114*ec779b8eSAndroid Build Coastguard Worker .symbolRate = static_cast<uint32_t>(isdbs3.symbolRate),
1115*ec779b8eSAndroid Build Coastguard Worker .rolloff = static_cast<HidlFrontendIsdbs3Rolloff>(isdbs3.rolloff),
1116*ec779b8eSAndroid Build Coastguard Worker });
1117*ec779b8eSAndroid Build Coastguard Worker settingsExt.endFrequency = static_cast<uint32_t>(isdbs3.endFrequency);
1118*ec779b8eSAndroid Build Coastguard Worker settingsExt.settingExt.noinit();
1119*ec779b8eSAndroid Build Coastguard Worker break;
1120*ec779b8eSAndroid Build Coastguard Worker }
1121*ec779b8eSAndroid Build Coastguard Worker case FrontendSettings::isdbt: {
1122*ec779b8eSAndroid Build Coastguard Worker const FrontendIsdbtSettings& isdbt = aidlSettings.get<FrontendSettings::isdbt>();
1123*ec779b8eSAndroid Build Coastguard Worker HidlFrontendIsdbtModulation modulation = HidlFrontendIsdbtModulation::UNDEFINED;
1124*ec779b8eSAndroid Build Coastguard Worker HidlFrontendIsdbtCoderate coderate = HidlFrontendIsdbtCoderate::UNDEFINED;
1125*ec779b8eSAndroid Build Coastguard Worker if (isdbt.layerSettings.size() > 0) {
1126*ec779b8eSAndroid Build Coastguard Worker modulation =
1127*ec779b8eSAndroid Build Coastguard Worker static_cast<HidlFrontendIsdbtModulation>(isdbt.layerSettings[0].modulation);
1128*ec779b8eSAndroid Build Coastguard Worker coderate = static_cast<HidlFrontendIsdbtCoderate>(isdbt.layerSettings[0].coderate);
1129*ec779b8eSAndroid Build Coastguard Worker }
1130*ec779b8eSAndroid Build Coastguard Worker settings.isdbt({
1131*ec779b8eSAndroid Build Coastguard Worker .frequency = static_cast<uint32_t>(isdbt.frequency),
1132*ec779b8eSAndroid Build Coastguard Worker .modulation = modulation,
1133*ec779b8eSAndroid Build Coastguard Worker .bandwidth = static_cast<HidlFrontendIsdbtBandwidth>(isdbt.bandwidth),
1134*ec779b8eSAndroid Build Coastguard Worker .mode = static_cast<HidlFrontendIsdbtMode>(isdbt.mode),
1135*ec779b8eSAndroid Build Coastguard Worker .coderate = coderate,
1136*ec779b8eSAndroid Build Coastguard Worker .guardInterval = static_cast<HidlFrontendIsdbtGuardInterval>(isdbt.guardInterval),
1137*ec779b8eSAndroid Build Coastguard Worker .serviceAreaId = static_cast<uint32_t>(isdbt.serviceAreaId),
1138*ec779b8eSAndroid Build Coastguard Worker });
1139*ec779b8eSAndroid Build Coastguard Worker settingsExt.endFrequency = static_cast<uint32_t>(isdbt.endFrequency);
1140*ec779b8eSAndroid Build Coastguard Worker settingsExt.inversion = static_cast<HidlFrontendSpectralInversion>(isdbt.inversion);
1141*ec779b8eSAndroid Build Coastguard Worker settingsExt.settingExt.noinit();
1142*ec779b8eSAndroid Build Coastguard Worker break;
1143*ec779b8eSAndroid Build Coastguard Worker }
1144*ec779b8eSAndroid Build Coastguard Worker case FrontendSettings::dtmb: {
1145*ec779b8eSAndroid Build Coastguard Worker const FrontendDtmbSettings& dtmb = aidlSettings.get<FrontendSettings::dtmb>();
1146*ec779b8eSAndroid Build Coastguard Worker settingsExt.settingExt.dtmb({
1147*ec779b8eSAndroid Build Coastguard Worker .frequency = static_cast<uint32_t>(dtmb.frequency),
1148*ec779b8eSAndroid Build Coastguard Worker .transmissionMode =
1149*ec779b8eSAndroid Build Coastguard Worker static_cast<HidlFrontendDtmbTransmissionMode>(dtmb.transmissionMode),
1150*ec779b8eSAndroid Build Coastguard Worker .bandwidth = static_cast<HidlFrontendDtmbBandwidth>(dtmb.bandwidth),
1151*ec779b8eSAndroid Build Coastguard Worker .modulation = static_cast<HidlFrontendDtmbModulation>(dtmb.modulation),
1152*ec779b8eSAndroid Build Coastguard Worker .codeRate = static_cast<HidlFrontendDtmbCodeRate>(dtmb.codeRate),
1153*ec779b8eSAndroid Build Coastguard Worker .guardInterval = static_cast<HidlFrontendDtmbGuardInterval>(dtmb.guardInterval),
1154*ec779b8eSAndroid Build Coastguard Worker .interleaveMode =
1155*ec779b8eSAndroid Build Coastguard Worker static_cast<HidlFrontendDtmbTimeInterleaveMode>(dtmb.interleaveMode),
1156*ec779b8eSAndroid Build Coastguard Worker });
1157*ec779b8eSAndroid Build Coastguard Worker settingsExt.endFrequency = static_cast<uint32_t>(dtmb.endFrequency);
1158*ec779b8eSAndroid Build Coastguard Worker settingsExt.inversion = static_cast<HidlFrontendSpectralInversion>(dtmb.inversion);
1159*ec779b8eSAndroid Build Coastguard Worker break;
1160*ec779b8eSAndroid Build Coastguard Worker }
1161*ec779b8eSAndroid Build Coastguard Worker default:
1162*ec779b8eSAndroid Build Coastguard Worker break;
1163*ec779b8eSAndroid Build Coastguard Worker }
1164*ec779b8eSAndroid Build Coastguard Worker }
1165*ec779b8eSAndroid Build Coastguard Worker
1166*ec779b8eSAndroid Build Coastguard Worker } // namespace tuner
1167*ec779b8eSAndroid Build Coastguard Worker } // namespace tv
1168*ec779b8eSAndroid Build Coastguard Worker } // namespace media
1169*ec779b8eSAndroid Build Coastguard Worker } // namespace android
1170*ec779b8eSAndroid Build Coastguard Worker } // namespace aidl
1171