NavData.cpp
Go to the documentation of this file.
1 //==============================================================================
2 //
3 // This file is part of GNSSTk, the ARL:UT GNSS Toolkit.
4 //
5 // The GNSSTk 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 GNSSTk 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 GNSSTk; 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-2022, The Board of Regents of The University of Texas System
22 //
23 //==============================================================================
24 
25 
26 //==============================================================================
27 //
28 // This software was developed by Applied Research Laboratories at the
29 // University of Texas at Austin, under contract to an agency or agencies
30 // within the U.S. Department of Defense. The U.S. Government retains all
31 // rights to use, duplicate, distribute, disclose, or release this software.
32 //
33 // Pursuant to DoD Directive 523024
34 //
35 // DISTRIBUTION STATEMENT A: This software has been approved for public
36 // release, distribution is unlimited.
37 //
38 //==============================================================================
39 #include "NavData.hpp"
40 #include "TimeString.hpp"
41 #include "demangle.hpp"
42 
43 namespace gnsstk
44 {
45  const std::string NavData :: dumpTimeFmt("%3a-%w %3j %5.0s %02m/%02d/%04Y %02H:%02M:%02S");
46  const std::string NavData :: dumpTimeFmtBrief("%4Y/%02m/%02d %03j %02H:%02M:%02S");
48 
51  : msgLenSec(0),
52  weekFmt("%4F(%4G)")
53  {
54  }
55 
56 
57  bool NavData ::
58  isSameData(const NavDataPtr& right) const
59  {
60  return ((timeStamp == right->timeStamp) &&
61  (signal == right->signal));
62  }
63 
64 
65  std::list<std::string> NavData ::
66  compare(const NavDataPtr& right) const
67  {
68  std::list<std::string> rv;
69  // old nav implementation clearly didn't check this
70  // if (timeStamp != right->timeStamp)
71  // rv.push_back("timeStamp");
72  if (signal != right->signal)
73  rv.push_back("signal");
74  return rv;
75  }
76 
77 
78  void NavData ::
79  dump(std::ostream& s, DumpDetail dl) const
80  {
81  s << getDumpTime(dl,timeStamp) << " " << signal << std::endl;
82  }
83 
84 
85  std::string NavData ::
87  {
88  using namespace std;
89  ostringstream s;
90  s << "PRN : " << setw(2) << signal.sat;;
91  string svn;
92  if (getSVN(signal.sat, timeStamp, svn))
93  {
94  s << " / " << "SVN : " << setw(2) << svn;
95  }
97  {
98  // for almanacs, print the transmitting satellite as well.
99  s << endl
100  << "XMIT: " << setw(2) << signal.xmitSat;
101  if (getSVN(signal.xmitSat, timeStamp, svn))
102  {
103  s << " / " << "SVN : " << setw(2) << svn;
104  }
105  }
106  s << endl;
107  // All the obs data is derived from the transmitting
108  // satellite so it makes sense to list it underneath the XMIT
109  // tag.
110  if (!signal.obs.freqOffsWild)
111  {
112  s << "FREQ: " << signal.obs.freqOffs << endl;
113  }
114  s << "CODE: " << gnsstk::StringUtils::asString(signal.nav)
116  << " " << gnsstk::StringUtils::asString(signal.obs.code) << endl;
118  {
120  << endl;
121  }
122  return s.str();
123  }
124 
125 
126  std::string NavData ::
128  {
129  std::string hdr;
130  switch (dl)
131  {
132  case DumpDetail::Full:
133  if (!weekFmt.empty())
134  {
135  hdr = "Week(10bt) SOW ";
136  }
137  hdr += " DOW UTD SOD MM/DD/YYYY HH:MM:SS";
138  break;
139  }
140  return hdr;
141  }
142 
143 
144  std::string NavData ::
145  getDumpTime(DumpDetail dl, const CommonTime& t) const
146  {
147  std::string fmt;
148  switch (dl)
149  {
150  case DumpDetail::OneLine:
151  case DumpDetail::Brief:
152  fmt = dumpTimeFmtBrief;
153  break;
154  case DumpDetail::Full:
155  if (weekFmt.empty())
156  {
157  fmt = dumpTimeFmt;
158  }
159  else
160  {
161  fmt = weekFmt + " %6.0g " + dumpTimeFmt;
162  }
163  break;
164  }
165  if (fmt.empty())
166  return fmt;
167  return printTime(t, fmt);
168  }
169 
170 
171  std::string NavData ::
173  {
174  return demangle(typeid(*this).name());
175  }
176 }
177 
gnsstk::NavDataPtr
std::shared_ptr< NavData > NavDataPtr
Factories instantiate these in response to find() requests.
Definition: NavData.hpp:62
gnsstk::NavSignalID::nav
NavType nav
Navigation message structure of this signal.
Definition: NavSignalID.hpp:96
gnsstk::NavData::getSignalString
std::string getSignalString() const
Definition: NavData.cpp:86
gnsstk::ObsID::xmitAnt
XmitAnt xmitAnt
Identify the transmitting antenna.
Definition: ObsID.hpp:202
gnsstk::NavData::dump
virtual void dump(std::ostream &s, DumpDetail dl) const
Definition: NavData.cpp:79
gnsstk::NavData::compare
virtual std::list< std::string > compare(const NavDataPtr &right) const
Definition: NavData.cpp:66
gnsstk::NavMessageID::messageType
NavMessageType messageType
Definition: NavMessageID.hpp:97
gnsstk::NavData::satMetaDataStore
static GNSSTK_EXPORT gnsstk::SatMetaDataStore * satMetaDataStore
Set this to a valid store to get PRN->SVN translations in dump().
Definition: NavData.hpp:178
gnsstk::NavData::getDumpTime
std::string getDumpTime(DumpDetail dl, const CommonTime &t) const
Definition: NavData.cpp:145
gnsstk::StringUtils::asString
std::string asString(IonexStoreStrategy e)
Convert a IonexStoreStrategy to a whitespace-free string name.
Definition: IonexStoreStrategy.cpp:46
gnsstk::ObsID::band
CarrierBand band
Definition: ObsID.hpp:200
gnsstk::NavData::getDumpTimeHdr
std::string getDumpTimeHdr(DumpDetail dl) const
Definition: NavData.cpp:127
gnsstk::NavData::signal
NavMessageID signal
Source signal identification for this navigation message data.
Definition: NavData.hpp:175
gnsstk
For Sinex::InputHistory.
Definition: BasicFramework.cpp:50
gnsstk::NavData::timeStamp
CommonTime timeStamp
Definition: NavData.hpp:173
gnsstk::NavData::weekFmt
std::string weekFmt
Definition: NavData.hpp:193
gnsstk::NavSignalID::obs
ObsID obs
Carrier, tracking code, etc.
Definition: NavSignalID.hpp:95
gnsstk::NavData::dumpTimeFmtBrief
static const GNSSTK_EXPORT std::string dumpTimeFmtBrief
Time format used for the dump method (Brief).
Definition: NavData.hpp:92
NavData.hpp
gnsstk::NavSatelliteID::sat
SatID sat
ID of satellite to which the nav data applies.
Definition: NavSatelliteID.hpp:169
gnsstk::CommonTime
Definition: CommonTime.hpp:84
gnsstk::demangle
std::string demangle(const char *name)
Demangle G++ class names.
Definition: demangle.cpp:47
gnsstk::ObsID::code
TrackingCode code
Definition: ObsID.hpp:201
gnsstk::SatMetaDataStore
Definition: SatMetaDataStore.hpp:138
gnsstk::DumpDetail::Full
@ Full
Include all detailed information.
gnsstk::NavData::dumpTimeFmt
static const GNSSTK_EXPORT std::string dumpTimeFmt
Time format used for the dump method (Full).
Definition: NavData.hpp:90
gnsstk::NavData::NavData
NavData()
Initialize internal data fields.
Definition: NavData.cpp:50
gnsstk::ObsID::freqOffsWild
bool freqOffsWild
True=Treat freqOffs as a wildcard when matching.
Definition: ObsID.hpp:204
gnsstk::DumpDetail
DumpDetail
Specify level of detail for dump output.
Definition: DumpDetail.hpp:51
gnsstk::printTime
std::string printTime(const CommonTime &t, const std::string &fmt)
Definition: TimeString.cpp:64
demangle.hpp
gnsstk::DumpDetail::Brief
@ Brief
Limit output to <= 5 lines of minimal information.
gnsstk::ObsID::freqOffs
int freqOffs
GLONASS frequency offset.
Definition: ObsID.hpp:203
std
Definition: Angle.hpp:142
gnsstk::DumpDetail::OneLine
@ OneLine
Limit output to minimal information on a single line.
gnsstk::NavData::getSVN
bool getSVN(const SatID &sat, const gnsstk::CommonTime &when, std::string &svn) const
Definition: NavData.hpp:150
gnsstk::XmitAnt::Any
@ Any
When making comparisons in ObsID, matches any enumeration.
gnsstk::NavSatelliteID::xmitSat
SatID xmitSat
ID of the satellite transmitting the nav data.
Definition: NavSatelliteID.hpp:170
gnsstk::NavData::isSameData
virtual bool isSameData(const NavDataPtr &right) const
Definition: NavData.cpp:58
gnsstk::NavData::getClassName
virtual std::string getClassName() const
Definition: NavData.cpp:172
TimeString.hpp
gnsstk::NavMessageType::Almanac
@ Almanac
Low-precision orbits for other than the transmitting SV.


gnsstk
Author(s):
autogenerated on Wed Oct 25 2023 02:40:40