Merge "Connect getStatus/getStatusExt between TunerFrontend and FrontendClient" into sc-dev

This commit is contained in:
Amy Zhang
2021-02-05 18:28:36 +00:00
committed by Android (Google) Code Review
3 changed files with 458 additions and 24 deletions

View File

@@ -35,7 +35,7 @@ using ::aidl::android::media::tv::tuner::TunerFilterSectionTableInfo;
using ::aidl::android::media::tv::tuner::TunerFilterSharedHandleInfo;
using ::aidl::android::media::tv::tuner::TunerFilterTlvConfiguration;
using ::aidl::android::media::tv::tuner::TunerFilterTsConfiguration;
using ::android::hardware::hidl_vec;
using ::android::hardware::tv::tuner::V1_0::DemuxFilterMainType;
using ::android::hardware::tv::tuner::V1_0::DemuxMmtpFilterType;
using ::android::hardware::tv::tuner::V1_0::DemuxQueueNotifyBits;
@@ -703,10 +703,10 @@ void TunerFilterCallback::getHidlFilterEvent(const vector<TunerFilterEvent>& fil
void TunerFilterCallback::getHidlMediaEvent(
const vector<TunerFilterEvent>& filterEvents, DemuxFilterEvent& event) {
event.events.resize(filterEvents.size());
for (int i = 0; i < filterEvents.size(); i++) {
hidl_handle handle = hidl_handle(makeFromAidl(filterEvents[i]
.get<TunerFilterEvent::media>().avMemory));
event.events.resize(i + 1);
event.events[i].media({
.avMemory = handle,
.streamId = static_cast<DemuxStreamId>(filterEvents[i]
@@ -752,9 +752,9 @@ void TunerFilterCallback::getHidlMediaEvent(
void TunerFilterCallback::getHidlSectionEvent(
const vector<TunerFilterEvent>& filterEvents, DemuxFilterEvent& event) {
event.events.resize(filterEvents.size());
for (int i = 0; i < filterEvents.size(); i++) {
auto section = filterEvents[i].get<TunerFilterEvent::section>();
event.events.resize(i + 1);
event.events[i].section({
.tableId = static_cast<uint16_t>(section.tableId),
.version = static_cast<uint16_t>(section.version),
@@ -766,9 +766,9 @@ void TunerFilterCallback::getHidlSectionEvent(
void TunerFilterCallback::getHidlPesEvent(
const vector<TunerFilterEvent>& filterEvents, DemuxFilterEvent& event) {
event.events.resize(filterEvents.size());
for (int i = 0; i < filterEvents.size(); i++) {
auto pes = filterEvents[i].get<TunerFilterEvent::pes>();
event.events.resize(i + 1);
event.events[i].pes({
.streamId = static_cast<DemuxStreamId>(pes.streamId),
.dataLength = static_cast<uint16_t>(pes.dataLength),
@@ -779,9 +779,10 @@ void TunerFilterCallback::getHidlPesEvent(
void TunerFilterCallback::getHidlTsRecordEvent(const vector<TunerFilterEvent>& filterEvents,
DemuxFilterEvent& event, DemuxFilterEventExt& eventExt) {
event.events.resize(filterEvents.size());
eventExt.events.resize(filterEvents.size());
for (int i = 0; i < filterEvents.size(); i++) {
auto ts = filterEvents[i].get<TunerFilterEvent::tsRecord>();
event.events.resize(i + 1);
event.events[i].tsRecord({
.tsIndexMask = static_cast<uint32_t>(ts.tsIndexMask),
.byteNumber = static_cast<uint64_t>(ts.byteNumber),
@@ -803,7 +804,6 @@ void TunerFilterCallback::getHidlTsRecordEvent(const vector<TunerFilterEvent>& f
break;
}
eventExt.events.resize(i + 1);
if (ts.isExtended) {
eventExt.events[i].tsRecord({
.pts = static_cast<uint64_t>(ts.pts),
@@ -817,15 +817,15 @@ void TunerFilterCallback::getHidlTsRecordEvent(const vector<TunerFilterEvent>& f
void TunerFilterCallback::getHidlMmtpRecordEvent(const vector<TunerFilterEvent>& filterEvents,
DemuxFilterEvent& event, DemuxFilterEventExt& eventExt) {
event.events.resize(filterEvents.size());
eventExt.events.resize(filterEvents.size());
for (int i = 0; i < filterEvents.size(); i++) {
auto mmtp = filterEvents[i].get<TunerFilterEvent::mmtpRecord>();
event.events.resize(i + 1);
event.events[i].mmtpRecord({
.scHevcIndexMask = static_cast<uint32_t>(mmtp.scHevcIndexMask),
.byteNumber = static_cast<uint64_t>(mmtp.byteNumber),
});
eventExt.events.resize(i + 1);
if (mmtp.isExtended) {
eventExt.events[i].mmtpRecord({
.pts = static_cast<uint64_t>(mmtp.pts),
@@ -841,9 +841,9 @@ void TunerFilterCallback::getHidlMmtpRecordEvent(const vector<TunerFilterEvent>&
void TunerFilterCallback::getHidlDownloadEvent(const vector<TunerFilterEvent>& filterEvents,
DemuxFilterEvent& event) {
event.events.resize(filterEvents.size());
for (int i = 0; i < filterEvents.size(); i++) {
auto download = filterEvents[i].get<TunerFilterEvent::download>();
event.events.resize(i + 1);
event.events[i].download({
.itemId = static_cast<uint32_t>(download.itemId),
.mpuSequenceNumber = static_cast<uint32_t>(download.mpuSequenceNumber),
@@ -856,9 +856,9 @@ void TunerFilterCallback::getHidlDownloadEvent(const vector<TunerFilterEvent>& f
void TunerFilterCallback::getHidlIpPayloadEvent(const vector<TunerFilterEvent>& filterEvents,
DemuxFilterEvent& event) {
event.events.resize(filterEvents.size());
for (int i = 0; i < filterEvents.size(); i++) {
auto ip = filterEvents[i].get<TunerFilterEvent::ipPayload>();
event.events.resize(i + 1);
event.events[i].ipPayload({
.dataLength = static_cast<uint16_t>(ip.dataLength),
});
@@ -867,15 +867,15 @@ void TunerFilterCallback::getHidlIpPayloadEvent(const vector<TunerFilterEvent>&
void TunerFilterCallback::getHidlTemiEvent(const vector<TunerFilterEvent>& filterEvents,
DemuxFilterEvent& event) {
event.events.resize(filterEvents.size());
for (int i = 0; i < filterEvents.size(); i++) {
auto temi = filterEvents[i].get<TunerFilterEvent::temi>();
event.events.resize(i + 1);
event.events[i].temi({
.pts = static_cast<uint64_t>(temi.pts),
.descrTag = static_cast<uint8_t>(temi.descrTag),
});
vector<uint8_t> descrData(temi.descrData.size());
copy(temi.descrData.begin(), temi.descrData.end(), descrData.begin());
hidl_vec<uint8_t> descrData(temi.descrData.begin(), temi.descrData.end());
event.events[i].temi().descrData = descrData;
}
}

View File

@@ -27,23 +27,43 @@ 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::FrontendScanAtsc3PlpInfo;
using ::android::hardware::tv::tuner::V1_0::FrontendType;
using ::android::hardware::tv::tuner::V1_0::LnbVoltage;
using ::android::hardware::tv::tuner::V1_1::Constant;
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::FrontendModulation;
using ::android::hardware::tv::tuner::V1_1::FrontendSpectralInversion;
using ::android::hardware::tv::tuner::V1_1::FrontendType;
namespace android {
@@ -160,9 +180,16 @@ vector<FrontendStatus> FrontendClient::getStatus(vector<FrontendStatusType> stat
vector<FrontendStatus> status;
if (mTunerFrontend != NULL) {
// TODO: handle error message.
/*status = mTunerFrontend->getStatus(statusTypes);
return status;*/
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) {
@@ -180,14 +207,22 @@ vector<FrontendStatus> FrontendClient::getStatus(vector<FrontendStatusType> stat
return status;
}
vector<FrontendStatusExt1_1> FrontendClient::getStatusExtended_1_1(
vector<FrontendStatusTypeExt1_1> statusTypes) {
vector<FrontendStatusExt1_1> status;
if (mTunerFrontend != NULL) {
// TODO: handle error message.
/*status = mTunerFrontend->getStatusExtended_1_1(statusTypes);
return status;*/
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) {
@@ -302,6 +337,400 @@ int FrontendClient::getId() {
return mId;
}
vector<FrontendStatus> FrontendClient::getHidlStatus(vector<TunerFrontendStatus>& aidlStatus) {
vector<FrontendStatus> hidlStatus;
for (TunerFrontendStatus s : aidlStatus) {
FrontendStatus status;
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>();
switch (mType) {
case (int)FrontendType::DVBC:
status.modulation().dvbc(static_cast<FrontendDvbcModulation>(aidlMod));
hidlStatus.push_back(status);
break;
case (int)FrontendType::DVBS:
status.modulation().dvbs(static_cast<FrontendDvbsModulation>(aidlMod));
hidlStatus.push_back(status);
break;
case (int)FrontendType::ISDBS:
status.modulation().isdbs(static_cast<FrontendIsdbsModulation>(aidlMod));
hidlStatus.push_back(status);
break;
case (int)FrontendType::ISDBS3:
status.modulation().isdbs3(static_cast<FrontendIsdbs3Modulation>(aidlMod));
hidlStatus.push_back(status);
break;
case (int)FrontendType::ISDBT:
status.modulation().isdbt(static_cast<FrontendIsdbtModulation>(aidlMod));
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::freqOffset>()));
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();
status.plpInfo().resize(size);
for (int i = 0; i < size; i++) {
auto aidlInfo = s.get<TunerFrontendStatus::plpInfo>()[i];
status.plpInfo()[i] = {
.plpId = (uint8_t)aidlInfo.plpId,
.isLocked = aidlInfo.isLocked,
.uec = (uint32_t)aidlInfo.uec,
};
}
hidlStatus.push_back(status);
break;
}
default:
break;
}
}
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: {
for (auto aidlMod : s.get<TunerFrontendStatus::modulations>()) {
int size = status.modulations().size();
status.modulations().resize(size + 1);
switch (mType) {
case (int)FrontendType::DVBC:
status.modulations()[size].dvbc(
static_cast<FrontendDvbcModulation>(aidlMod));
break;
case (int)FrontendType::DVBS:
status.modulations()[size].dvbs(
static_cast<FrontendDvbsModulation>(aidlMod));
break;
case (int)FrontendType::DVBT:
status.modulations()[size].dvbt(
static_cast<FrontendDvbtConstellation>(aidlMod));
break;
case (int)FrontendType::ISDBS:
status.modulations()[size].isdbs(
static_cast<FrontendIsdbsModulation>(aidlMod));
break;
case (int)FrontendType::ISDBS3:
status.modulations()[size].isdbs3(
static_cast<FrontendIsdbs3Modulation>(aidlMod));
break;
case (int)FrontendType::ISDBT:
status.modulations()[size].isdbt(
static_cast<FrontendIsdbtModulation>(aidlMod));
break;
case (int)FrontendType::ATSC:
status.modulations()[size].atsc(
static_cast<FrontendAtscModulation>(aidlMod));
break;
case (int)FrontendType::ATSC3:
status.modulations()[size].atsc3(
static_cast<FrontendAtsc3Modulation>(aidlMod));
break;
case (int)FrontendType::DTMB:
status.modulations()[size].dtmb(
static_cast<FrontendDtmbModulation>(aidlMod));
break;
default:
status.modulations().resize(size);
break;
}
}
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: {
int size = s.get<TunerFrontendStatus::codeRates>().size();
status.codeRates().resize(size);
for (int i = 0; i < size; i++) {
auto aidlCodeRate = s.get<TunerFrontendStatus::codeRates>()[i];
status.codeRates()[i] =
static_cast<hardware::tv::tuner::V1_1::FrontendInnerFec>(aidlCodeRate);
}
hidlStatus.push_back(status);
break;
}
case TunerFrontendStatus::bandwidth: {
auto aidlBand = s.get<TunerFrontendStatus::bandwidth>();
switch (mType) {
case (int)FrontendType::ATSC3:
status.bandwidth().atsc3(static_cast<FrontendAtsc3Bandwidth>(aidlBand));
hidlStatus.push_back(status);
break;
case (int)FrontendType::DVBC:
status.bandwidth().dvbc(static_cast<FrontendDvbcBandwidth>(aidlBand));
hidlStatus.push_back(status);
break;
case (int)FrontendType::DVBT:
status.bandwidth().dvbt(static_cast<FrontendDvbtBandwidth>(aidlBand));
hidlStatus.push_back(status);
break;
case (int)FrontendType::ISDBT:
status.bandwidth().isdbt(static_cast<FrontendIsdbtBandwidth>(aidlBand));
hidlStatus.push_back(status);
break;
case (int)FrontendType::DTMB:
status.bandwidth().dtmb(static_cast<FrontendDtmbBandwidth>(aidlBand));
hidlStatus.push_back(status);
break;
default:
break;
}
break;
}
case TunerFrontendStatus::interval: {
auto aidlInter = s.get<TunerFrontendStatus::interval>();
switch (mType) {
case (int)FrontendType::DVBT:
status.interval().dvbt(static_cast<FrontendDvbtGuardInterval>(aidlInter));
hidlStatus.push_back(status);
break;
case (int)FrontendType::ISDBT:
status.interval().isdbt(static_cast<FrontendIsdbtGuardInterval>(aidlInter));
hidlStatus.push_back(status);
break;
case (int)FrontendType::DTMB:
status.interval().dtmb(static_cast<FrontendDtmbGuardInterval>(aidlInter));
hidlStatus.push_back(status);
break;
default:
break;
}
break;
}
case TunerFrontendStatus::transmissionMode: {
auto aidlTran = s.get<TunerFrontendStatus::transmissionMode>();
switch (mType) {
case (int)FrontendType::DVBT:
status.transmissionMode().dvbt(
static_cast<FrontendDvbtTransmissionMode>(aidlTran));
hidlStatus.push_back(status);
break;
case (int)FrontendType::ISDBT:
status.transmissionMode().isdbt(static_cast<FrontendIsdbtMode>(aidlTran));
hidlStatus.push_back(status);
break;
case (int)FrontendType::DTMB:
status.transmissionMode().dtmb(
static_cast<FrontendDtmbTransmissionMode>(aidlTran));
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: {
for (auto aidlInter : s.get<TunerFrontendStatus::interleaving>()) {
int size = status.interleaving().size();
status.interleaving().resize(size + 1);
switch (mType) {
case (int)FrontendType::DVBC:
status.interleaving()[size].dvbc(
static_cast<FrontendCableTimeInterleaveMode>(aidlInter));
break;
case (int)FrontendType::ATSC3:
status.interleaving()[size].atsc3(
static_cast<FrontendAtsc3TimeInterleaveMode>(aidlInter));
break;
case (int)FrontendType::DTMB:
status.interleaving()[size].dtmb(
static_cast<FrontendDtmbTimeInterleaveMode>(aidlInter));
break;
default:
status.interleaving().resize(size);
break;
}
}
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>();
switch (mType) {
case (int)FrontendType::DVBS:
status.rollOff().dvbs(static_cast<FrontendDvbsRolloff>(aidlRoll));
hidlStatus.push_back(status);
break;
case (int)FrontendType::ISDBS:
status.rollOff().isdbs(static_cast<FrontendIsdbsRolloff>(aidlRoll));
hidlStatus.push_back(status);
break;
case (int)FrontendType::ISDBS3:
status.rollOff().isdbs3(static_cast<FrontendIsdbs3Rolloff>(aidlRoll));
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);
@@ -686,14 +1115,15 @@ FrontendScanMessage TunerFrontendCallback::getHalScanMessage(
vector<TunerFrontendScanAtsc3PlpInfo> plp =
message.get<TunerFrontendScanMessage::atsc3PlpInfos>();
hidl_vec<FrontendScanAtsc3PlpInfo> plpInfo;
for (TunerFrontendScanAtsc3PlpInfo info : plp) {
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,
};
int size = plpInfo.size();
plpInfo.resize(size + 1);
plpInfo[size] = p;
plpInfo[i] = p;
}
scanMessage.atsc3PlpInfos(plpInfo);
break;

View File

@@ -43,6 +43,7 @@ using ::aidl::android::media::tv::tuner::TunerFrontendIsdbs3Settings;
using ::aidl::android::media::tv::tuner::TunerFrontendIsdbtSettings;
using ::aidl::android::media::tv::tuner::TunerFrontendScanMessage;
using ::aidl::android::media::tv::tuner::TunerFrontendSettings;
using ::aidl::android::media::tv::tuner::TunerFrontendStatus;
using ::android::hardware::Return;
using ::android::hardware::Void;
@@ -182,6 +183,9 @@ public:
int getId();
private:
vector<FrontendStatus> getHidlStatus(vector<TunerFrontendStatus>& aidlStatus);
vector<FrontendStatusExt1_1> getHidlStatusExt(vector<TunerFrontendStatus>& aidlStatus);
TunerFrontendSettings getAidlFrontendSettings(
const FrontendSettings& settings, const FrontendSettingsExt1_1& settingsExt1_1);
TunerFrontendAnalogSettings getAidlAnalogSettings(