1 /* Copyright 2002-2025 CS GROUP 2 * Licensed to CS GROUP (CS) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * CS licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 package org.orekit.estimation.measurements.gnss; 18 19 import java.util.ArrayList; 20 import java.util.HashMap; 21 import java.util.List; 22 import java.util.Map; 23 import org.orekit.gnss.GnssSignal; 24 import org.orekit.time.AbsoluteDate; 25 26 /** 27 * This class is used to contains all the data computed within cycle-slip detector. 28 * All these parameters are what user can get from the detectors. 29 * @author David Soulard 30 * @since 10.2 31 */ 32 public class CycleSlipDetectorResults { 33 34 /** Integer corresponding to the PRN number of the satellite. */ 35 private String satellite; 36 37 /** Date from which for this satellite cycle-slip detection begins. */ 38 private Map<GnssSignal, AbsoluteDate> begin; 39 40 /** Date up to which for this satellite cycle-slip detection is valid. */ 41 private Map<GnssSignal, AbsoluteDate> end; 42 43 /** List of date at which cycle slip occurs. */ 44 private Map<GnssSignal, List<AbsoluteDate>> results; 45 46 /** 47 * Constructor. 48 * @param satellite name of the satellite considered: "system - PRN" (e.g. "GPS - 07" for the satellite GPS 7. 49 * @param date current date 50 * @param signal signal corresponding to the measurements. 51 */ 52 CycleSlipDetectorResults(final String satellite, final AbsoluteDate date, final GnssSignal signal) { 53 this.begin = new HashMap<>(); 54 this.end = new HashMap<>(); 55 this.results = new HashMap<>(); 56 this.satellite = satellite; 57 begin.put(signal, date); 58 end.put(signal, date); 59 results.put(signal, new ArrayList<>()); 60 } 61 62 /** 63 * Get the satellite name. 64 * @return satellite name 65 */ 66 public String getSatelliteName() { 67 return satellite; 68 } 69 70 /** 71 * Return the end date at the given frequency. 72 * <p> 73 * For dual-Frequency cycle-slip detector, the {@link GnssSignal} contained 74 * in the map is the higher frequency (e.g. for L1-L2 the signal in the map will be L1) 75 * </p> 76 * @param signal frequency 77 * @return date of end of validity of the detectors 78 */ 79 public AbsoluteDate getEndDate(final GnssSignal signal) { 80 return end.get(signal); 81 } 82 83 /** 84 * Return the date of validity beginning of the detector. 85 * @param signal frequency 86 * @return AbsoluteDate 87 */ 88 public AbsoluteDate getBeginDate(final GnssSignal signal) { 89 return begin.get(signal); 90 } 91 92 /** 93 * Get the cycle slip Map with contains the results. 94 * <p> 95 * For dual-Frequency cycle-slip detector, the {@link GnssSignal} contained 96 * in the map is the higher frequency (e.g. for L1-L2 the signal in the map will be L1) 97 * </p> 98 * @return cycle slip map containing the results 99 */ 100 public Map<GnssSignal, List<AbsoluteDate>> getCycleSlipMap() { 101 return results; 102 } 103 104 /** 105 * Add a new cycle-slip date into the Map for the given signal. 106 * @param signal signal of the measurement used to detect the cycle-slip 107 * @param date date of the cycle-slip detected. 108 */ 109 void addCycleSlipDate(final GnssSignal signal, final AbsoluteDate date) { 110 final List<AbsoluteDate> newList = results.get(signal); 111 newList.add(date); 112 results.put(signal, newList); 113 } 114 115 /** 116 * Knowing the satellite already exist, adding data for another signal. 117 * @param signal signal corresponding to the data 118 * @param date date of measurement 119 */ 120 void addAtOtherFrequency(final GnssSignal signal, final AbsoluteDate date) { 121 begin.put(signal, date); 122 end.put(signal, date); 123 results.put(signal, new ArrayList<>()); 124 } 125 126 /** 127 * Setter for the ending data. 128 * @param signal signal at which the measurement at current date is taken. 129 * @param date new date of end 130 */ 131 void setDate(final GnssSignal signal, final AbsoluteDate date) { 132 end.put(signal, date); 133 } 134 135 }