1   /* Copyright 2022-2025 Thales Alenia Space
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.gnss.rflink.gps;
18  
19  /**
20   * Container for sub-frames 4, pages 1, 6, 11, 16 and 21,
21   * but also for sub-frames 4, pages 2, 3, 4, 5, 7, 8, and 9
22   * which have a similar structure.
23   * <p>
24   * Table 40-1, sheets 6 and 7 in
25   * <a href="https://navcen.uscg.gov/sites/default/files/pdf/gps/IS-GPS-200N.pdf">NAVSTAR
26   * GPS Space Segment/Navigation User Segment Interface</a>, IS-GPS-200N, 22 Aug 2022
27   * </p>
28   * @author Luc Maisonobe
29   * @since 12.0
30   */
31  public class SubFrame4A extends SubFrame45 {
32  
33      /** Index of reserved field in word 3. */
34      private static final int RESERVED_3 = 9;
35  
36      /** Index of reserved field in word 4. */
37      private static final int RESERVED_4 = 10;
38  
39      /** Index of reserved field in word 5. */
40      private static final int RESERVED_5 = 11;
41  
42      /** Index of reserved field in word 6. */
43      private static final int RESERVED_6 = 12;
44  
45      /** Index of reserved field in word 7. */
46      private static final int RESERVED_7 = 13;
47  
48      /** Index of reserved field in word 8. */
49      private static final int RESERVED_8 = 14;
50  
51      /** Index of reserved field A in word 9. */
52      private static final int RESERVED_A_9 = 15;
53  
54      /** Index of reserved field B in word 9. */
55      private static final int RESERVED_B_9 = 16;
56  
57      /** Index of reserved field in word 10. */
58      private static final int RESERVED_10 = 17;
59  
60      /** Simple constructor.
61       * @param words raw words
62       */
63      SubFrame4A(final int[] words) {
64  
65          // create raw container
66          super(words, RESERVED_10 + 1);
67  
68          // populate container
69          setField(RESERVED_3,    3,  6, 16, words);
70          setField(RESERVED_4,    4,  6, 24, words);
71          setField(RESERVED_5,    5,  6, 24, words);
72          setField(RESERVED_6,    6,  6, 24, words);
73          setField(RESERVED_7,    7,  6, 24, words);
74          setField(RESERVED_8,    8,  6, 24, words);
75          setField(RESERVED_A_9,  9, 22,  8, words);
76          setField(RESERVED_B_9,  9,  6, 16, words);
77          setField(RESERVED_10,  10,  8, 22, words);
78  
79      }
80  
81      /** Get the reserved field in word 3.
82       * @return reserved field in word 3
83       */
84      public int getReserved03() {
85          return getField(RESERVED_3);
86      }
87  
88      /** Get the reserved field in word 4.
89       * @return reserved field in word 4
90       */
91      public int getReserved04() {
92          return getField(RESERVED_4);
93      }
94  
95      /** Get the reserved field in word 5.
96       * @return reserved field in word 5
97       */
98      public int getReserved05() {
99          return getField(RESERVED_5);
100     }
101 
102     /** Get the reserved field in word 6.
103      * @return reserved field in word 6
104      */
105     public int getReserved06() {
106         return getField(RESERVED_6);
107     }
108 
109     /** Get the reserved field in word 7.
110      * @return reserved field in word 7
111      */
112     public int getReserved07() {
113         return getField(RESERVED_7);
114     }
115 
116     /** Get the reserved field in word 8.
117      * @return reserved field in word 8
118      */
119     public int getReserved08() {
120         return getField(RESERVED_8);
121     }
122 
123     /** Get the reserved field A in word 9.
124      * @return reserved field A in word 9
125      */
126     public int getReservedA09() {
127         return getField(RESERVED_A_9);
128     }
129 
130     /** Get the reserved field B in word 9.
131      * @return reserved field B in word 9
132      */
133     public int getReservedB09() {
134         return getField(RESERVED_B_9);
135     }
136 
137     /** Get the reserved field in word 10.
138      * @return reserved field in word 10
139      */
140     public int getReserved10() {
141         return getField(RESERVED_10);
142     }
143 
144 }