RtcmMsmSignalData.java

/* Copyright 2022-2026 Thales Alenia Space
 * Licensed to CS GROUP (CS) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * CS licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.orekit.gnss.metric.messages.rtcm.msm;

import org.orekit.gnss.metric.messages.rtcm.msm.headers.RtcmMsmSignalId;

/**
 * Container for RTCM MSM signal-specific data fields.
 * @author Nathan Schiffmacher
 * @since 14.0
 */
public class RtcmMsmSignalData {

    /** MSM signal identifier. */
    private RtcmMsmSignalId signalId;

    /** GNSS signal fine Pseudoranges (DF400, DF405). */
    private double finePseudorange;

    /** GNSS signal fine Phaserange data (DF401, DF406). */
    private double finePhaserange;

    /** GNSS Phaserange Lock Time Indicator (DF402, DF407). */
    private int lockTimeIndicator;

    /** Half-cycle ambiguity indicator (DF420). */
    private boolean halfCycleAmbiguityIndicator;

    /** GNSS signal CNRs (DF403, DF408). */
    private double cnr;

    /** GNSS signal fine Phaserange Rates (DF404). */
    private double finePhaserangeRate;

    /**
     * Get the MSM signal identifier.
     * @return MSM signal identifier
     */
    public RtcmMsmSignalId getSignalId() {
        return signalId;
    }

    /**
     * Set the MSM signal identifier.
     * @param signalId MSM signal identifier
     */
    public void setSignalId(final RtcmMsmSignalId signalId) {
        this.signalId = signalId;
    }

    /**
     * Get the fine pseudorange.
     * @return fine pseudorange in meters
     */
    public double getFinePseudorange() {
        return finePseudorange;
    }

    /**
     * Set the fine pseudorange.
     * @param finePseudorange fine pseudorange in meters
     */
    public void setFinePseudorange(final double finePseudorange) {
        this.finePseudorange = finePseudorange;
    }

    /**
     * Get the fine phaserange.
     * @return fine phaserange in meters
     */
    public double getFinePhaserange() {
        return finePhaserange;
    }

    /**
     * Set the fine phaserange.
     * @param finePhaserange fine phaserange in meters
     */
    public void setFinePhaserange(final double finePhaserange) {
        this.finePhaserange = finePhaserange;
    }

    /**
     * Get the phaserange lock time indicator.
     * @return lock time indicator value
     */
    public int getLockTimeIndicator() {
        return lockTimeIndicator;
    }

    /**
     * Set the phaserange lock time indicator.
     * @param lockTimeIndicator lock time indicator value
     */
    public void setLockTimeIndicator(final int lockTimeIndicator) {
        this.lockTimeIndicator = lockTimeIndicator;
    }

    /**
     * Get the half-cycle ambiguity indicator.
     * @return true if half-cycle ambiguity is present, false otherwise
     */
    public boolean getHalfCycleAmbiguityIndicator() {
        return halfCycleAmbiguityIndicator;
    }

    /**
     * Set the half-cycle ambiguity indicator.
     * @param halfCycleAmbiguityIndicator true if half-cycle ambiguity is present, false otherwise
     */
    public void setHalfCycleAmbiguityIndicator(final boolean halfCycleAmbiguityIndicator) {
        this.halfCycleAmbiguityIndicator = halfCycleAmbiguityIndicator;
    }

    /**
     * Get the carrier-to-noise ratio.
     * @return CNR in dB-Hz
     */
    public double getCnr() {
        return cnr;
    }

    /**
     * Set the carrier-to-noise ratio.
     * @param cnr CNR in dB-Hz
     */
    public void setCnr(final double cnr) {
        this.cnr = cnr;
    }

    /**
     * Get the fine phaserange rate.
     * @return fine phaserange rate in meters per second
     */
    public double getFinePhaserangeRate() {
        return finePhaserangeRate;
    }

    /**
     * Set the fine phaserange rate.
     * @param finePhaserangeRate fine phaserange rate in meters per second
     */
    public void setFinePhaserangeRate(final double finePhaserangeRate) {
        this.finePhaserangeRate = finePhaserangeRate;
    }
}