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