Migrate native tuner to new AIDL HAL.
After this change, tuner java and jni will not reply on HIDL anymore. It
also cleans up the the unused HIDL direct calls.
Bug: 191825295
Test: atest android.media.tv.tuner.cts
Change-Id: I0113565568119a79ed631b318cc8ccd32e0ae2ec
diff --git a/media/jni/tuner/FrontendClient.cpp b/media/jni/tuner/FrontendClient.cpp
index 5d9b12d..70309a0 100644
--- a/media/jni/tuner/FrontendClient.cpp
+++ b/media/jni/tuner/FrontendClient.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 The Android Open Source Project
+ * Copyright 2021 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -16,1235 +16,168 @@
#define LOG_TAG "FrontendClient"
+#include "FrontendClient.h"
+
+#include <aidl/android/hardware/tv/tuner/Constant.h>
#include <android-base/logging.h>
#include <utils/Log.h>
-#include "FrontendClient.h"
-
-using ::aidl::android::media::tv::tuner::TunerFrontendScanAtsc3PlpInfo;
-using ::aidl::android::media::tv::tuner::TunerFrontendUnionSettings;
-
-using ::android::hardware::tv::tuner::V1_0::FrontendAnalogSifStandard;
-using ::android::hardware::tv::tuner::V1_0::FrontendAnalogType;
-using ::android::hardware::tv::tuner::V1_0::FrontendAtscModulation;
-using ::android::hardware::tv::tuner::V1_0::FrontendAtsc3Bandwidth;
-using ::android::hardware::tv::tuner::V1_0::FrontendAtsc3Modulation;
-using ::android::hardware::tv::tuner::V1_0::FrontendAtsc3TimeInterleaveMode;
-using ::android::hardware::tv::tuner::V1_0::FrontendDvbcAnnex;
-using ::android::hardware::tv::tuner::V1_0::FrontendDvbcModulation;
-using ::android::hardware::tv::tuner::V1_0::FrontendDvbcSpectralInversion;
-using ::android::hardware::tv::tuner::V1_0::FrontendDvbsModulation;
-using ::android::hardware::tv::tuner::V1_0::FrontendDvbsStandard;
-using ::android::hardware::tv::tuner::V1_0::FrontendDvbsRolloff;
-using ::android::hardware::tv::tuner::V1_0::FrontendDvbtBandwidth;
-using ::android::hardware::tv::tuner::V1_0::FrontendDvbtGuardInterval;
-using ::android::hardware::tv::tuner::V1_0::FrontendDvbtHierarchy;
-using ::android::hardware::tv::tuner::V1_0::FrontendDvbtStandard;
-using ::android::hardware::tv::tuner::V1_0::FrontendInnerFec;
-using ::android::hardware::tv::tuner::V1_0::FrontendIsdbsModulation;
-using ::android::hardware::tv::tuner::V1_0::FrontendIsdbsRolloff;
-using ::android::hardware::tv::tuner::V1_0::FrontendIsdbs3Modulation;
-using ::android::hardware::tv::tuner::V1_0::FrontendIsdbs3Rolloff;
-using ::android::hardware::tv::tuner::V1_0::FrontendIsdbtBandwidth;
-using ::android::hardware::tv::tuner::V1_0::FrontendIsdbtGuardInterval;
-using ::android::hardware::tv::tuner::V1_0::FrontendIsdbtMode;
-using ::android::hardware::tv::tuner::V1_0::FrontendIsdbtModulation;
-using ::android::hardware::tv::tuner::V1_0::FrontendModulationStatus;
-using ::android::hardware::tv::tuner::V1_0::FrontendScanAtsc3PlpInfo;
-using ::android::hardware::tv::tuner::V1_0::FrontendStatusAtsc3PlpInfo;
-using ::android::hardware::tv::tuner::V1_0::LnbVoltage;
-using ::android::hardware::tv::tuner::V1_1::Constant;
-using ::android::hardware::tv::tuner::V1_1::FrontendBandwidth;
-using ::android::hardware::tv::tuner::V1_1::FrontendCableTimeInterleaveMode;
-using ::android::hardware::tv::tuner::V1_1::FrontendDtmbBandwidth;
-using ::android::hardware::tv::tuner::V1_1::FrontendDtmbGuardInterval;
-using ::android::hardware::tv::tuner::V1_1::FrontendDtmbModulation;
-using ::android::hardware::tv::tuner::V1_1::FrontendDtmbTimeInterleaveMode;
-using ::android::hardware::tv::tuner::V1_1::FrontendDtmbTransmissionMode;
-using ::android::hardware::tv::tuner::V1_1::FrontendDvbcBandwidth;
-using ::android::hardware::tv::tuner::V1_1::FrontendDvbtConstellation;
-using ::android::hardware::tv::tuner::V1_1::FrontendDvbtTransmissionMode;
-using ::android::hardware::tv::tuner::V1_1::FrontendGuardInterval;
-using ::android::hardware::tv::tuner::V1_1::FrontendInterleaveMode;
-using ::android::hardware::tv::tuner::V1_1::FrontendModulation;
-using ::android::hardware::tv::tuner::V1_1::FrontendRollOff;
-using ::android::hardware::tv::tuner::V1_1::FrontendSpectralInversion;
-using ::android::hardware::tv::tuner::V1_1::FrontendTransmissionMode;
-using ::android::hardware::tv::tuner::V1_1::FrontendType;
+using ::aidl::android::hardware::tv::tuner::Constant;
namespace android {
-
/////////////// FrontendClient ///////////////////////
-
-FrontendClient::FrontendClient(shared_ptr<ITunerFrontend> tunerFrontend, int type) {
+FrontendClient::FrontendClient(shared_ptr<ITunerFrontend> tunerFrontend, FrontendType type) {
mTunerFrontend = tunerFrontend;
mType = type;
}
FrontendClient::~FrontendClient() {
- mTunerFrontend = NULL;
- mFrontend = NULL;
- mFrontend_1_1 = NULL;
- mId = -1;
- mType = -1;
+ mTunerFrontend = nullptr;
+ mType = FrontendType::UNDEFINED;
}
Result FrontendClient::setCallback(sp<FrontendClientCallback> frontendClientCallback) {
- if (mTunerFrontend != NULL) {
+ if (mTunerFrontend != nullptr) {
shared_ptr<TunerFrontendCallback> aidlCallback =
::ndk::SharedRefBase::make<TunerFrontendCallback>(frontendClientCallback);
- aidlCallback->setFrontendType(mType);
Status s = mTunerFrontend->setCallback(aidlCallback);
return ClientHelper::getServiceSpecificErrorCode(s);
}
- sp<HidlFrontendCallback> hidlCallback = new HidlFrontendCallback(frontendClientCallback);
- return mFrontend->setCallback(hidlCallback);
+ return Result::INVALID_STATE;
}
-void FrontendClient::setHidlFrontend(sp<IFrontend> frontend) {
- mFrontend = frontend;
- mFrontend_1_1 = ::android::hardware::tv::tuner::V1_1::IFrontend::castFrom(mFrontend);
-}
-
-// TODO: move after migration is done
-void FrontendClient::setId(int id) {
- mId = id;
-}
-
-Result FrontendClient::tune(const FrontendSettings& settings,
- const FrontendSettingsExt1_1& settingsExt1_1) {
- if (mTunerFrontend != NULL) {
- TunerFrontendSettings tunerFeSettings = getAidlFrontendSettings(settings, settingsExt1_1);
- Status s = mTunerFrontend->tune(tunerFeSettings);
+Result FrontendClient::tune(const FrontendSettings& settings) {
+ if (mTunerFrontend != nullptr) {
+ Status s = mTunerFrontend->tune(settings);
return ClientHelper::getServiceSpecificErrorCode(s);
}
- Result result;
- if (mFrontend_1_1 != NULL && validateExtendedSettings(settingsExt1_1)) {
- result = mFrontend_1_1->tune_1_1(settings, settingsExt1_1);
- return result;
- }
-
- if (mFrontend != NULL) {
- result = mFrontend->tune(settings);
- return result;
- }
-
return Result::INVALID_STATE;
}
Result FrontendClient::stopTune() {
- if (mTunerFrontend != NULL) {
+ if (mTunerFrontend != nullptr) {
Status s = mTunerFrontend->stopTune();
return ClientHelper::getServiceSpecificErrorCode(s);
}
- if (mFrontend != NULL) {
- Result result = mFrontend->stopTune();
- return result;
- }
-
return Result::INVALID_STATE;
}
-Result FrontendClient::scan(const FrontendSettings& settings, FrontendScanType type,
- const FrontendSettingsExt1_1& settingsExt1_1) {
- if (mTunerFrontend != NULL) {
- TunerFrontendSettings tunerFeSettings = getAidlFrontendSettings(settings, settingsExt1_1);
- Status s = mTunerFrontend->scan(tunerFeSettings, (int)type);
+Result FrontendClient::scan(const FrontendSettings& settings, FrontendScanType type) {
+ if (mTunerFrontend != nullptr) {
+ Status s = mTunerFrontend->scan(settings, type);
return ClientHelper::getServiceSpecificErrorCode(s);
}
- Result result;
- if (mFrontend_1_1 != NULL && validateExtendedSettings(settingsExt1_1)) {
- result = mFrontend_1_1->scan_1_1(settings, type, settingsExt1_1);
- return result;
- }
-
- if (mFrontend != NULL) {
- result = mFrontend->scan(settings, type);
- return result;
- }
-
return Result::INVALID_STATE;
}
Result FrontendClient::stopScan() {
- if (mTunerFrontend != NULL) {
+ if (mTunerFrontend != nullptr) {
Status s = mTunerFrontend->stopScan();
return ClientHelper::getServiceSpecificErrorCode(s);
}
- if (mFrontend != NULL) {
- Result result = mFrontend->stopScan();
- return result;
- }
-
return Result::INVALID_STATE;
}
vector<FrontendStatus> FrontendClient::getStatus(vector<FrontendStatusType> statusTypes) {
vector<FrontendStatus> status;
- if (mTunerFrontend != NULL) {
- vector<TunerFrontendStatus> aidlStatus;
- vector<int> types;
- for (auto t : statusTypes) {
- types.push_back((int)t);
- }
- Status s = mTunerFrontend->getStatus(types, &aidlStatus);
- if (ClientHelper::getServiceSpecificErrorCode(s) != Result::SUCCESS) {
- return status;
- }
- return getHidlStatus(aidlStatus);
- }
-
- if (mFrontend != NULL && statusTypes.size() > 0) {
- Result res;
- mFrontend->getStatus(statusTypes,
- [&](Result r, const hidl_vec<FrontendStatus>& s) {
- res = r;
- status = s;
- });
- if (res != Result::SUCCESS) {
- status.clear();
- return status;
- }
- }
-
- return status;
-}
-
-vector<FrontendStatusExt1_1> FrontendClient::getStatusExtended_1_1(
- vector<FrontendStatusTypeExt1_1> statusTypes) {
- vector<FrontendStatusExt1_1> status;
-
- if (mTunerFrontend != NULL) {
- vector<TunerFrontendStatus> aidlStatus;
- vector<int> types;
- for (auto t : statusTypes) {
- types.push_back((int)t);
- }
- Status s = mTunerFrontend->getStatusExtended_1_1(types, &aidlStatus);
- if (ClientHelper::getServiceSpecificErrorCode(s) != Result::SUCCESS) {
- return status;
- }
- return getHidlStatusExt(aidlStatus);
- }
-
- if (mFrontend_1_1 != NULL && statusTypes.size() > 0) {
- Result res;
- mFrontend_1_1->getStatusExt1_1(statusTypes,
- [&](Result r, const hidl_vec<FrontendStatusExt1_1>& s) {
- res = r;
- status = s;
- });
- if (res != Result::SUCCESS) {
- status.clear();
- return status;
- }
+ if (mTunerFrontend != nullptr) {
+ mTunerFrontend->getStatus(statusTypes, &status);
}
return status;
}
Result FrontendClient::setLnb(sp<LnbClient> lnbClient) {
- if (mTunerFrontend != NULL) {
+ if (mTunerFrontend != nullptr) {
Status s = mTunerFrontend->setLnb(lnbClient->getAidlLnb());
return ClientHelper::getServiceSpecificErrorCode(s);
}
- if (mFrontend != NULL) {
- Result result = mFrontend->setLnb(lnbClient->getId());
- return result;
- }
-
return Result::INVALID_STATE;
}
Result FrontendClient::setLna(bool bEnable) {
- if (mTunerFrontend != NULL) {
+ if (mTunerFrontend != nullptr) {
Status s = mTunerFrontend->setLna(bEnable);
return ClientHelper::getServiceSpecificErrorCode(s);
}
- if (mFrontend != NULL) {
- Result result = mFrontend->setLna(bEnable);
- return result;
- }
-
return Result::INVALID_STATE;
}
-int FrontendClient::linkCiCamToFrontend(int ciCamId) {
- int ltsId = (int)Constant::INVALID_LTS_ID;
+int32_t FrontendClient::linkCiCamToFrontend(int32_t ciCamId) {
+ int32_t ltsId = static_cast<int32_t>(Constant::INVALID_LTS_ID);
- if (mTunerFrontend != NULL) {
+ if (mTunerFrontend != nullptr) {
Status s = mTunerFrontend->linkCiCamToFrontend(ciCamId, <sId);
- if (ClientHelper::getServiceSpecificErrorCode(s) == Result::SUCCESS) {
- return ltsId;
- }
- return (int)Constant::INVALID_LTS_ID;
- }
-
- if (mFrontend_1_1 != NULL) {
- Result res;
- mFrontend_1_1->linkCiCam(static_cast<uint32_t>(ciCamId),
- [&](Result r, uint32_t id) {
- res = r;
- ltsId = id;
- });
- if (res != Result::SUCCESS) {
- return (int)Constant::INVALID_LTS_ID;
+ if (!s.isOk()) {
+ return static_cast<int32_t>(Constant::INVALID_LTS_ID);
}
}
return ltsId;
}
-Result FrontendClient::unlinkCiCamToFrontend(int ciCamId) {
- if (mTunerFrontend != NULL) {
+Result FrontendClient::unlinkCiCamToFrontend(int32_t ciCamId) {
+ if (mTunerFrontend != nullptr) {
Status s = mTunerFrontend->unlinkCiCamToFrontend(ciCamId);
return ClientHelper::getServiceSpecificErrorCode(s);
}
- if (mFrontend_1_1 != NULL) {
- return mFrontend_1_1->unlinkCiCam(static_cast<uint32_t>(ciCamId));
- }
-
return Result::INVALID_STATE;
}
Result FrontendClient::close() {
- if (mTunerFrontend != NULL) {
+ if (mTunerFrontend != nullptr) {
Status s = mTunerFrontend->close();
- mTunerFrontend = NULL;
+ mTunerFrontend = nullptr;
return ClientHelper::getServiceSpecificErrorCode(s);
}
- if (mFrontend != NULL) {
- Result result = mFrontend->close();
- mFrontend = NULL;
- mFrontend_1_1 = NULL;
- return result;
- }
-
return Result::INVALID_STATE;
}
-/////////////// TunerFrontend Helper Methods ///////////////////////
-
shared_ptr<ITunerFrontend> FrontendClient::getAidlFrontend() {
return mTunerFrontend;
}
-int FrontendClient::getId() {
- if (mTunerFrontend != NULL) {
- Status s = mTunerFrontend->getFrontendId(&mId);
- if (ClientHelper::getServiceSpecificErrorCode(s) == Result::SUCCESS) {
- return mId;
- }
- ALOGE("Failed to getFrontendId from Tuner Frontend");
- return -1;
- }
-
- if (mFrontend != NULL) {
- return mId;
- }
-
- return -1;
-}
-
-vector<FrontendStatus> FrontendClient::getHidlStatus(vector<TunerFrontendStatus>& aidlStatus) {
- vector<FrontendStatus> hidlStatus;
- for (TunerFrontendStatus s : aidlStatus) {
- FrontendStatus status = FrontendStatus();
- switch (s.getTag()) {
- case TunerFrontendStatus::isDemodLocked: {
- status.isDemodLocked(s.get<TunerFrontendStatus::isDemodLocked>());
- hidlStatus.push_back(status);
- break;
- }
- case TunerFrontendStatus::snr: {
- status.snr(s.get<TunerFrontendStatus::snr>());
- hidlStatus.push_back(status);
- break;
- }
- case TunerFrontendStatus::ber: {
- status.ber((uint32_t)s.get<TunerFrontendStatus::ber>());
- hidlStatus.push_back(status);
- break;
- }
- case TunerFrontendStatus::per: {
- status.per((uint32_t)s.get<TunerFrontendStatus::per>());
- hidlStatus.push_back(status);
- break;
- }
- case TunerFrontendStatus::preBer: {
- status.preBer((uint32_t)s.get<TunerFrontendStatus::preBer>());
- hidlStatus.push_back(status);
- break;
- }
- case TunerFrontendStatus::signalQuality: {
- status.signalQuality((uint32_t)s.get<TunerFrontendStatus::signalQuality>());
- hidlStatus.push_back(status);
- break;
- }
- case TunerFrontendStatus::signalStrength: {
- status.signalStrength(s.get<TunerFrontendStatus::signalStrength>());
- hidlStatus.push_back(status);
- break;
- }
- case TunerFrontendStatus::symbolRate: {
- status.symbolRate((uint32_t)s.get<TunerFrontendStatus::symbolRate>());
- hidlStatus.push_back(status);
- break;
- }
- case TunerFrontendStatus::innerFec: {
- status.innerFec(static_cast<FrontendInnerFec>(
- s.get<TunerFrontendStatus::innerFec>()));
- hidlStatus.push_back(status);
- break;
- }
- case TunerFrontendStatus::modulation: {
- auto aidlMod = s.get<TunerFrontendStatus::modulation>();
- FrontendModulationStatus modulation;
- switch (mType) {
- case (int)FrontendType::DVBC:
- modulation.dvbc(static_cast<FrontendDvbcModulation>(aidlMod));
- status.modulation(modulation);
- hidlStatus.push_back(status);
- break;
- case (int)FrontendType::DVBS:
- modulation.dvbs(static_cast<FrontendDvbsModulation>(aidlMod));
- status.modulation(modulation);
- hidlStatus.push_back(status);
- break;
- case (int)FrontendType::ISDBS:
- modulation.isdbs(static_cast<FrontendIsdbsModulation>(aidlMod));
- status.modulation(modulation);
- hidlStatus.push_back(status);
- break;
- case (int)FrontendType::ISDBS3:
- modulation.isdbs3(static_cast<FrontendIsdbs3Modulation>(aidlMod));
- status.modulation(modulation);
- hidlStatus.push_back(status);
- break;
- case (int)FrontendType::ISDBT:
- modulation.isdbt(static_cast<FrontendIsdbtModulation>(aidlMod));
- status.modulation(modulation);
- hidlStatus.push_back(status);
- break;
- default:
- break;
- }
- break;
- }
- case TunerFrontendStatus::inversion: {
- status.inversion(static_cast<FrontendDvbcSpectralInversion>(
- s.get<TunerFrontendStatus::inversion>()));
- hidlStatus.push_back(status);
- break;
- }
- case TunerFrontendStatus::lnbVoltage: {
- status.lnbVoltage(static_cast<LnbVoltage>(
- s.get<TunerFrontendStatus::lnbVoltage>()));
- hidlStatus.push_back(status);
- break;
- }
- case TunerFrontendStatus::plpId: {
- status.plpId((uint8_t)s.get<TunerFrontendStatus::plpId>());
- hidlStatus.push_back(status);
- break;
- }
- case TunerFrontendStatus::isEWBS: {
- status.isEWBS(s.get<TunerFrontendStatus::isEWBS>());
- hidlStatus.push_back(status);
- break;
- }
- case TunerFrontendStatus::agc: {
- status.agc((uint8_t)s.get<TunerFrontendStatus::agc>());
- hidlStatus.push_back(status);
- break;
- }
- case TunerFrontendStatus::isLnaOn: {
- status.isLnaOn(s.get<TunerFrontendStatus::isLnaOn>());
- hidlStatus.push_back(status);
- break;
- }
- case TunerFrontendStatus::isLayerError: {
- auto aidlE = s.get<TunerFrontendStatus::isLayerError>();
- hidl_vec<bool> e(aidlE.begin(), aidlE.end());
- status.isLayerError(e);
- hidlStatus.push_back(status);
- break;
- }
- case TunerFrontendStatus::mer: {
- status.mer(s.get<TunerFrontendStatus::mer>());
- hidlStatus.push_back(status);
- break;
- }
- case TunerFrontendStatus::freqOffset: {
- status.freqOffset(s.get<TunerFrontendStatus::freqOffset>());
- hidlStatus.push_back(status);
- break;
- }
- case TunerFrontendStatus::hierarchy: {
- status.hierarchy(static_cast<FrontendDvbtHierarchy>(
- s.get<TunerFrontendStatus::hierarchy>()));
- hidlStatus.push_back(status);
- break;
- }
- case TunerFrontendStatus::isRfLocked: {
- status.isRfLocked(s.get<TunerFrontendStatus::isRfLocked>());
- hidlStatus.push_back(status);
- break;
- }
- case TunerFrontendStatus::plpInfo: {
- int size = s.get<TunerFrontendStatus::plpInfo>().size();
- hidl_vec<FrontendStatusAtsc3PlpInfo> info(size);
- for (int i = 0; i < size; i++) {
- auto aidlInfo = s.get<TunerFrontendStatus::plpInfo>()[i];
- info[i] = {
- .plpId = (uint8_t)aidlInfo.plpId,
- .isLocked = aidlInfo.isLocked,
- .uec = (uint32_t)aidlInfo.uec,
- };
- }
- status.plpInfo(info);
- hidlStatus.push_back(status);
- break;
- }
- default:
- break;
+int32_t FrontendClient::getId() {
+ if (mTunerFrontend != nullptr) {
+ int32_t id;
+ Status s = mTunerFrontend->getFrontendId(&id);
+ if (s.isOk()) {
+ return id;
}
}
- return hidlStatus;
-}
-vector<FrontendStatusExt1_1> FrontendClient::getHidlStatusExt(
- vector<TunerFrontendStatus>& aidlStatus) {
- vector<FrontendStatusExt1_1> hidlStatus;
- for (TunerFrontendStatus s : aidlStatus) {
- FrontendStatusExt1_1 status;
- switch (s.getTag()) {
- case TunerFrontendStatus::modulations: {
- vector<FrontendModulation> ms;
- for (auto aidlMod : s.get<TunerFrontendStatus::modulations>()) {
- FrontendModulation m;
- switch (mType) {
- case (int)FrontendType::DVBC:
- m.dvbc(static_cast<FrontendDvbcModulation>(aidlMod));
- ms.push_back(m);
- break;
- case (int)FrontendType::DVBS:
- m.dvbs(static_cast<FrontendDvbsModulation>(aidlMod));
- ms.push_back(m);
- break;
- case (int)FrontendType::DVBT:
- m.dvbt(static_cast<FrontendDvbtConstellation>(aidlMod));
- ms.push_back(m);
- break;
- case (int)FrontendType::ISDBS:
- m.isdbs(static_cast<FrontendIsdbsModulation>(aidlMod));
- ms.push_back(m);
- break;
- case (int)FrontendType::ISDBS3:
- m.isdbs3(static_cast<FrontendIsdbs3Modulation>(aidlMod));
- ms.push_back(m);
- break;
- case (int)FrontendType::ISDBT:
- m.isdbt(static_cast<FrontendIsdbtModulation>(aidlMod));
- ms.push_back(m);
- break;
- case (int)FrontendType::ATSC:
- m.atsc(static_cast<FrontendAtscModulation>(aidlMod));
- ms.push_back(m);
- break;
- case (int)FrontendType::ATSC3:
- m.atsc3(static_cast<FrontendAtsc3Modulation>(aidlMod));
- ms.push_back(m);
- break;
- case (int)FrontendType::DTMB:
- m.dtmb(static_cast<FrontendDtmbModulation>(aidlMod));
- ms.push_back(m);
- break;
- default:
- break;
- }
- }
- if (ms.size() > 0) {
- status.modulations(ms);
- hidlStatus.push_back(status);
- }
- break;
- }
- case TunerFrontendStatus::bers: {
- auto aidlB = s.get<TunerFrontendStatus::bers>();
- hidl_vec<uint32_t> b(aidlB.begin(), aidlB.end());
- status.bers(b);
- hidlStatus.push_back(status);
- break;
- }
- case TunerFrontendStatus::codeRates: {
- vector<hardware::tv::tuner::V1_1::FrontendInnerFec> codeRates;
- for (auto aidlCodeRate : s.get<TunerFrontendStatus::codeRates>()) {
- codeRates.push_back(
- static_cast<hardware::tv::tuner::V1_1::FrontendInnerFec>(aidlCodeRate));
- }
- if (codeRates.size() > 0) {
- status.codeRates(codeRates);
- hidlStatus.push_back(status);
- }
- break;
- }
- case TunerFrontendStatus::bandwidth: {
- auto aidlBand = s.get<TunerFrontendStatus::bandwidth>();
- FrontendBandwidth band;
- switch (mType) {
- case (int)FrontendType::ATSC3:
- band.atsc3(static_cast<FrontendAtsc3Bandwidth>(aidlBand));
- status.bandwidth(band);
- hidlStatus.push_back(status);
- break;
- case (int)FrontendType::DVBC:
- band.dvbc(static_cast<FrontendDvbcBandwidth>(aidlBand));
- status.bandwidth(band);
- hidlStatus.push_back(status);
- break;
- case (int)FrontendType::DVBT:
- band.dvbt(static_cast<FrontendDvbtBandwidth>(aidlBand));
- status.bandwidth(band);
- hidlStatus.push_back(status);
- break;
- case (int)FrontendType::ISDBT:
- band.isdbt(static_cast<FrontendIsdbtBandwidth>(aidlBand));
- status.bandwidth(band);
- hidlStatus.push_back(status);
- break;
- case (int)FrontendType::DTMB:
- band.dtmb(static_cast<FrontendDtmbBandwidth>(aidlBand));
- status.bandwidth(band);
- hidlStatus.push_back(status);
- break;
- default:
- break;
- }
- break;
- }
- case TunerFrontendStatus::interval: {
- auto aidlInter = s.get<TunerFrontendStatus::interval>();
- FrontendGuardInterval inter;
- switch (mType) {
- case (int)FrontendType::DVBT:
- inter.dvbt(static_cast<FrontendDvbtGuardInterval>(aidlInter));
- status.interval(inter);
- hidlStatus.push_back(status);
- break;
- case (int)FrontendType::ISDBT:
- inter.isdbt(static_cast<FrontendIsdbtGuardInterval>(aidlInter));
- status.interval(inter);
- hidlStatus.push_back(status);
- break;
- case (int)FrontendType::DTMB:
- inter.dtmb(static_cast<FrontendDtmbGuardInterval>(aidlInter));
- status.interval(inter);
- hidlStatus.push_back(status);
- break;
- default:
- break;
- }
- break;
- }
- case TunerFrontendStatus::transmissionMode: {
- auto aidlTran = s.get<TunerFrontendStatus::transmissionMode>();
- FrontendTransmissionMode trans;
- switch (mType) {
- case (int)FrontendType::DVBT:
- trans.dvbt(static_cast<FrontendDvbtTransmissionMode>(aidlTran));
- status.transmissionMode(trans);
- hidlStatus.push_back(status);
- break;
- case (int)FrontendType::ISDBT:
- trans.isdbt(static_cast<FrontendIsdbtMode>(aidlTran));
- status.transmissionMode(trans);
- hidlStatus.push_back(status);
- break;
- case (int)FrontendType::DTMB:
- trans.dtmb(static_cast<FrontendDtmbTransmissionMode>(aidlTran));
- status.transmissionMode(trans);
- hidlStatus.push_back(status);
- break;
- default:
- break;
- }
- break;
- }
- case TunerFrontendStatus::uec: {
- status.uec((uint32_t)s.get<TunerFrontendStatus::uec>());
- hidlStatus.push_back(status);
- break;
- }
- case TunerFrontendStatus::systemId: {
- status.systemId((uint16_t)s.get<TunerFrontendStatus::systemId>());
- hidlStatus.push_back(status);
- break;
- }
- case TunerFrontendStatus::interleaving: {
- vector<FrontendInterleaveMode> modes;
- for (auto aidlInter : s.get<TunerFrontendStatus::interleaving>()) {
- FrontendInterleaveMode mode;
- switch (mType) {
- case (int)FrontendType::DVBC:
- mode.dvbc(static_cast<FrontendCableTimeInterleaveMode>(aidlInter));
- modes.push_back(mode);
- break;
- case (int)FrontendType::ATSC3:
- mode.atsc3(static_cast<FrontendAtsc3TimeInterleaveMode>(aidlInter));
- modes.push_back(mode);
- break;
- case (int)FrontendType::DTMB:
- mode.dtmb(static_cast<FrontendDtmbTimeInterleaveMode>(aidlInter));
- modes.push_back(mode);
- break;
- default:
- break;
- }
- }
- if (modes.size() > 0) {
- status.interleaving(modes);
- hidlStatus.push_back(status);
- }
- break;
- }
- case TunerFrontendStatus::isdbtSegment: {
- auto aidlSeg = s.get<TunerFrontendStatus::isdbtSegment>();
- hidl_vec<uint8_t> s(aidlSeg.begin(), aidlSeg.end());
- status.isdbtSegment(s);
- hidlStatus.push_back(status);
- break;
- }
- case TunerFrontendStatus::tsDataRate: {
- auto aidlTs = s.get<TunerFrontendStatus::tsDataRate>();
- hidl_vec<uint32_t> ts(aidlTs.begin(), aidlTs.end());
- status.tsDataRate(ts);
- hidlStatus.push_back(status);
- break;
- }
- case TunerFrontendStatus::rollOff: {
- auto aidlRoll = s.get<TunerFrontendStatus::rollOff>();
- FrontendRollOff roll;
- switch (mType) {
- case (int)FrontendType::DVBS:
- roll.dvbs(static_cast<FrontendDvbsRolloff>(aidlRoll));
- status.rollOff(roll);
- hidlStatus.push_back(status);
- break;
- case (int)FrontendType::ISDBS:
- roll.isdbs(static_cast<FrontendIsdbsRolloff>(aidlRoll));
- status.rollOff(roll);
- hidlStatus.push_back(status);
- break;
- case (int)FrontendType::ISDBS3:
- roll.isdbs3(static_cast<FrontendIsdbs3Rolloff>(aidlRoll));
- status.rollOff(roll);
- hidlStatus.push_back(status);
- break;
- default:
- break;
- }
- break;
- }
- case TunerFrontendStatus::isMiso: {
- status.isMiso(s.get<TunerFrontendStatus::isMiso>());
- hidlStatus.push_back(status);
- break;
- }
- case TunerFrontendStatus::isLinear: {
- status.isLinear(s.get<TunerFrontendStatus::isLinear>());
- hidlStatus.push_back(status);
- break;
- }
- case TunerFrontendStatus::isShortFrames: {
- status.isShortFrames(s.get<TunerFrontendStatus::isShortFrames>());
- hidlStatus.push_back(status);
- break;
- }
- default:
- break;
- }
- }
- return hidlStatus;
-}
-
-TunerFrontendSettings FrontendClient::getAidlFrontendSettings(const FrontendSettings& settings,
- const FrontendSettingsExt1_1& settingsExt1_1) {
- bool isExtended = validateExtendedSettings(settingsExt1_1);
- TunerFrontendSettings s{
- .isExtended = isExtended,
- .endFrequency = (int) settingsExt1_1.endFrequency,
- .inversion = (int) settingsExt1_1.inversion,
- };
-
- if (settingsExt1_1.settingExt.getDiscriminator()
- == FrontendSettingsExt1_1::SettingsExt::hidl_discriminator::dtmb) {
- s.settings.set<TunerFrontendUnionSettings::dtmb>(getAidlDtmbSettings(settingsExt1_1));
- return s;
- }
-
- switch (settings.getDiscriminator()) {
- case FrontendSettings::hidl_discriminator::analog: {
- s.settings.set<TunerFrontendUnionSettings::analog>(
- getAidlAnalogSettings(settings, settingsExt1_1));
- break;
- }
- case FrontendSettings::hidl_discriminator::atsc: {
- s.settings.set<TunerFrontendUnionSettings::atsc>(getAidlAtscSettings(settings));
- break;
- }
- case FrontendSettings::hidl_discriminator::atsc3: {
- s.settings.set<TunerFrontendUnionSettings::atsc3>(getAidlAtsc3Settings(settings));
- break;
- }
- case FrontendSettings::hidl_discriminator::dvbs: {
- s.settings.set<TunerFrontendUnionSettings::dvbs>(
- getAidlDvbsSettings(settings, settingsExt1_1));
- break;
- }
- case FrontendSettings::hidl_discriminator::dvbc: {
- s.settings.set<TunerFrontendUnionSettings::cable>(
- getAidlCableSettings(settings, settingsExt1_1));
- break;
- }
- case FrontendSettings::hidl_discriminator::dvbt: {
- s.settings.set<TunerFrontendUnionSettings::dvbt>(
- getAidlDvbtSettings(settings, settingsExt1_1));
- break;
- }
- case FrontendSettings::hidl_discriminator::isdbs: {
- s.settings.set<TunerFrontendUnionSettings::isdbs>(getAidlIsdbsSettings(settings));
- break;
- }
- case FrontendSettings::hidl_discriminator::isdbs3: {
- s.settings.set<TunerFrontendUnionSettings::isdbs3>(getAidlIsdbs3Settings(settings));
- break;
- }
- case FrontendSettings::hidl_discriminator::isdbt: {
- s.settings.set<TunerFrontendUnionSettings::isdbt>(getAidlIsdbtSettings(settings));
- break;
- }
- default:
- break;
- }
- return s;
-}
-
-TunerFrontendAnalogSettings FrontendClient::getAidlAnalogSettings(const FrontendSettings& settings,
- const FrontendSettingsExt1_1& settingsExt1_1) {
- TunerFrontendAnalogSettings analogSettings{
- .frequency = (int)settings.analog().frequency,
- .signalType = (int)settings.analog().type,
- .sifStandard = (int)settings.analog().sifStandard,
- };
- if (settingsExt1_1.settingExt.getDiscriminator()
- == FrontendSettingsExt1_1::SettingsExt::hidl_discriminator::analog) {
- analogSettings.isExtended = true;
- analogSettings.aftFlag = (int)settingsExt1_1.settingExt.analog().aftFlag;
- } else {
- analogSettings.isExtended = false;
- }
- return analogSettings;
-}
-
-TunerFrontendDvbsSettings FrontendClient::getAidlDvbsSettings(const FrontendSettings& settings,
- const FrontendSettingsExt1_1& settingsExt1_1) {
- TunerFrontendDvbsSettings dvbsSettings{
- .frequency = (int)settings.dvbs().frequency,
- .modulation = (int)settings.dvbs().modulation,
- .codeRate = {
- .fec = (long)settings.dvbs().coderate.fec,
- .isLinear = settings.dvbs().coderate.isLinear,
- .isShortFrames = settings.dvbs().coderate.isShortFrames,
- .bitsPer1000Symbol = (int)settings.dvbs().coderate.bitsPer1000Symbol,
- },
- .symbolRate = (int)settings.dvbs().symbolRate,
- .rolloff = (int)settings.dvbs().rolloff,
- .pilot = (int)settings.dvbs().pilot,
- .inputStreamId = (int)settings.dvbs().inputStreamId,
- .standard = (int)settings.dvbs().standard,
- .vcm = (int)settings.dvbs().vcmMode,
- };
- if (settingsExt1_1.settingExt.getDiscriminator()
- == FrontendSettingsExt1_1::SettingsExt::hidl_discriminator::dvbs) {
- dvbsSettings.isExtended = true;
- dvbsSettings.scanType = (int)settingsExt1_1.settingExt.dvbs().scanType;
- dvbsSettings.isDiseqcRxMessage = settingsExt1_1.settingExt.dvbs().isDiseqcRxMessage;
- } else {
- dvbsSettings.isExtended = false;
- }
- return dvbsSettings;
-}
-
-TunerFrontendCableSettings FrontendClient::getAidlCableSettings(const FrontendSettings& settings,
- const FrontendSettingsExt1_1& settingsExt1_1) {
- TunerFrontendCableSettings cableSettings{
- .frequency = (int)settings.dvbc().frequency,
- .modulation = (int)settings.dvbc().modulation,
- .innerFec = (long)settings.dvbc().fec,
- .symbolRate = (int)settings.dvbc().symbolRate,
- .outerFec = (int)settings.dvbc().outerFec,
- .annex = (int)settings.dvbc().annex,
- .spectralInversion = (int)settings.dvbc().spectralInversion,
- };
- if (settingsExt1_1.settingExt.getDiscriminator()
- == FrontendSettingsExt1_1::SettingsExt::hidl_discriminator::dvbc) {
- cableSettings.isExtended = true;
- cableSettings.interleaveMode = (int)settingsExt1_1.settingExt.dvbc().interleaveMode;
- cableSettings.bandwidth = (int)settingsExt1_1.settingExt.dvbc().bandwidth;
- } else {
- cableSettings.isExtended = false;
- }
- return cableSettings;
-}
-
-TunerFrontendDvbtSettings FrontendClient::getAidlDvbtSettings(const FrontendSettings& settings,
- const FrontendSettingsExt1_1& settingsExt1_1) {
- TunerFrontendDvbtSettings dvbtSettings{
- .frequency = (int)settings.dvbt().frequency,
- .transmissionMode = (int)settings.dvbt().transmissionMode,
- .bandwidth = (int)settings.dvbt().bandwidth,
- .constellation = (int)settings.dvbt().constellation,
- .hierarchy = (int)settings.dvbt().hierarchy,
- .hpCodeRate = (int)settings.dvbt().hpCoderate,
- .lpCodeRate = (int)settings.dvbt().lpCoderate,
- .guardInterval = (int)settings.dvbt().guardInterval,
- .isHighPriority = settings.dvbt().isHighPriority,
- .standard = (int)settings.dvbt().standard,
- .isMiso = settings.dvbt().isMiso,
- .plpMode = (int)settings.dvbt().plpMode,
- .plpId = (int)settings.dvbt().plpId,
- .plpGroupId = (int)settings.dvbt().plpGroupId,
- };
- if (settingsExt1_1.settingExt.getDiscriminator()
- == FrontendSettingsExt1_1::SettingsExt::hidl_discriminator::dvbt) {
- dvbtSettings.isExtended = true;
- dvbtSettings.constellation = (int)settingsExt1_1.settingExt.dvbt().constellation;
- dvbtSettings.transmissionMode =
- (int)settingsExt1_1.settingExt.dvbt().transmissionMode;
- } else {
- dvbtSettings.isExtended = false;
- }
- return dvbtSettings;
-}
-
-TunerFrontendDtmbSettings FrontendClient::getAidlDtmbSettings(
- const FrontendSettingsExt1_1& settingsExt1_1) {
- TunerFrontendDtmbSettings dtmbSettings{
- .frequency = (int)settingsExt1_1.settingExt.dtmb().frequency,
- .transmissionMode = (int)settingsExt1_1.settingExt.dtmb().transmissionMode,
- .bandwidth = (int)settingsExt1_1.settingExt.dtmb().bandwidth,
- .modulation = (int)settingsExt1_1.settingExt.dtmb().modulation,
- .codeRate = (int)settingsExt1_1.settingExt.dtmb().codeRate,
- .guardInterval = (int)settingsExt1_1.settingExt.dtmb().guardInterval,
- .interleaveMode = (int)settingsExt1_1.settingExt.dtmb().interleaveMode,
- };
- return dtmbSettings;
-}
-
-TunerFrontendAtscSettings FrontendClient::getAidlAtscSettings(const FrontendSettings& settings) {
- TunerFrontendAtscSettings atscSettings{
- .frequency = (int)settings.atsc().frequency,
- .modulation = (int)settings.atsc().modulation,
- };
- return atscSettings;
-}
-
-TunerFrontendAtsc3Settings FrontendClient::getAidlAtsc3Settings(const FrontendSettings& settings) {
- TunerFrontendAtsc3Settings atsc3Settings{
- .frequency = (int)settings.atsc3().frequency,
- .bandwidth = (int)settings.atsc3().bandwidth,
- .demodOutputFormat = (int)settings.atsc3().demodOutputFormat,
- };
- atsc3Settings.plpSettings.resize(settings.atsc3().plpSettings.size());
- for (auto plpSetting : settings.atsc3().plpSettings) {
- atsc3Settings.plpSettings.push_back({
- .plpId = (int)plpSetting.plpId,
- .modulation = (int)plpSetting.modulation,
- .interleaveMode = (int)plpSetting.interleaveMode,
- .codeRate = (int)plpSetting.codeRate,
- .fec = (int)plpSetting.fec,
- });
- }
- return atsc3Settings;
-}
-
-TunerFrontendIsdbsSettings FrontendClient::getAidlIsdbsSettings(const FrontendSettings& settings) {
- TunerFrontendIsdbsSettings isdbsSettings{
- .frequency = (int)settings.isdbs().frequency,
- .streamId = (char16_t)settings.isdbs().streamId,
- .streamIdType = (int)settings.isdbs().streamIdType,
- .modulation = (int)settings.isdbs().modulation,
- .codeRate = (int)settings.isdbs().coderate,
- .symbolRate = (int)settings.isdbs().symbolRate,
- .rolloff = (int)settings.isdbs().rolloff,
- };
- return isdbsSettings;
-}
-
-TunerFrontendIsdbs3Settings FrontendClient::getAidlIsdbs3Settings(
- const FrontendSettings& settings) {
- TunerFrontendIsdbs3Settings isdbs3Settings{
- .frequency = (int)settings.isdbs3().frequency,
- .streamId = (char16_t)settings.isdbs3().streamId,
- .streamIdType = (int)settings.isdbs3().streamIdType,
- .modulation = (int)settings.isdbs3().modulation,
- .codeRate = (int)settings.isdbs3().coderate,
- .symbolRate = (int)settings.isdbs3().symbolRate,
- .rolloff = (int)settings.isdbs3().rolloff,
- };
- return isdbs3Settings;
-}
-
-TunerFrontendIsdbtSettings FrontendClient::getAidlIsdbtSettings(const FrontendSettings& settings) {
- TunerFrontendIsdbtSettings isdbtSettings{
- .frequency = (int)settings.isdbt().frequency,
- .modulation = (int)settings.isdbt().modulation,
- .bandwidth = (int)settings.isdbt().bandwidth,
- .mode = (int)settings.isdbt().mode,
- .codeRate = (int)settings.isdbt().coderate,
- .guardInterval = (int)settings.isdbt().guardInterval,
- .serviceAreaId = (int)settings.isdbt().serviceAreaId,
- };
- return isdbtSettings;
-}
-
-bool FrontendClient::validateExtendedSettings(const FrontendSettingsExt1_1& settingsExt1_1) {
- return settingsExt1_1.endFrequency != (uint32_t)Constant::INVALID_FRONTEND_SETTING_FREQUENCY
- || settingsExt1_1.inversion != FrontendSpectralInversion::UNDEFINED
- || settingsExt1_1.settingExt.getDiscriminator()
- != FrontendSettingsExt1_1::SettingsExt::hidl_discriminator::noinit;
-}
-
-/////////////// TunerFrontendCallback ///////////////////////
-
-TunerFrontendCallback::TunerFrontendCallback(sp<FrontendClientCallback> frontendClientCallback)
- : mFrontendClientCallback(frontendClientCallback) {}
-
-Status TunerFrontendCallback::onEvent(int frontendEventType) {
- if (mFrontendClientCallback != NULL) {
- mFrontendClientCallback->onEvent(static_cast<FrontendEventType>(frontendEventType));
- return Status::ok();
- }
- return Status::fromServiceSpecificError(static_cast<int32_t>(Result::INVALID_STATE));
-}
-
-Status TunerFrontendCallback::onScanMessage(int messageType,
- const TunerFrontendScanMessage& message) {
- if (mFrontendClientCallback != NULL) {
- if (!is1_1ExtendedScanMessage(messageType)) {
- mFrontendClientCallback->onScanMessage(
- static_cast<FrontendScanMessageType>(messageType),
- getHalScanMessage(messageType, message));
- } else {
- mFrontendClientCallback->onScanMessageExt1_1(
- static_cast<FrontendScanMessageTypeExt1_1>(messageType),
- getHalScanMessageExt1_1(messageType, message));
- }
- return Status::ok();
- }
- return Status::fromServiceSpecificError(static_cast<int32_t>(Result::INVALID_STATE));
+ return static_cast<int32_t>(Constant::INVALID_FRONTEND_ID);
}
/////////////// IFrontendCallback ///////////////////////
-
-HidlFrontendCallback::HidlFrontendCallback(sp<FrontendClientCallback> frontendClientCallback)
+TunerFrontendCallback::TunerFrontendCallback(sp<FrontendClientCallback> frontendClientCallback)
: mFrontendClientCallback(frontendClientCallback) {}
-Return<void> HidlFrontendCallback::onEvent(FrontendEventType frontendEventType) {
- if (mFrontendClientCallback != NULL) {
+Status TunerFrontendCallback::onEvent(FrontendEventType frontendEventType) {
+ if (mFrontendClientCallback != nullptr) {
mFrontendClientCallback->onEvent(frontendEventType);
+ return Status::ok();
}
- return Void();
+ return Status::fromServiceSpecificError(static_cast<int32_t>(Result::INVALID_STATE));
}
-Return<void> HidlFrontendCallback::onScanMessage(FrontendScanMessageType type,
- const FrontendScanMessage& message) {
- if (mFrontendClientCallback != NULL) {
- mFrontendClientCallback->onScanMessage(type, message);
+Status TunerFrontendCallback::onScanMessage(FrontendScanMessageType messageType,
+ const FrontendScanMessage& message) {
+ if (mFrontendClientCallback != nullptr) {
+ mFrontendClientCallback->onScanMessage(messageType, message);
+ return Status::ok();
}
- return Void();
+ return Status::fromServiceSpecificError(static_cast<int32_t>(Result::INVALID_STATE));
}
-Return<void> HidlFrontendCallback::onScanMessageExt1_1(FrontendScanMessageTypeExt1_1 type,
- const FrontendScanMessageExt1_1& message) {
- if (mFrontendClientCallback != NULL) {
- mFrontendClientCallback->onScanMessageExt1_1(type, message);
- }
- return Void();
-}
-
-/////////////// FrontendClientCallback Helper Methods ///////////////////////
-
-FrontendScanMessage TunerFrontendCallback::getHalScanMessage(
- int messageType, const TunerFrontendScanMessage& message) {
- FrontendScanMessage scanMessage;
- switch (messageType) {
- case (int) FrontendScanMessageType::LOCKED:
- scanMessage.isLocked(message.get<TunerFrontendScanMessage::isLocked>());
- break;
- case (int) FrontendScanMessageType::END:
- scanMessage.isEnd(message.get<TunerFrontendScanMessage::isEnd>());
- break;
- case (int) FrontendScanMessageType::PROGRESS_PERCENT:
- scanMessage.progressPercent(message.get<TunerFrontendScanMessage::progressPercent>());
- break;
- case (int) FrontendScanMessageType::FREQUENCY: {
- vector<int> f = message.get<TunerFrontendScanMessage::frequencies>();
- hidl_vec<uint32_t> frequencies(begin(f), end(f));
- scanMessage.frequencies(frequencies);
- break;
- }
- case (int) FrontendScanMessageType::SYMBOL_RATE: {
- vector<int> s = message.get<TunerFrontendScanMessage::symbolRates>();
- hidl_vec<uint32_t> symbolRates(begin(s), end(s));
- scanMessage.symbolRates(symbolRates);
- break;
- }
- case (int) FrontendScanMessageType::HIERARCHY:
- scanMessage.hierarchy(static_cast<FrontendDvbtHierarchy>(
- message.get<TunerFrontendScanMessage::hierarchy>()));
- break;
- case (int) FrontendScanMessageType::ANALOG_TYPE:
- scanMessage.analogType(static_cast<FrontendAnalogType>(
- message.get<TunerFrontendScanMessage::analogType>()));
- break;
- case (int) FrontendScanMessageType::PLP_IDS: {
- vector<uint8_t> p = message.get<TunerFrontendScanMessage::plpIds>();
- hidl_vec<uint8_t> plpIds(begin(p), end(p));
- scanMessage.plpIds(plpIds);
- break;
- }
- case (int) FrontendScanMessageType::GROUP_IDS: {
- vector<uint8_t> g = message.get<TunerFrontendScanMessage::groupIds>();
- hidl_vec<uint8_t> groupIds(begin(g), end(g));
- scanMessage.groupIds(groupIds);
- break;
- }
- case (int) FrontendScanMessageType::INPUT_STREAM_IDS: {
- vector<char16_t> i = message.get<TunerFrontendScanMessage::inputStreamIds>();
- hidl_vec<uint16_t> inputStreamIds(begin(i), end(i));
- scanMessage.inputStreamIds(inputStreamIds);
- break;
- }
- case (int) FrontendScanMessageType::STANDARD: {
- FrontendScanMessage::Standard std;
- int standard = message.get<TunerFrontendScanMessage::std>();
- switch (mType) {
- case (int) FrontendType::DVBS:
- std.sStd(static_cast<FrontendDvbsStandard>(standard));
- scanMessage.std(std);
- break;
- case (int) FrontendType::DVBT:
- std.tStd(static_cast<FrontendDvbtStandard>(standard));
- scanMessage.std(std);
- break;
- case (int) FrontendType::ANALOG:
- std.sifStd(static_cast<FrontendAnalogSifStandard>(standard));
- scanMessage.std(std);
- break;
- default:
- break;
- }
- break;
- }
- case (int) FrontendScanMessageType::ATSC3_PLP_INFO: {
- vector<TunerFrontendScanAtsc3PlpInfo> plp =
- message.get<TunerFrontendScanMessage::atsc3PlpInfos>();
- hidl_vec<FrontendScanAtsc3PlpInfo> plpInfo;
- int size = plp.size();
- plpInfo.resize(size);
- for (int i = 0; i < size; i++) {
- auto info = message.get<TunerFrontendScanMessage::atsc3PlpInfos>()[i];
- FrontendScanAtsc3PlpInfo p{
- .plpId = static_cast<uint8_t>(info.plpId),
- .bLlsFlag = info.llsFlag,
- };
- plpInfo[i] = p;
- }
- scanMessage.atsc3PlpInfos(plpInfo);
- break;
- }
- default:
- break;
- }
- return scanMessage;
-}
-
-FrontendScanMessageExt1_1 TunerFrontendCallback::getHalScanMessageExt1_1(
- int messageType, const TunerFrontendScanMessage& message) {
- FrontendScanMessageExt1_1 scanMessage;
- switch (messageType) {
- case (int) FrontendScanMessageTypeExt1_1::HIGH_PRIORITY:
- scanMessage.isHighPriority(message.get<TunerFrontendScanMessage::isHighPriority>());
- break;
- case (int) FrontendScanMessageTypeExt1_1::DVBC_ANNEX:
- scanMessage.annex(static_cast<FrontendDvbcAnnex>(
- message.get<TunerFrontendScanMessage::annex>()));
- break;
- case (int) FrontendScanMessageTypeExt1_1::MODULATION: {
- FrontendModulation m;
- int modulation = message.get<TunerFrontendScanMessage::modulation>();
- switch (mType) {
- case (int) FrontendType::DVBC:
- m.dvbc(static_cast<FrontendDvbcModulation>(modulation));
- scanMessage.modulation(m);
- break;
- case (int) FrontendType::DVBS:
- m.dvbs(static_cast<FrontendDvbsModulation>(modulation));
- scanMessage.modulation(m);
- break;
- case (int) FrontendType::DVBT:
- m.dvbt(static_cast<FrontendDvbtConstellation>(modulation));
- scanMessage.modulation(m);
- break;
- case (int) FrontendType::ISDBS:
- m.isdbs(static_cast<FrontendIsdbsModulation>(modulation));
- scanMessage.modulation(m);
- break;
- case (int) FrontendType::ISDBS3:
- m.isdbs3(static_cast<FrontendIsdbs3Modulation>(modulation));
- scanMessage.modulation(m);
- break;
- case (int) FrontendType::ISDBT:
- m.isdbt(static_cast<FrontendIsdbtModulation>(modulation));
- scanMessage.modulation(m);
- break;
- case (int) FrontendType::ATSC:
- m.atsc(static_cast<FrontendAtscModulation>(modulation));
- scanMessage.modulation(m);
- break;
- case (int) FrontendType::ATSC3:
- m.atsc3(static_cast<FrontendAtsc3Modulation>(modulation));
- scanMessage.modulation(m);
- break;
- case (int) hardware::tv::tuner::V1_1::FrontendType::DTMB:
- m.dtmb(static_cast<FrontendDtmbModulation>(modulation));
- scanMessage.modulation(m);
- break;
- default:
- break;
- }
- break;
- }
- default:
- break;
- }
- return scanMessage;
-}
-
-bool TunerFrontendCallback::is1_1ExtendedScanMessage(int messageType) {
- return messageType >= (int)FrontendScanMessageTypeExt1_1::MODULATION
- && messageType <= (int)FrontendScanMessageTypeExt1_1::HIGH_PRIORITY;
-}
} // namespace android