Go to the documentation of this file.
49 SatMetaDataStore::SVNID ::
58 : system(sys), id(svn)
66 if (
static_cast<int>(system) <
static_cast<int>(right.
system))
70 if (
static_cast<int>(system) >
static_cast<int>(right.
system))
82 std::ifstream ins(sourceName);
83 unsigned long lineNo = 0;
92 std::getline(ins, txt);
95 if ((txt[0] ==
'#') || txt.empty())
100 for (
unsigned i = 0; i < vals.size(); i++)
104 if (vals.size() == 0)
112 if (!
addSat(vals, lineNo))
118 else if (key ==
"SIG")
126 else if (key ==
"CLOCK")
134 else if (key ==
"LAUNCH")
142 else if (key ==
"NORAD")
152 cerr <<
"Invalid record type: " << vals[0] <<
" on line "
160 cerr <<
"Exception while processing line " << lineNo <<
":" << endl
164 catch (std::exception& exc)
166 cerr <<
"Exception while processing line " << lineNo <<
": "
167 << exc.
what() << endl;
172 cerr <<
"Unknown exception processing line " << lineNo << endl;
181 addSat(
const std::vector<std::string>& vals,
unsigned long lineNo)
186 if (vals.size() != 17)
188 cerr <<
"Invalid SAT record on line " << lineNo <<
" size!=17" << endl;
200 cerr <<
"Invalid PRN on line " << lineNo << endl;
210 cerr <<
"Invalid FDMA channel on line " << lineNo << endl;
220 cerr <<
"Invalid FDMA slot on line " << lineNo << endl;
238 exc.
addText(
"Processing startTime");
250 exc.
addText(
"Processing endTime");
253 sat.
plane = vals[i++];
254 sat.
slot = vals[i++];
262 cerr <<
"Missing NORAD mapping for SVN " << svn <<
" on line "
269 cerr <<
"Missing LAUNCH record for SVN " << svn <<
" on line "
281 cerr <<
"Missing CLOCK record for " << sysBlock <<
" on line "
298 addSignal(
const std::vector<std::string>& vals,
unsigned long lineNo)
303 if (vals.size() != 5)
305 cerr <<
"Invalid SIG record on line " << lineNo <<
" size!=5" << endl;
309 std::string name = vals[i++];
310 std::string carrier = vals[i++];
311 std::string code = vals[i++];
312 std::string nav = vals[i++];
319 cerr <<
"Invalid carrier \"" << carrier <<
"\" on line " << lineNo
329 cerr <<
"Invalid code \"" << code <<
"\" on line " << lineNo
338 cerr <<
"Invalid nav \"" << nav <<
"\" on line " << lineNo
348 addClock(
const std::vector<std::string>& vals,
unsigned long lineNo)
353 if (vals.size() != 7)
355 cerr <<
"Invalid CLOCK record on line " << lineNo <<
" size!=7"
366 << key.
blk <<
" on line " << lineNo << endl;
380 addLaunch(
const std::vector<std::string>& vals,
unsigned long lineNo)
385 if (vals.size() != 8)
387 cerr <<
"Invalid LAUNCH record on line " << lineNo <<
" size!=8"
397 cerr <<
"Duplicate LAUNCH " << svn <<
" on line " << lineNo << endl;
410 exc.
addText(
"Processing launchTime");
420 addNORAD(
const std::vector<std::string>& vals,
unsigned long lineNo)
425 if (vals.size() != 4)
427 cerr <<
"Invalid NORAD record on line " << lineNo <<
" size!=4"
437 cerr <<
"Duplicate NORAD " << svn <<
" on line " << lineNo << endl;
452 SatMetaMap::const_iterator sysIt =
satMap.find(sys);
453 if (sysIt ==
satMap.end())
461 for (SatSet::const_iterator rv = sysIt->second.begin();
462 rv != sysIt->second.end();
477 if (when < rv->startTime)
482 if (when < rv->endTime)
501 SatMetaMap::const_iterator sysIt =
satMap.find(sys);
502 if (sysIt ==
satMap.end())
511 for (SatSet::const_iterator rv = sysIt->second.begin();
512 rv != sysIt->second.end();
515 if ((rv->svn == svn) &&
516 (when >= rv->startTime) &&
517 (when < rv->endTime))
538 SatMetaMap::const_iterator sysIt =
satMap.find(sys);
539 if (sysIt ==
satMap.end())
548 for (SatSet::const_iterator rv = sysIt->second.begin();
549 rv != sysIt->second.end();
552 if ((rv->slotID == slotID) &&
553 (rv->chl == channel) &&
554 (when >= rv->startTime) &&
555 (when < rv->endTime))
575 if (
findSat(sys, prn, when, sat))
604 std::set<std::string> rv;
605 for (
const auto& smi :
sigMap)
607 for (
const auto&
ssi : smi.second)
611 rv.insert(smi.first);
626 std::set<std::string> rv;
627 for (
const auto& smi :
sigMap)
629 bool completeMatch =
true;
634 for (
const auto& si : signals)
636 bool matched =
false;
637 for (
const auto& smsi : smi.second)
647 completeMatch =
false;
653 rv.insert(smi.first);
665 for (
const auto& smmi :
satMap)
667 for (
const auto&
ssi : smmi.second)
669 if (groups.count(
ssi.signals) > 0)
684 for (
const auto& ii : intermediate)
686 if ((when >= ii.startTime) && (when < ii.endTime))
699 const std::set<SatMetaData::Status>& status)
703 for (
const auto& ii : intermediate)
705 if ((ii.startTime <= endTime) &&
706 (ii.endTime >= beginTime) &&
707 (status.count(ii.status) > 0))
@ Unknown
Uninitialized value.
std::string & upperCase(std::string &s)
CarrierBand asCarrierBand(const std::string &s) noexcept
Convert a string name to an CarrierBand.
long asInt(const std::string &s)
NavType asNavType(const std::string &s) noexcept
Convert a string name to an NavType.
@ Last
Used to verify that all items are described at compile time.
TrackingCode asTrackingCode(const std::string &s) noexcept
Convert a string name to an TrackingCode.
SatelliteSystem
Supported satellite systems.
@ Last
Used to verify that all items are described at compile time.
std::string what() const
Dump to a string.
@ Any
Used to match any carrier band.
@ Any
wildcard; allows comparison with any other type
std::string asString(IonexStoreStrategy e)
Convert a IonexStoreStrategy to a whitespace-free string name.
@ Unknown
Uninitialized value.
@ Unknown
Unknown or uninitialized stategy value.
std::vector< std::string > split(const std::string &str, const char delimiter=' ')
SatelliteSystem convertStringToSatelliteSystem(const std::string &s)
@ Any
Used to match any nav code.
page HOWTO subpage DoxygenGuide Documenting Your Code page DoxygenGuide Documenting Your Code todo Flesh out this document section doctips Tips for Documenting When defining make sure that the prototype is identical between the cpp and hpp including both the namespaces and the parameter names for you have std::string as the return type in the hpp file and string as the return type in the cpp Doxygen may get confused and autolink to the cpp version with no documentation If you don t use the same parameter names between the cpp and hpp that will also confuse Doxygen Don t put type information in return or param documentation It doesn t really add anything and will often cause Doxygen to complain and not produce the documentation< br > use note Do not put a comma after a param name unless you mean to document multiple parameters< br/> the output stream</code >< br/> y
double asDouble(const std::string &s)
#define GNSSTK_RETHROW(exc)
unsigned long asUnsigned(const std::string &s)
@ Undefined
Code is known to be undefined (as opposed to unknown)
std::string & strip(std::string &s, const std::string &aString, std::string::size_type num=std::string::npos)
Exception & addText(const std::string &errorText)
@ Last
Used to verify that all items are described at compile time.
@ Undefined
Code is known to be undefined (as opposed to unknown)
bool isDigitString(const std::string &s)
@ Any
Used to match any tracking code.
@ Unknown
Uninitialized value.
gnsstk
Author(s):
autogenerated on Wed Oct 25 2023 02:40:41