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