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.propagation.analytical.gnss.data;
18  
19  import org.orekit.time.AbsoluteDate;
20  
21  /**
22   * Base class for ephemeris-based navigation messages.
23   * @author Bryan Cazabonne
24   * @since 11.0
25   *
26   * @see GLONASSNavigationMessage
27   * @see SBASNavigationMessage
28   */
29  public abstract class AbstractEphemerisMessage {
30  
31      /** Ephemeris reference epoch. */
32      private AbsoluteDate date;
33  
34      /** Time of clock epoch. */
35      private AbsoluteDate epochToc;
36  
37      /** PRN number of the satellite. */
38      private int prn;
39  
40      /** Satellite X position in meters. */
41      private double x;
42  
43      /** Satellite X velocity in meters per second. */
44      private double xDot;
45  
46      /** Satellite X acceleration in meters per second². */
47      private double xDotDot;
48  
49      /** Satellite Y position in meters. */
50      private double y;
51  
52      /** Satellite Y velocity in meters per second. */
53      private double yDot;
54  
55      /** Satellite Y acceleration in meters per second². */
56      private double yDotDot;
57  
58      /** Satellite Z position in meters. */
59      private double z;
60  
61      /** Satellite Z velocity in meters per second. */
62      private double zDot;
63  
64      /** Satellite Z acceleration in meters per second². */
65      private double zDotDot;
66  
67      /** Health status. */
68      private double health;
69  
70      /** Constructor. */
71      public AbstractEphemerisMessage() {
72          // Nothing to do ...
73      }
74  
75      /**
76       * Getter for the reference date of the ephemeris.
77       * @return the reference date of the ephemeris
78       */
79      public AbsoluteDate getDate() {
80          return date;
81      }
82  
83      /**
84       * Setter for the reference date of the ephemeris.
85       * @param date the date to set
86       */
87      public void setDate(final AbsoluteDate date) {
88          this.date = date;
89      }
90  
91      /**
92       * Getter for the time of clock epoch.
93       * @return the time of clock epoch
94       */
95      public AbsoluteDate getEpochToc() {
96          return epochToc;
97      }
98  
99      /**
100      * Setter for the time of clock epoch.
101      * @param epochToc the epoch to set
102      */
103     public void setEpochToc(final AbsoluteDate epochToc) {
104         this.epochToc = epochToc;
105     }
106 
107     /**
108      * Getter for the PRN number of the satellite.
109      * @return the PRN number of the satellite
110      */
111     public int getPRN() {
112         return prn;
113     }
114 
115     /**
116      * Setter for the PRN number of the satellite.
117      * @param number the prn number ot set
118      */
119     public void setPRN(final int number) {
120         this.prn = number;
121     }
122 
123     /**
124      * Getter for the satellite X position.
125      * @return the satellite X position in meters
126      */
127     public double getX() {
128         return x;
129     }
130 
131     /**
132      * Setter for the satellite X position.
133      * @param x satellite X position (meters) to set
134      */
135     public void setX(final double x) {
136         this.x = x;
137     }
138 
139     /**
140      * Getter for the satellite X velocity.
141      * @return the satellite X velocity in m/s
142      */
143     public double getXDot() {
144         return xDot;
145     }
146 
147     /**
148      * Setter for the satellite X velocity.
149      * @param vx the satellite X velocity (m/s) to set
150      */
151     public void setXDot(final double vx) {
152         this.xDot = vx;
153     }
154 
155     /**
156      * Getter for the satellite X acceleration.
157      * @return the satellite X acceleration in m/s²
158      */
159     public double getXDotDot() {
160         return xDotDot;
161     }
162 
163     /**
164      * Setter for the satellite X acceleration.
165      * @param ax the satellite X acceleration (m/s²) to set
166      */
167     public void setXDotDot(final double ax) {
168         this.xDotDot = ax;
169     }
170 
171     /**
172      * Getter for the satellite Y position.
173      * @return the satellite Y position in meters
174      */
175     public double getY() {
176         return y;
177     }
178 
179     /**
180      * Setter for the satellite Y position.
181      * @param y satellite Y position (meters) to set
182      */
183     public void setY(final double y) {
184         this.y = y;
185     }
186 
187     /**
188      * Getter for the satellite Y velocity.
189      * @return the satellite Y velocity in m/s
190      */
191     public double getYDot() {
192         return yDot;
193     }
194 
195     /**
196      * Setter for the satellite Y velocity.
197      * @param vy the satellite Y velocity (m/s) to set
198      */
199     public void setYDot(final double vy) {
200         this.yDot = vy;
201     }
202 
203     /**
204      * Getter for the satellite Y acceleration.
205      * @return the satellite Y acceleration in m/s²
206      */
207     public double getYDotDot() {
208         return yDotDot;
209     }
210 
211     /**
212      * Setter for the satellite Y acceleration.
213      * @param ay the satellite Y acceleration (m/s²) to set
214      */
215     public void setYDotDot(final double ay) {
216         this.yDotDot = ay;
217     }
218 
219     /**
220      * Getter for the satellite Z position.
221      * @return the satellite Z position in meters
222      */
223     public double getZ() {
224         return z;
225     }
226 
227     /**
228      * Setter for the satellite Z position.
229      * @param z satellite Z position (meters) to set
230      */
231     public void setZ(final double z) {
232         this.z = z;
233     }
234 
235     /**
236      * Getter for the satellite Z velocity.
237      * @return the satellite Z velocity in m/s
238      */
239     public double getZDot() {
240         return zDot;
241     }
242 
243     /**
244      * Setter for the satellite Z velocity.
245      * @param vz the satellite Z velocity (m/s) to set
246      */
247     public void setZDot(final double vz) {
248         this.zDot = vz;
249     }
250 
251     /**
252      * Getter for the satellite Z acceleration.
253      * @return the satellite Z acceleration in m/s²
254      */
255     public double getZDotDot() {
256         return zDotDot;
257     }
258 
259     /**
260      * Setter for the satellite Z acceleration.
261      * @param az the satellite Z acceleration (m/s²) to set
262      */
263     public void setZDotDot(final double az) {
264         this.zDotDot = az;
265     }
266 
267     /**
268      * Getter for the health status.
269      * @return the health status
270      */
271     public double getHealth() {
272         return health;
273     }
274 
275     /**
276      * Setter for the health status.
277      * @param health the health status to set
278      */
279     public void setHealth(final double health) {
280         this.health = health;
281     }
282 
283 }