1 //==============================================================================
2 //
3 //  This file is part of GPSTk, the GPS Toolkit.
4 //
5 //  The GPSTk is free software; you can redistribute it and/or modify
6 //  it under the terms of the GNU Lesser General Public License as published
7 //  by the Free Software Foundation; either version 3.0 of the License, or
8 //  any later version.
9 //
10 //  The GPSTk is distributed in the hope that it will be useful,
11 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
12 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 //  GNU Lesser General Public License for more details.
14 //
15 //  You should have received a copy of the GNU Lesser General Public
16 //  License along with GPSTk; if not, write to the Free Software Foundation,
17 //  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
18 //
19 //  This software was developed by Applied Research Laboratories at the
20 //  University of Texas at Austin.
21 //  Copyright 2004-2020, The Board of Regents of The University of Texas System
22 //
23 //==============================================================================
24 
25 //==============================================================================
26 //
27 //  This software was developed by Applied Research Laboratories at the
28 //  University of Texas at Austin, under contract to an agency or agencies
29 //  within the U.S. Department of Defense. The U.S. Government retains all
30 //  rights to use, duplicate, distribute, disclose, or release this software.
31 //
32 //  Pursuant to DoD Directive 523024
33 //
34 //  DISTRIBUTION STATEMENT A: This software has been approved for public
35 //                            release, distribution is unlimited.
36 //
37 //==============================================================================
38 
39 /**
40  * @file CNavGGTO.hpp
41  * Designed to support loading CNAV GGTO data
42  * (Message Type 35)
43  */
44 
45 #ifndef GPSTK_CNAVGGTO_HPP
46 #define GPSTK_CNAVGGTO_HPP
47 
48 #include <string>
49 #include <iostream>
50 
51 #include "CNavDataElement.hpp"
52 #include "PackedNavBits.hpp"
53 
54 namespace gpstk
55 {
56    class CNavGGTO : public CNavDataElement
57    {
58    public:
59       static const int NO_DATA_AVAIL;
60       static const int GALILEO_ID;
61       static const int GLONASS_ID;
62 
63          /// Default constructor
64       CNavGGTO();
65 
66          /**
67           * @throw InvalidParameter
68           */
69       CNavGGTO(const PackedNavBits& message35);
70 
71          /// Destructor
~CNavGGTO()72       virtual ~CNavGGTO() {}
73 
74          /// Clone method
75       virtual CNavGGTO* clone() const;
76 
77       virtual bool isSameData(const CNavDataElement* right) const;
78 
79          /**
80           * Store the contents of message type 35 in this object.
81           * @param message30 - 300 bits of Message Type 35
82           * @throw InvalidParameter if message data is invalid
83           */
84       void loadData(const PackedNavBits& message35);
85 
getName() const86       virtual std::string getName() const
87       {
88          return "CNavGGTO";
89       }
90 
getNameLong() const91       virtual std::string getNameLong() const
92       {
93          return "Civilian Navigation (CNAV) GGTO Parameters";
94       }
95 
96       virtual void dumpBody(std::ostream& s = std::cout) const;
97 
98       double A0GGTO;
99       double A1GGTO;
100       double A2GGTO;
101       long   TGGTO;   // Note: This is stored for completeness,
102       short  WNGGTO;  // The epoch time variable provides a CommonTime representation,
103       short  GNSS_ID;
104 
105    }; // end class CNavGGTO
106 
107    std::ostream& operator<<(std::ostream& s,
108                                     const CNavGGTO& eph);
109 } // end namespace
110 
111 #endif // GPSTK_CNAVGGTO_HPP
112