Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ad2a2ead authored by Hongguang Chen's avatar Hongguang Chen Committed by Android (Google) Code Review
Browse files

Merge "Check discriminator before accessing FrontendCapabilities information." into sc-dev

parents fa72c380 191084fc
Loading
Loading
Loading
Loading
+88 −60
Original line number Diff line number Diff line
@@ -445,52 +445,70 @@ TunerFrontendInfo TunerService::convertToAidlFrontendInfo(FrontendInfo halInfo)
    TunerFrontendCapabilities caps;
    switch (halInfo.type) {
        case FrontendType::ANALOG: {
            if (FrontendInfo::FrontendCapabilities::hidl_discriminator::analogCaps
                    == halInfo.frontendCaps.getDiscriminator()) {
                TunerFrontendAnalogCapabilities analogCaps{
                    .typeCap = (int)halInfo.frontendCaps.analogCaps().typeCap,
                    .sifStandardCap = (int)halInfo.frontendCaps.analogCaps().sifStandardCap,
                };
                caps.set<TunerFrontendCapabilities::analogCaps>(analogCaps);
            }
            break;
        }
        case FrontendType::ATSC: {
            if (FrontendInfo::FrontendCapabilities::hidl_discriminator::atscCaps
                    == halInfo.frontendCaps.getDiscriminator()) {
                TunerFrontendAtscCapabilities atscCaps{
                    .modulationCap = (int)halInfo.frontendCaps.atscCaps().modulationCap,
                };
                caps.set<TunerFrontendCapabilities::atscCaps>(atscCaps);
            }
            break;
        }
        case FrontendType::ATSC3: {
            if (FrontendInfo::FrontendCapabilities::hidl_discriminator::atsc3Caps
                    == halInfo.frontendCaps.getDiscriminator()) {
                TunerFrontendAtsc3Capabilities atsc3Caps{
                    .bandwidthCap = (int)halInfo.frontendCaps.atsc3Caps().bandwidthCap,
                    .modulationCap = (int)halInfo.frontendCaps.atsc3Caps().modulationCap,
                    .timeInterleaveModeCap =
                            (int)halInfo.frontendCaps.atsc3Caps().timeInterleaveModeCap,
                    .codeRateCap = (int)halInfo.frontendCaps.atsc3Caps().codeRateCap,
                .demodOutputFormatCap = (int)halInfo.frontendCaps.atsc3Caps().demodOutputFormatCap,
                    .demodOutputFormatCap
                        = (int)halInfo.frontendCaps.atsc3Caps().demodOutputFormatCap,
                    .fecCap = (int)halInfo.frontendCaps.atsc3Caps().fecCap,
                };
                caps.set<TunerFrontendCapabilities::atsc3Caps>(atsc3Caps);
            }
            break;
        }
        case FrontendType::DVBC: {
            if (FrontendInfo::FrontendCapabilities::hidl_discriminator::dvbcCaps
                    == halInfo.frontendCaps.getDiscriminator()) {
                TunerFrontendCableCapabilities cableCaps{
                    .modulationCap = (int)halInfo.frontendCaps.dvbcCaps().modulationCap,
                    .codeRateCap = (int64_t)halInfo.frontendCaps.dvbcCaps().fecCap,
                    .annexCap = (int)halInfo.frontendCaps.dvbcCaps().annexCap,
                };
                caps.set<TunerFrontendCapabilities::cableCaps>(cableCaps);
            }
            break;
        }
        case FrontendType::DVBS: {
            if (FrontendInfo::FrontendCapabilities::hidl_discriminator::dvbsCaps
                    == halInfo.frontendCaps.getDiscriminator()) {
                TunerFrontendDvbsCapabilities dvbsCaps{
                    .modulationCap = (int)halInfo.frontendCaps.dvbsCaps().modulationCap,
                    .codeRateCap = (long)halInfo.frontendCaps.dvbsCaps().innerfecCap,
                    .standard = (int)halInfo.frontendCaps.dvbsCaps().standard,
                };
                caps.set<TunerFrontendCapabilities::dvbsCaps>(dvbsCaps);
            }
            break;
        }
        case FrontendType::DVBT: {
            if (FrontendInfo::FrontendCapabilities::hidl_discriminator::dvbtCaps
                    == halInfo.frontendCaps.getDiscriminator()) {
                TunerFrontendDvbtCapabilities dvbtCaps{
                    .transmissionModeCap = (int)halInfo.frontendCaps.dvbtCaps().transmissionModeCap,
                    .bandwidthCap = (int)halInfo.frontendCaps.dvbtCaps().bandwidthCap,
@@ -502,25 +520,34 @@ TunerFrontendInfo TunerService::convertToAidlFrontendInfo(FrontendInfo halInfo)
                    .isMisoSupported = (bool)halInfo.frontendCaps.dvbtCaps().isMisoSupported,
                };
                caps.set<TunerFrontendCapabilities::dvbtCaps>(dvbtCaps);
            }
            break;
        }
        case FrontendType::ISDBS: {
            if (FrontendInfo::FrontendCapabilities::hidl_discriminator::isdbsCaps
                    == halInfo.frontendCaps.getDiscriminator()) {
                TunerFrontendIsdbsCapabilities isdbsCaps{
                    .modulationCap = (int)halInfo.frontendCaps.isdbsCaps().modulationCap,
                    .codeRateCap = (int)halInfo.frontendCaps.isdbsCaps().coderateCap,
                };
                caps.set<TunerFrontendCapabilities::isdbsCaps>(isdbsCaps);
            }
            break;
        }
        case FrontendType::ISDBS3: {
            if (FrontendInfo::FrontendCapabilities::hidl_discriminator::isdbs3Caps
                    == halInfo.frontendCaps.getDiscriminator()) {
                TunerFrontendIsdbs3Capabilities isdbs3Caps{
                    .modulationCap = (int)halInfo.frontendCaps.isdbs3Caps().modulationCap,
                    .codeRateCap = (int)halInfo.frontendCaps.isdbs3Caps().coderateCap,
                };
                caps.set<TunerFrontendCapabilities::isdbs3Caps>(isdbs3Caps);
            }
            break;
        }
        case FrontendType::ISDBT: {
            if (FrontendInfo::FrontendCapabilities::hidl_discriminator::isdbtCaps
                    == halInfo.frontendCaps.getDiscriminator()) {
                TunerFrontendIsdbtCapabilities isdbtCaps{
                    .modeCap = (int)halInfo.frontendCaps.isdbtCaps().modeCap,
                    .bandwidthCap = (int)halInfo.frontendCaps.isdbtCaps().bandwidthCap,
@@ -529,6 +556,7 @@ TunerFrontendInfo TunerService::convertToAidlFrontendInfo(FrontendInfo halInfo)
                    .guardIntervalCap = (int)halInfo.frontendCaps.isdbtCaps().guardIntervalCap,
                };
                caps.set<TunerFrontendCapabilities::isdbtCaps>(isdbtCaps);
            }
            break;
        }
        default: