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

Commit 33750d29 authored by Amy Zhang's avatar Amy Zhang Committed by Android (Google) Code Review
Browse files

Merge "Add more Frontend Status Caps and frontend types in Tuner default impl" into sc-dev

parents d21cabe7 7394e62c
Loading
Loading
Loading
Loading
+212 −18
Original line number Diff line number Diff line
@@ -196,10 +196,40 @@ Return<void> Frontend::getStatus(const hidl_vec<FrontendStatusType>& statusTypes
            }
            case FrontendStatusType::MODULATION: {
                FrontendModulationStatus modulationStatus;
                modulationStatus.isdbs(FrontendIsdbsModulation::MOD_BPSK);  // value = 1 << 1
                switch (mType) {
                    case FrontendType::ISDBS: {
                        modulationStatus.isdbs(
                                FrontendIsdbsModulation::MOD_BPSK);  // value = 1 << 1
                        status.modulation(modulationStatus);
                        break;
                    }
                    case FrontendType::DVBC: {
                        modulationStatus.dvbc(FrontendDvbcModulation::MOD_16QAM);  // value = 1 << 1
                        status.modulation(modulationStatus);
                        break;
                    }
                    case FrontendType::DVBS: {
                        modulationStatus.dvbs(FrontendDvbsModulation::MOD_QPSK);  // value = 1 << 1
                        status.modulation(modulationStatus);
                        break;
                    }
                    case FrontendType::ISDBS3: {
                        modulationStatus.isdbs3(
                                FrontendIsdbs3Modulation::MOD_BPSK);  // value = 1 << 1
                        status.modulation(modulationStatus);
                        break;
                    }
                    case FrontendType::ISDBT: {
                        modulationStatus.isdbt(
                                FrontendIsdbtModulation::MOD_DQPSK);  // value = 1 << 1
                        status.modulation(modulationStatus);
                        break;
                    }
                    default:
                        break;
                }
                break;
            }
            case FrontendStatusType::SPECTRAL: {
                status.inversion(FrontendDvbcSpectralInversion::NORMAL);
                break;
@@ -282,17 +312,72 @@ Return<void> Frontend::getStatusExt1_1(const hidl_vec<V1_1::FrontendStatusTypeEx
        V1_1::FrontendStatusTypeExt1_1 type = statusTypes[i];
        V1_1::FrontendStatusExt1_1 status;

        // assign randomly selected values for testing.
        // TODO: assign status values according to the frontend type
        switch (type) {
            case V1_1::FrontendStatusTypeExt1_1::MODULATIONS: {
                vector<V1_1::FrontendModulation> modulations;
                V1_1::FrontendModulation modulation;
                switch ((int)mType) {
                    case (int)FrontendType::ISDBS: {
                        modulation.isdbs(FrontendIsdbsModulation::MOD_BPSK);  // value = 1 << 1
                        modulations.push_back(modulation);
                        status.modulations(modulations);
                        break;
                    }
                    case (int)FrontendType::DVBC: {
                        modulation.dvbc(FrontendDvbcModulation::MOD_16QAM);  // value = 1 << 1
                        modulations.push_back(modulation);
                        status.modulations(modulations);
                        break;
                    }
                    case (int)FrontendType::DVBS: {
                        modulation.dvbs(FrontendDvbsModulation::MOD_QPSK);  // value = 1 << 1
                        modulations.push_back(modulation);
                        status.modulations(modulations);
                        break;
                    }
                    case (int)FrontendType::DVBT: {
                        // value = 1 << 16
                        modulation.dvbt(V1_1::FrontendDvbtConstellation::CONSTELLATION_16QAM_R);
                        modulations.push_back(modulation);
                        status.modulations(modulations);
                        break;
                    }
                    case (int)FrontendType::ISDBS3: {
                        modulation.isdbs3(FrontendIsdbs3Modulation::MOD_BPSK);  //  value = 1 << 1
                        modulations.push_back(modulation);
                        status.modulations(modulations);
                        break;
                    }
                    case (int)FrontendType::ISDBT: {
                        modulation.isdbt(FrontendIsdbtModulation::MOD_DQPSK);  // value = 1 << 1
                        modulations.push_back(modulation);
                        status.modulations(modulations);
                        break;
                    }
                    case (int)FrontendType::ATSC: {
                        modulation.atsc(FrontendAtscModulation::MOD_8VSB);  // value = 1 << 2
                        modulations.push_back(modulation);
                        status.modulations(modulations);
                        break;
                    }
                    case (int)FrontendType::ATSC3: {
                        modulation.atsc3(FrontendAtsc3Modulation::MOD_QPSK);  // value = 1 << 1
                        modulations.push_back(modulation);
                        status.modulations(modulations);
                        break;
                    }
                    case (int)V1_1::FrontendType::DTMB: {
                        // value = 1 << 1
                        modulation.dtmb(V1_1::FrontendDtmbModulation::CONSTELLATION_4QAM);
                        modulations.push_back(modulation);
                        status.modulations(modulations);
                        break;
                    }
                    default:
                        break;
                }
                break;
            }
            case V1_1::FrontendStatusTypeExt1_1::BERS: {
                vector<uint32_t> bers = {1};
                status.bers(bers);
@@ -306,22 +391,88 @@ Return<void> Frontend::getStatusExt1_1(const hidl_vec<V1_1::FrontendStatusTypeEx
            }
            case V1_1::FrontendStatusTypeExt1_1::BANDWIDTH: {
                V1_1::FrontendBandwidth bandwidth;
                switch ((int)mType) {
                    case (int)FrontendType::DVBC: {
                        // value = 1 << 1
                        bandwidth.dvbc(V1_1::FrontendDvbcBandwidth::BANDWIDTH_6MHZ);
                        status.bandwidth(bandwidth);
                        break;
                    }
                    case (int)FrontendType::DVBT: {
                        // value = 1 << 1
                        bandwidth.dvbt(FrontendDvbtBandwidth::BANDWIDTH_8MHZ);
                        status.bandwidth(bandwidth);
                        break;
                    }
                    case (int)FrontendType::ISDBT: {
                        bandwidth.isdbt(FrontendIsdbtBandwidth::BANDWIDTH_8MHZ);  // value = 1 << 1
                        status.bandwidth(bandwidth);
                        break;
                    }
                    case (int)FrontendType::ATSC3: {
                        bandwidth.atsc3(FrontendAtsc3Bandwidth::BANDWIDTH_6MHZ);  // value = 1 << 1
                        status.bandwidth(bandwidth);
                        break;
                    }
                    case (int)V1_1::FrontendType::DTMB: {
                        // value = 1 << 1
                        bandwidth.dtmb(V1_1::FrontendDtmbBandwidth::BANDWIDTH_8MHZ);
                        status.bandwidth(bandwidth);
                        break;
                    }
                    default:
                        break;
                }
                break;
            }
            case V1_1::FrontendStatusTypeExt1_1::GUARD_INTERVAL: {
                V1_1::FrontendGuardInterval interval;
                switch ((int)mType) {
                    case (int)FrontendType::DVBT: {
                        interval.dvbt(FrontendDvbtGuardInterval::INTERVAL_1_32);  // value = 1 << 1
                        status.interval(interval);
                        break;
                    }
                    case (int)FrontendType::ISDBT: {
                        interval.isdbt(FrontendDvbtGuardInterval::INTERVAL_1_32);  // value = 1 << 1
                        status.interval(interval);
                        break;
                    }
                    case (int)V1_1::FrontendType::DTMB: {
                        // value = 1 << 1
                        interval.dtmb(V1_1::FrontendDtmbGuardInterval::PN_420_VARIOUS);
                        status.interval(interval);
                        break;
                    }
                    default:
                        break;
                }
                break;
            }
            case V1_1::FrontendStatusTypeExt1_1::TRANSMISSION_MODE: {
                V1_1::FrontendTransmissionMode transMode;
                transMode.dvbt(V1_1::FrontendDvbtTransmissionMode::AUTO);  // value = 1 << 0
                switch ((int)mType) {
                    case (int)FrontendType::DVBT: {
                        // value = 1 << 8
                        transMode.dvbt(V1_1::FrontendDvbtTransmissionMode::MODE_16K_E);
                        status.transmissionMode(transMode);
                        break;
                    }
                    case (int)FrontendType::ISDBT: {
                        transMode.isdbt(FrontendIsdbtMode::MODE_1);  // value = 1 << 1
                        status.transmissionMode(transMode);
                        break;
                    }
                    case (int)V1_1::FrontendType::DTMB: {
                        transMode.dtmb(V1_1::FrontendDtmbTransmissionMode::C1);  // value = 1 << 1
                        status.transmissionMode(transMode);
                        break;
                    }
                    default:
                        break;
                }
                break;
            }
            case V1_1::FrontendStatusTypeExt1_1::UEC: {
                status.uec(4);
                break;
@@ -332,11 +483,34 @@ Return<void> Frontend::getStatusExt1_1(const hidl_vec<V1_1::FrontendStatusTypeEx
            }
            case V1_1::FrontendStatusTypeExt1_1::INTERLEAVINGS: {
                V1_1::FrontendInterleaveMode interleave;
                interleave.atsc3(FrontendAtsc3TimeInterleaveMode::AUTO);
                switch ((int)mType) {
                    case (int)FrontendType::DVBC: {
                        // value = 1 << 1
                        interleave.dvbc(
                                V1_1::FrontendCableTimeInterleaveMode::INTERLEAVING_128_1_0);
                        vector<V1_1::FrontendInterleaveMode> interleaving = {interleave};
                        status.interleaving(interleaving);
                        break;
                    }
                    case (int)FrontendType::ATSC3: {
                        // value = 1 << 1
                        interleave.atsc3(FrontendAtsc3TimeInterleaveMode::CTI);
                        vector<V1_1::FrontendInterleaveMode> interleaving = {interleave};
                        status.interleaving(interleaving);
                        break;
                    }
                    case (int)V1_1::FrontendType::DTMB: {
                        // value = 1 << 1
                        interleave.dtmb(V1_1::FrontendDtmbTimeInterleaveMode::TIMER_INT_240);
                        vector<V1_1::FrontendInterleaveMode> interleaving = {interleave};
                        status.interleaving(interleaving);
                        break;
                    }
                    default:
                        break;
                }
                break;
            }
            case V1_1::FrontendStatusTypeExt1_1::ISDBT_SEGMENTS: {
                vector<uint8_t> segments = {2, 3};
                status.isdbtSegment(segments);
@@ -349,10 +523,30 @@ Return<void> Frontend::getStatusExt1_1(const hidl_vec<V1_1::FrontendStatusTypeEx
            }
            case V1_1::FrontendStatusTypeExt1_1::ROLL_OFF: {
                V1_1::FrontendRollOff rollOff;
                switch (mType) {
                    case FrontendType::DVBS: {
                        // value = 1
                        rollOff.dvbs(FrontendDvbsRolloff::ROLLOFF_0_35);
                        status.rollOff(rollOff);
                        break;
                    }
                    case FrontendType::ISDBS: {
                        // value = 1
                        rollOff.isdbs(FrontendIsdbsRolloff::ROLLOFF_0_35);
                        status.rollOff(rollOff);
                        break;
                    }
                    case FrontendType::ISDBS3: {
                        // value = 1
                        rollOff.isdbs3(FrontendIsdbs3Rolloff::ROLLOFF_0_03);
                        status.rollOff(rollOff);
                        break;
                    }
                    default:
                        break;
                }
                break;
            }
            case V1_1::FrontendStatusTypeExt1_1::IS_MISO: {
                status.isMiso(true);
                break;
+105 −17
Original line number Diff line number Diff line
@@ -33,38 +33,91 @@ namespace implementation {
Tuner::Tuner() {
    // Static Frontends array to maintain local frontends information
    // Array index matches their FrontendId in the default impl
    mFrontendSize = 9;
    mFrontendSize = 10;
    mFrontends[0] = new Frontend(FrontendType::ISDBS, 0, this);
    mFrontends[1] = new Frontend(FrontendType::ATSC, 1, this);
    mFrontends[1] = new Frontend(FrontendType::ATSC3, 1, this);
    mFrontends[2] = new Frontend(FrontendType::DVBC, 2, this);
    mFrontends[3] = new Frontend(FrontendType::DVBS, 3, this);
    mFrontends[4] = new Frontend(FrontendType::DVBT, 4, this);
    mFrontends[5] = new Frontend(FrontendType::ISDBT, 5, this);
    mFrontends[6] = new Frontend(FrontendType::ANALOG, 6, this);
    mFrontends[7] = new Frontend(FrontendType::ATSC, 7, this);
    mFrontends[8] =
            new Frontend(static_cast<V1_0::FrontendType>(V1_1::FrontendType::DTMB), 8, this);
    mFrontends[8] = new Frontend(FrontendType::ISDBS3, 8, this);
    mFrontends[9] =
            new Frontend(static_cast<V1_0::FrontendType>(V1_1::FrontendType::DTMB), 9, this);

    FrontendInfo::FrontendCapabilities caps;
    vector<FrontendStatusType> statusCaps;

    caps = FrontendInfo::FrontendCapabilities();
    caps.isdbsCaps(FrontendIsdbsCapabilities());
    mFrontendCaps[0] = caps;
    statusCaps = {
            FrontendStatusType::DEMOD_LOCK,
            FrontendStatusType::SNR,
            FrontendStatusType::FEC,
            FrontendStatusType::MODULATION,
            static_cast<FrontendStatusType>(V1_1::FrontendStatusTypeExt1_1::MODULATIONS),
            static_cast<FrontendStatusType>(V1_1::FrontendStatusTypeExt1_1::ROLL_OFF),
    };
    mFrontendStatusCaps[0] = statusCaps;

    caps = FrontendInfo::FrontendCapabilities();
    caps.atscCaps(FrontendAtscCapabilities());
    caps.atsc3Caps(FrontendAtsc3Capabilities());
    mFrontendCaps[1] = caps;
    statusCaps = {
            FrontendStatusType::BER,
            FrontendStatusType::PER,
            FrontendStatusType::ATSC3_PLP_INFO,
            static_cast<FrontendStatusType>(V1_1::FrontendStatusTypeExt1_1::MODULATIONS),
            static_cast<FrontendStatusType>(V1_1::FrontendStatusTypeExt1_1::BERS),
            static_cast<FrontendStatusType>(V1_1::FrontendStatusTypeExt1_1::INTERLEAVINGS),
            static_cast<FrontendStatusType>(V1_1::FrontendStatusTypeExt1_1::BANDWIDTH),
    };
    mFrontendStatusCaps[1] = statusCaps;

    caps = FrontendInfo::FrontendCapabilities();
    caps.dvbcCaps(FrontendDvbcCapabilities());
    mFrontendCaps[2] = caps;
    statusCaps = {
            FrontendStatusType::PRE_BER,
            FrontendStatusType::SIGNAL_QUALITY,
            FrontendStatusType::MODULATION,
            FrontendStatusType::SPECTRAL,
            static_cast<FrontendStatusType>(V1_1::FrontendStatusTypeExt1_1::MODULATIONS),
            static_cast<FrontendStatusType>(V1_1::FrontendStatusTypeExt1_1::CODERATES),
            static_cast<FrontendStatusType>(V1_1::FrontendStatusTypeExt1_1::INTERLEAVINGS),
            static_cast<FrontendStatusType>(V1_1::FrontendStatusTypeExt1_1::BANDWIDTH),
    };
    mFrontendStatusCaps[2] = statusCaps;

    caps = FrontendInfo::FrontendCapabilities();
    caps.dvbsCaps(FrontendDvbsCapabilities());
    mFrontendCaps[3] = caps;
    statusCaps = {
            FrontendStatusType::SIGNAL_STRENGTH,
            FrontendStatusType::SYMBOL_RATE,
            FrontendStatusType::MODULATION,
            static_cast<FrontendStatusType>(V1_1::FrontendStatusTypeExt1_1::MODULATIONS),
            static_cast<FrontendStatusType>(V1_1::FrontendStatusTypeExt1_1::ROLL_OFF),
            static_cast<FrontendStatusType>(V1_1::FrontendStatusTypeExt1_1::IS_MISO),
    };
    mFrontendStatusCaps[3] = statusCaps;

    caps = FrontendInfo::FrontendCapabilities();
    caps.dvbtCaps(FrontendDvbtCapabilities());
    mFrontendCaps[4] = caps;
    statusCaps = {
            FrontendStatusType::EWBS,
            FrontendStatusType::PLP_ID,
            FrontendStatusType::HIERARCHY,
            static_cast<FrontendStatusType>(V1_1::FrontendStatusTypeExt1_1::MODULATIONS),
            static_cast<FrontendStatusType>(V1_1::FrontendStatusTypeExt1_1::BANDWIDTH),
            static_cast<FrontendStatusType>(V1_1::FrontendStatusTypeExt1_1::GUARD_INTERVAL),
            static_cast<FrontendStatusType>(V1_1::FrontendStatusTypeExt1_1::TRANSMISSION_MODE),
            static_cast<FrontendStatusType>(V1_1::FrontendStatusTypeExt1_1::T2_SYSTEM_ID),
    };
    mFrontendStatusCaps[4] = statusCaps;

    caps = FrontendInfo::FrontendCapabilities();
    FrontendIsdbtCapabilities isdbtCaps{
@@ -77,14 +130,60 @@ Tuner::Tuner() {
    };
    caps.isdbtCaps(isdbtCaps);
    mFrontendCaps[5] = caps;
    statusCaps = {
            FrontendStatusType::AGC,
            FrontendStatusType::LNA,
            FrontendStatusType::MODULATION,
            static_cast<FrontendStatusType>(V1_1::FrontendStatusTypeExt1_1::MODULATIONS),
            static_cast<FrontendStatusType>(V1_1::FrontendStatusTypeExt1_1::BANDWIDTH),
            static_cast<FrontendStatusType>(V1_1::FrontendStatusTypeExt1_1::GUARD_INTERVAL),
            static_cast<FrontendStatusType>(V1_1::FrontendStatusTypeExt1_1::TRANSMISSION_MODE),
            static_cast<FrontendStatusType>(V1_1::FrontendStatusTypeExt1_1::ISDBT_SEGMENTS),
    };
    mFrontendStatusCaps[5] = statusCaps;

    caps = FrontendInfo::FrontendCapabilities();
    caps.analogCaps(FrontendAnalogCapabilities());
    mFrontendCaps[6] = caps;
    statusCaps = {
            FrontendStatusType::LAYER_ERROR,
            FrontendStatusType::MER,
            static_cast<FrontendStatusType>(V1_1::FrontendStatusTypeExt1_1::UEC),
            static_cast<FrontendStatusType>(V1_1::FrontendStatusTypeExt1_1::TS_DATA_RATES),
    };
    mFrontendStatusCaps[6] = statusCaps;

    caps = FrontendInfo::FrontendCapabilities();
    caps.atscCaps(FrontendAtscCapabilities());
    mFrontendCaps[7] = caps;
    statusCaps = {
            FrontendStatusType::FREQ_OFFSET,
            FrontendStatusType::RF_LOCK,
            static_cast<FrontendStatusType>(V1_1::FrontendStatusTypeExt1_1::MODULATIONS),
            static_cast<FrontendStatusType>(V1_1::FrontendStatusTypeExt1_1::IS_LINEAR),
    };
    mFrontendStatusCaps[7] = statusCaps;

    caps = FrontendInfo::FrontendCapabilities();
    caps.isdbs3Caps(FrontendIsdbs3Capabilities());
    mFrontendCaps[8] = caps;
    statusCaps = {
            FrontendStatusType::DEMOD_LOCK,
            FrontendStatusType::MODULATION,
            static_cast<FrontendStatusType>(V1_1::FrontendStatusTypeExt1_1::MODULATIONS),
            static_cast<FrontendStatusType>(V1_1::FrontendStatusTypeExt1_1::ROLL_OFF),
            static_cast<FrontendStatusType>(V1_1::FrontendStatusTypeExt1_1::IS_SHORT_FRAMES),
    };
    mFrontendStatusCaps[8] = statusCaps;

    statusCaps = {
            static_cast<FrontendStatusType>(V1_1::FrontendStatusTypeExt1_1::MODULATIONS),
            static_cast<FrontendStatusType>(V1_1::FrontendStatusTypeExt1_1::INTERLEAVINGS),
            static_cast<FrontendStatusType>(V1_1::FrontendStatusTypeExt1_1::BANDWIDTH),
            static_cast<FrontendStatusType>(V1_1::FrontendStatusTypeExt1_1::GUARD_INTERVAL),
            static_cast<FrontendStatusType>(V1_1::FrontendStatusTypeExt1_1::TRANSMISSION_MODE),
    };
    mFrontendStatusCaps[9] = statusCaps;

    mLnbs.resize(2);
    mLnbs[0] = new Lnb(0);
@@ -160,17 +259,6 @@ Return<void> Tuner::getFrontendInfo(FrontendId frontendId, getFrontendInfo_cb _h
        return Void();
    }

    vector<FrontendStatusType> statusCaps = {
            FrontendStatusType::DEMOD_LOCK,
            FrontendStatusType::SNR,
            FrontendStatusType::FEC,
            FrontendStatusType::MODULATION,
            FrontendStatusType::PLP_ID,
            FrontendStatusType::LAYER_ERROR,
            FrontendStatusType::ATSC3_PLP_INFO,
            static_cast<FrontendStatusType>(V1_1::FrontendStatusTypeExt1_1::MODULATIONS),
            static_cast<FrontendStatusType>(V1_1::FrontendStatusTypeExt1_1::ROLL_OFF),
    };
    // assign randomly selected values for testing.
    info = {
            .type = mFrontends[frontendId]->getFrontendType(),
@@ -180,7 +268,7 @@ Return<void> Tuner::getFrontendInfo(FrontendId frontendId, getFrontendInfo_cb _h
            .maxSymbolRate = 1145,
            .acquireRange = 30,
            .exclusiveGroupId = 57,
            .statusCaps = statusCaps,
            .statusCaps = mFrontendStatusCaps[frontendId],
            .frontendCaps = mFrontendCaps[frontendId],
    };

+1 −0
Original line number Diff line number Diff line
@@ -79,6 +79,7 @@ class Tuner : public ITuner {
    // Static mFrontends array to maintain local frontends information
    map<uint32_t, sp<Frontend>> mFrontends;
    map<uint32_t, FrontendInfo::FrontendCapabilities> mFrontendCaps;
    map<uint32_t, vector<FrontendStatusType>> mFrontendStatusCaps;
    V1_1::FrontendDtmbCapabilities mDtmbCaps;
    map<uint32_t, uint32_t> mFrontendToDemux;
    map<uint32_t, sp<Demux>> mDemuxes;