This class provides a factory that processes PackedNavBits data containing GPS LNav (Legacy Nav, aka data ID 2) data as defined in IS-GPS-200 section 20. The results of the addData method (in the navOut argument) may contain any number of GPSLNavAlm, GPSLNavEph, GPSLNavHealth or GPSLNavTimeOffset objects, according to what data is fed to the method and what data is requested via the validity and type filters (see PNBNavDataFactory).
Definition at line 69 of file PNBGPSLNavDataFactory.hpp.
#include <PNBGPSLNavDataFactory.hpp>
Public Member Functions | |
bool | addData (const PackedNavBitsPtr &navIn, NavDataPtrList &navOut, double cadence=-1) override |
void | dumpState (std::ostream &s) const |
bool | processAlmOrb (unsigned long prn, const PackedNavBitsPtr &navIn, NavDataPtrList &navOut) |
bool | processEph (unsigned sfid, const PackedNavBitsPtr &navIn, NavDataPtrList &navOut) |
bool | processSVID51 (const PackedNavBitsPtr &navIn, NavDataPtrList &navOut) |
bool | processSVID56 (const PackedNavBitsPtr &navIn, NavDataPtrList &navOut) |
bool | processSVID63 (const PackedNavBitsPtr &navIn, NavDataPtrList &navOut) |
void | resetState () override |
![]() | |
PNBNavDataFactory () | |
virtual void | setControl (const FactoryControl &ctrl) |
virtual void | setTypeFilter (const NavMessageTypeSet &nmts) |
virtual void | setValidityFilter (NavValidityType nvt) |
Protected Attributes | |
std::map< NavSatelliteID, NavDataPtrList > | almAcc |
std::map< NavSatelliteID, std::vector< PackedNavBitsPtr > > | ephAcc |
std::map< unsigned, GPSWeekSecond > | fullWNaMap |
![]() | |
FactoryControl | factControl |
Configuration for the behavior of this factory. More... | |
NavValidityType | navValidity |
Determines how the factory should filter added data. More... | |
bool | processAlm |
If true, almanac data will be output by addData. More... | |
bool | processEph |
If true, ephemeris data will be output by addData. More... | |
bool | processHea |
If true, health data will be output by addData. More... | |
bool | processIono |
If true, ionospheric data will be output by addData. More... | |
bool | processISC |
If true, inter-signal correction data will be output by addData. More... | |
bool | processTim |
If true, time offset data will be output by addData. More... | |
|
overridevirtual |
Process a PackedNavBits object, producing NavData objects as appropriate.
[in] | navIn | The PackedNavBits data to process. |
[out] | navOut | Any resulting NavData objects that were completed, usually as a result of adding navIn to the set of data. |
[in] | cadence | This value is ignored in this class. |
Implements gnsstk::PNBNavDataFactory.
Definition at line 56 of file PNBGPSLNavDataFactory.cpp.
void gnsstk::PNBGPSLNavDataFactory::dumpState | ( | std::ostream & | s | ) | const |
For debugging purposes, dump the sizes of the accumulator maps.
[in,out] | s | The stream to write the debug output to. |
Definition at line 756 of file PNBGPSLNavDataFactory.cpp.
bool gnsstk::PNBGPSLNavDataFactory::processAlmOrb | ( | unsigned long | prn, |
const PackedNavBitsPtr & | navIn, | ||
NavDataPtrList & | navOut | ||
) |
Process SV/page ID 1-32. In order for GPSLNavAlm data to be produced, SV/page ID 51 must have been processed. This is required in order to get the almanac week (WNa). If page 51 has not yet been processed, the almanac orbital elements are stored in almAcc until such time as a page 51 is processed.
[in] | prn | The SV/page ID which represents the subject PRN. |
[in] | navIn | The PackedNavBits data containing the subframe. |
[out] | navOut | The GPSLNavAlm and/or GPSLNavHealth objects generated from navIn. |
Definition at line 371 of file PNBGPSLNavDataFactory.cpp.
bool gnsstk::PNBGPSLNavDataFactory::processEph | ( | unsigned | sfid, |
const PackedNavBitsPtr & | navIn, | ||
NavDataPtrList & | navOut | ||
) |
Process subframes 1-3. When a complete ephemeris of subframes 1,2,3 and consistent IODE/IODC are accumulated in ephAcc, that ephemeris is placed in navOut.
[in] | sfid | The subframe ID (1-3) pertaining to navIn. |
[in] | navIn | The as-broadcast ephemeris subframe bits. |
[out] | navOut | If an ephemeris is completed, this will contain a GPSLNavEph object. |
Definition at line 177 of file PNBGPSLNavDataFactory.cpp.
bool gnsstk::PNBGPSLNavDataFactory::processSVID51 | ( | const PackedNavBitsPtr & | navIn, |
NavDataPtrList & | navOut | ||
) |
Process SV/page ID 51. This includes health data for PRNs 1-24 as well as the WNa. This will likely result in the generation of both GPSLNavHealth (24 of them) as well as a set of GPSLNavAlm objects as the almanac structure means page 51 is always last.
[in] | navIn | The PackedNavBits data containing the subframe. |
[out] | navOut | The GPSLNavAlm and/or GPSLNavHealth objects generated from navIn. |
Definition at line 477 of file PNBGPSLNavDataFactory.cpp.
bool gnsstk::PNBGPSLNavDataFactory::processSVID56 | ( | const PackedNavBitsPtr & | navIn, |
NavDataPtrList & | navOut | ||
) |
Process SV/page ID 56. This includes GPS-UTC time offset data and ionospheric corrections.
[in] | navIn | The PackedNavBits data containing the subframe. |
[out] | navOut | The GPSLNavTimeOffset object generated from navIn. |
Definition at line 671 of file PNBGPSLNavDataFactory.cpp.
bool gnsstk::PNBGPSLNavDataFactory::processSVID63 | ( | const PackedNavBitsPtr & | navIn, |
NavDataPtrList & | navOut | ||
) |
Process SV/page ID 63. This includes health data for PRNs 25-32.
[in] | navIn | The PackedNavBits data containing the subframe. |
[out] | navOut | The GPSLNavHealth objects generated from navIn. |
Definition at line 596 of file PNBGPSLNavDataFactory.cpp.
|
overridevirtual |
Reset the state of the data accumulator. Most PNBNavDataFactory child classes will maintain some state to assemble data prior to processing. This method is intended to be used to clear out that intermediate data to start from a fresh state, e.g. if you're loading discontinuous data.
Implements gnsstk::PNBNavDataFactory.
Definition at line 785 of file PNBGPSLNavDataFactory.cpp.
|
protected |
Accumulate almanac orbital element pages (page ID 1-32) until a page ID 51 becomes available to properly set the WNa. Key is the transmitting PRN (only xmitSat is set, sat is ignored).
Definition at line 156 of file PNBGPSLNavDataFactory.hpp.
|
protected |
Map GPS PRN to a vector of PackedNavBits for accumulating ephemeris data, where index 0 is subframe 1 and so on.
Definition at line 159 of file PNBGPSLNavDataFactory.hpp.
|
protected |
Map GPS transmit PRN to fully qualified week/second (WNa/toa). This is set by SV/page ID 51.
Definition at line 151 of file PNBGPSLNavDataFactory.hpp.