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

Commit 1cbb4278 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Report mock measurements consistent with SvInfo" into main

parents ebc0e830 0de81a85
Loading
Loading
Loading
Loading
+79 −34
Original line number Diff line number Diff line
@@ -147,10 +147,13 @@ GnssDataV2_0 Utils::getMockMeasurementV2_0() {
    return gnssData;
}

GnssData Utils::getMockMeasurement(const bool enableCorrVecOutputs, const bool enableFullTracking) {
namespace {
GnssMeasurement getMockGnssMeasurement(int svid, GnssConstellationType constellationType,
                                       float cN0DbHz, float basebandCN0DbHz,
                                       double carrierFrequencyHz, bool enableCorrVecOutputs) {
    aidl::android::hardware::gnss::GnssSignalType signalType = {
            .constellation = GnssConstellationType::GLONASS,
            .carrierFrequencyHz = 1.59975e+09,
            .constellation = constellationType,
            .carrierFrequencyHz = carrierFrequencyHz,
            .codeType = aidl::android::hardware::gnss::GnssSignalType::CODE_TYPE_C,
    };
    GnssMeasurement measurement = {
@@ -161,23 +164,23 @@ GnssData Utils::getMockMeasurement(const bool enableCorrVecOutputs, const bool e
                     GnssMeasurement::HAS_SATELLITE_ISB |
                     GnssMeasurement::HAS_SATELLITE_ISB_UNCERTAINTY |
                     GnssMeasurement::HAS_SATELLITE_PVT,
            .svid = 13,
            .svid = svid,
            .signalType = signalType,
            .state = GnssMeasurement::STATE_CODE_LOCK | GnssMeasurement::STATE_BIT_SYNC |
                     GnssMeasurement::STATE_SUBFRAME_SYNC | GnssMeasurement::STATE_TOW_DECODED |
                     GnssMeasurement::STATE_GLO_STRING_SYNC |
                     GnssMeasurement::STATE_GLO_TOD_DECODED,
            .receivedSvTimeInNs = 8195997131077,
            .receivedSvTimeUncertaintyInNs = 15,
            .antennaCN0DbHz = 30.0,
            .basebandCN0DbHz = 26.5,
            .agcLevelDb = 2.3,
            .antennaCN0DbHz = cN0DbHz,
            .basebandCN0DbHz = basebandCN0DbHz,
            .pseudorangeRateMps = -484.13739013671875,
            .pseudorangeRateUncertaintyMps = 0.1037999987602233,
            .accumulatedDeltaRangeState = GnssMeasurement::ADR_STATE_VALID,
            .accumulatedDeltaRangeM = 1.52,
            .accumulatedDeltaRangeUncertaintyM = 2.43,
            .multipathIndicator = aidl::android::hardware::gnss::GnssMultipathIndicator::UNKNOWN,
            .state = GnssMeasurement::STATE_CODE_LOCK | GnssMeasurement::STATE_BIT_SYNC |
                     GnssMeasurement::STATE_SUBFRAME_SYNC | GnssMeasurement::STATE_TOW_DECODED |
                     GnssMeasurement::STATE_GLO_STRING_SYNC |
                     GnssMeasurement::STATE_GLO_TOD_DECODED,
            .agcLevelDb = 2.3,
            .fullInterSignalBiasNs = 21.5,
            .fullInterSignalBiasUncertaintyNs = 792.0,
            .satelliteInterSignalBiasNs = 233.9,
@@ -199,16 +202,69 @@ GnssData Utils::getMockMeasurement(const bool enableCorrVecOutputs, const bool e
                                             .satClkDriftMps = 0},
                            .ionoDelayMeters = 3.069949602639317e-08,
                            .tropoDelayMeters = 3.882265204404031,
                            .ephemerisSource =
                                    SatellitePvt::SatelliteEphemerisSource::SERVER_LONG_TERM,
                            .timeOfClockSeconds = 12345,
                            .issueOfDataClock = 143,
                            .timeOfEphemerisSeconds = 9876,
                            .issueOfDataEphemeris = 48,
                            .ephemerisSource =
                                    SatellitePvt::SatelliteEphemerisSource::SERVER_LONG_TERM,
                    },
            .correlationVectors = {}};

    GnssClock clock = {.gnssClockFlags = GnssClock::HAS_FULL_BIAS | GnssClock::HAS_BIAS |
    if (enableCorrVecOutputs) {
        aidl::android::hardware::gnss::CorrelationVector correlationVector1 = {
                .frequencyOffsetMps = 10,
                .samplingWidthM = 30,
                .samplingStartM = 0,
                .magnitude = {0, 5000, 10000, 5000, 0, 0, 3000, 0}};
        aidl::android::hardware::gnss::CorrelationVector correlationVector2 = {
                .frequencyOffsetMps = 20,
                .samplingWidthM = 30,
                .samplingStartM = -10,
                .magnitude = {0, 3000, 5000, 3000, 0, 0, 1000, 0}};
        measurement.correlationVectors = {correlationVector1, correlationVector2};
        measurement.flags |= GnssMeasurement::HAS_CORRELATION_VECTOR;
    }
    return measurement;
}
}  // namespace

GnssData Utils::getMockMeasurement(const bool enableCorrVecOutputs, const bool enableFullTracking) {
    std::vector<GnssMeasurement> measurements = {
            // GPS
            getMockGnssMeasurement(3, GnssConstellationType::GPS, 32.5, 27.5, kGpsL1FreqHz,
                                   enableCorrVecOutputs),
            getMockGnssMeasurement(5, GnssConstellationType::GPS, 27.0, 22.0, kGpsL1FreqHz,
                                   enableCorrVecOutputs),
            getMockGnssMeasurement(17, GnssConstellationType::GPS, 30.5, 25.5, kGpsL5FreqHz,
                                   enableCorrVecOutputs),
            getMockGnssMeasurement(26, GnssConstellationType::GPS, 24.1, 19.1, kGpsL5FreqHz,
                                   enableCorrVecOutputs),
            // GAL
            getMockGnssMeasurement(2, GnssConstellationType::GALILEO, 33.5, 27.5, kGalE1FreqHz,
                                   enableCorrVecOutputs),
            getMockGnssMeasurement(4, GnssConstellationType::GALILEO, 28.0, 22.0, kGalE1FreqHz,
                                   enableCorrVecOutputs),
            getMockGnssMeasurement(10, GnssConstellationType::GALILEO, 35.5, 25.5, kGalE1FreqHz,
                                   enableCorrVecOutputs),
            getMockGnssMeasurement(29, GnssConstellationType::GALILEO, 34.1, 19.1, kGalE1FreqHz,
                                   enableCorrVecOutputs),
            // GLO
            getMockGnssMeasurement(5, GnssConstellationType::GLONASS, 20.5, 15.5, kGloG1FreqHz,
                                   enableCorrVecOutputs),
            getMockGnssMeasurement(17, GnssConstellationType::GLONASS, 21.5, 16.5, kGloG1FreqHz,
                                   enableCorrVecOutputs),
            getMockGnssMeasurement(18, GnssConstellationType::GLONASS, 28.3, 25.3, kGloG1FreqHz,
                                   enableCorrVecOutputs),
            getMockGnssMeasurement(10, GnssConstellationType::GLONASS, 25.0, 20.0, kGloG1FreqHz,
                                   enableCorrVecOutputs),
            // IRNSS
            getMockGnssMeasurement(3, GnssConstellationType::IRNSS, 22.0, 19.7, kIrnssL5FreqHz,
                                   enableCorrVecOutputs),
    };

    GnssClock clock = {
            .gnssClockFlags = GnssClock::HAS_FULL_BIAS | GnssClock::HAS_BIAS |
                              GnssClock::HAS_BIAS_UNCERTAINTY | GnssClock::HAS_DRIFT |
                              GnssClock::HAS_DRIFT_UNCERTAINTY,
            .timeNs = 2713545000000,
@@ -218,7 +274,11 @@ GnssData Utils::getMockMeasurement(const bool enableCorrVecOutputs, const bool e
            .driftNsps = -51.757811607455452,
            .driftUncertaintyNsps = 310.64968328491528,
            .hwClockDiscontinuityCount = 1,
                       .referenceSignalTypeForIsb = signalType};
            .referenceSignalTypeForIsb = {
                    .constellation = GnssConstellationType::GLONASS,
                    .carrierFrequencyHz = 1.59975e+09,
                    .codeType = aidl::android::hardware::gnss::GnssSignalType::CODE_TYPE_C,
            }};

    ElapsedRealtime timestamp = {
            .flags = ElapsedRealtime::HAS_TIMESTAMP_NS | ElapsedRealtime::HAS_TIME_UNCERTAINTY_NS,
@@ -228,21 +288,6 @@ GnssData Utils::getMockMeasurement(const bool enableCorrVecOutputs, const bool e
            // or don't set the field.
            .timeUncertaintyNs = 1020400};

    if (enableCorrVecOutputs) {
        aidl::android::hardware::gnss::CorrelationVector correlationVector1 = {
                .frequencyOffsetMps = 10,
                .samplingWidthM = 30,
                .samplingStartM = 0,
                .magnitude = {0, 5000, 10000, 5000, 0, 0, 3000, 0}};
        aidl::android::hardware::gnss::CorrelationVector correlationVector2 = {
                .frequencyOffsetMps = 20,
                .samplingWidthM = 30,
                .samplingStartM = -10,
                .magnitude = {0, 3000, 5000, 3000, 0, 0, 1000, 0}};
        measurement.correlationVectors = {correlationVector1, correlationVector2};
        measurement.flags |= GnssMeasurement::HAS_CORRELATION_VECTOR;
    }

    GnssAgc gnssAgc1 = {
            .agcLevelDb = 3.5,
            .constellation = GnssConstellationType::GLONASS,
@@ -255,7 +300,7 @@ GnssData Utils::getMockMeasurement(const bool enableCorrVecOutputs, const bool e
            .carrierFrequencyHz = (int64_t)kGpsL1FreqHz,
    };

    GnssData gnssData = {.measurements = {measurement},
    GnssData gnssData = {.measurements = measurements,
                         .clock = clock,
                         .elapsedRealtime = timestamp,
                         .gnssAgcs = std::vector({gnssAgc1, gnssAgc2}),