1 /** @warning This code is automatically generated.
2  *
3  *  DO NOT EDIT THIS CODE BY HAND.
4  *
5  *  Refer to the documenation in the toolkit_docs gitlab project.
6  */
7 
8 //==============================================================================
9 //
10 //  This file is part of GPSTk, the GPS Toolkit.
11 //
12 //  The GPSTk is free software; you can redistribute it and/or modify
13 //  it under the terms of the GNU Lesser General Public License as published
14 //  by the Free Software Foundation; either version 3.0 of the License, or
15 //  any later version.
16 //
17 //  The GPSTk is distributed in the hope that it will be useful,
18 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
19 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20 //  GNU Lesser General Public License for more details.
21 //
22 //  You should have received a copy of the GNU Lesser General Public
23 //  License along with GPSTk; if not, write to the Free Software Foundation,
24 //  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
25 //
26 //  This software was developed by Applied Research Laboratories at the
27 //  University of Texas at Austin.
28 //  Copyright 2004-2020, The Board of Regents of The University of Texas System
29 //
30 //==============================================================================
31 
32 //==============================================================================
33 //
34 //  This software was developed by Applied Research Laboratories at the
35 //  University of Texas at Austin, under contract to an agency or agencies
36 //  within the U.S. Department of Defense. The U.S. Government retains all
37 //  rights to use, duplicate, distribute, disclose, or release this software.
38 //
39 //  Pursuant to DoD Directive 523024
40 //
41 //  DISTRIBUTION STATEMENT A: This software has been approved for public
42 //                            release, distribution is unlimited.
43 //
44 //==============================================================================
45 
46 #ifndef GPSTK_TRACKINGCODE_HPP
47 #define GPSTK_TRACKINGCODE_HPP
48 
49 #include <string>
50 #include "EnumIterator.hpp"
51 
52 namespace gpstk
53 {
54       /** The code used to collect the observation. Each of these
55        * should uniquely identify a code that was correlated
56        * against to track the signal. While the notation generally
57        * follows section 5.1 of RINEX 3, due to ambiguities in that
58        * specification some extensions are made. Note that as
59        * concrete specifications for the codes are released, this
60        * list may need to be adjusted. Specifically, this lists
61        * assumes that the same I & Q codes will be used on all
62        * three of the Galileo carriers. If that is not true, more
63        * identifiers need to be allocated */
64    enum class TrackingCode
65    {
66       Unknown,      ///< Uninitialized value
67       Any,          ///< Used to match any tracking code
68       CA,           ///< Legacy GPS civil code
69       P,            ///< Legacy GPS precise code
70       Y,            ///< Encrypted legacy GPS precise code
71       Ztracking,    ///< Encrypted legacy GPS precise code, codeless Z tracking
72       YCodeless,    ///< Encrypted legacy GPS precise code, squaring codeless tracking
73       Semicodeless, ///< Encrypted legacy GPS precise code, other codeless tracking
74       MD,
75       MDP,          ///< Modernized GPS military unique code
76       MP,
77       MPA,
78       MARL,
79       MARLD,
80       MARLP,
81       Mprime,
82       MprimePA,
83       L2CM,         ///< Modernized GPS L2 civil M code
84       L2CL,         ///< Modernized GPS L2 civil L code
85       L2CML,        ///< Modernized GPS L2 civil M+L combined tracking
86       L5I,          ///< Modernized GPS L5 civil in-phase
87       L5Q,          ///< Modernized GPS L5 civil quadrature
88       L5IQ,         ///< Modernized GPS L5 civil I+Q combined tracking
89       L1CP,         ///< Modernized GPS L1C civil code tracking (pilot)
90       L1CD,         ///< Modernized GPS L1C civil code tracking (data)
91       L1CDP,        ///< Modernized GPS L1C civil code tracking (pilot + data)
92       NSCA,
93       NSCD,
94       NSCL,
95       NSCM,
96       NSCMCL,
97       NSCP,
98       NSCPCD,
99       NSI5,
100       NSM,
101       NSMPA,
102       NSMprime,
103       NSMprimePA,
104       NSP,
105       NSQ5,
106       NSY,
107       Standard,     ///< Legacy Glonass civil signal
108       Precise,      ///< Legacy Glonass precise signal
109       L3OCD,        ///< Glonass L3 I code
110       L3OCP,        ///< Glonass L3 Q code
111       L3OCDP,       ///< Glonass L3 I+Q combined tracking
112       L1OCD,        ///< GLONASS L1 OCd code
113       L1OCP,        ///< GLONASS L1 OCp code
114       L1OCDP,       ///< GLONASS L1 OCd+OCp combined tracking
115       L2CSIL2OCp,   ///< GLONASS L2 CSI+OCp combined tracking
116       L2CSI,        ///< GLONASS L2 CSI code
117       L2OCP,        ///< GLONASS L2 OCp code
118       G3TestData,
119       G3TestPilot,
120       L1SC,         ///< GLONASS L1SC in-phase signal
121       L2SC,         ///< GLONASS L2SC in-phase signal
122       E1A,          ///< Galileo L1 PRS code
123       E1B,          ///< Galileo E1-B signal, supporting OS/HAS/SoL
124       E1C,          ///< Galileo E1 Dataless code
125       E1BC,         ///< Galileo E1 B+C combined tracking
126       E1ABC,        ///< Galileo E1 A+B+C combined tracking
127       E5abI,        ///< Galileo E5 I code
128       E5abQ,        ///< Galileo E5 Q code
129       E5abIQ,       ///< Galileo E5 I+Q combined tracking
130       E5aI,         ///< Galileo E5a I code
131       E5aQ,         ///< Galileo E5a Q code
132       E5aIQ,        ///< Galileo E5a I+Q combined tracking
133       E5bI,         ///< Galileo E5b I code
134       E5bQ,         ///< Galileo E5b Q code
135       E5bIQ,        ///< Galileo E5b I+Q combined tracking
136       E6A,          ///< Galileo E6 PRS code
137       E6B,          ///< Galileo E6-b signal
138       E6C,          ///< Galileo E6 Dataless code
139       E6BC,         ///< Galileo E6 B+C combined tracking
140       E6ABC,        ///< Galileo E6 A+B+C combined tracking
141       L1S,          ///< QZSS L1-SAIF
142       L5SI,         ///< QZSS L5S in-phase
143       L5SQ,         ///< QZSS L5S I+Q combined tracking
144       L5SIQ,        ///< QZSS L5S quadrature
145       LEXS,         ///< QZSS LEX(6) short
146       LEXL,         ///< QZSS LEX(6) long
147       LEXSL,        ///< QZSS LEX(6) combined tracking
148       L6D,          ///< QZSS L6 Block II D code
149       L6E,          ///< QZSS L6 Block II E code
150       L6DE,         ///< QZSS L6 Block II D+E combined tracking
151       B1I,          ///< BeiDou B1 I code
152       B1Q,          ///< BeiDou B1 Q code
153       B1IQ,         ///< BeiDou B1 I+Q code
154       B2I,          ///< BeiDou B2 I code
155       B2Q,          ///< BeiDou B2 Q code
156       B2IQ,         ///< BeiDou B2 I+Q code
157       B3I,          ///< BeiDou B3 I code
158       B3Q,          ///< BeiDou B3 Q code
159       B3IQ,         ///< BeiDou B3 I+Q code
160       B1A,          ///< BeiDou B1A code
161       B1CD,         ///< BeiDou B1C D code
162       B1CDP,        ///< BeiDou B1C D+P code
163       B1CP,         ///< BeiDou B1C P code
164       B2abI,        ///< BeiDou B2a+b I code
165       B2abIQ,       ///< BeiDou B2a+B I+Q code
166       B2abQ,        ///< BeiDou B2a+B Q code
167       B2aI,         ///< BeiDou B2a I code
168       B2aIQ,        ///< BeiDou B2a I+Q code
169       B2aQ,         ///< BeiDou B2a Q code
170       B2bI,         ///< BeiDou B2b I code
171       B2bIQ,        ///< BeiDou B2b I+Q code
172       B2bQ,         ///< BeiDou B2b Q code
173       B3AQ,         ///< BeiDou B3A Q code
174       BCodeless,    ///< BeiDou codeless tracking
175       B3AI,         ///< BeiDou B3A I code
176       B3AIQ,        ///< BeiDou B3A I+Q code
177       SPSL5,        ///< IRNSS L5 SPS
178       RSL5D,        ///< IRNSS L5 RS(D)
179       RSL5P,        ///< IRNSS L5 RS(P)
180       RSL5DP,       ///< IRNSS L5 B+C
181       SPSS,         ///< IRNSS S-band SPS
182       RSSD,         ///< IRNSS S-band RS(D)
183       RSSP,         ///< INRSS S-band RS(P)
184       RSSDP,        ///< IRNSS S-band B+C
185       CW,           ///< Continuous Wave, i.e. no chipping sequence
186       Undefined,    ///< Code is known to be undefined (as opposed to unknown)
187       Last,         ///< Used to verify that all items are described at compile time
188    }; // enum class TrackingCode
189 
190       /** Define an iterator so C++11 can do things like
191        * for (TrackingCode i : TrackingCodeIterator()) */
192    typedef EnumIterator<TrackingCode, TrackingCode::Unknown, TrackingCode::Last> TrackingCodeIterator;
193 
194    namespace StringUtils
195    {
196          /// Convert a TrackingCode to a whitespace-free string name.
197       std::string asString(TrackingCode e) throw();
198          /// Convert a string name to an TrackingCode
199       TrackingCode asTrackingCode(const std::string& s) throw();
200    }
201 } // namespace gpstk
202 
203 #endif // GPSTK_TRACKINGCODE_HPP
204