Public Member Functions | Protected Attributes | List of all members
gnsstk::PNBGalFNavDataFactory Class Reference

Detailed Description

This class provides a factory that processes PackedNavBits data containing Galileo F/NAV data as defined in Galileo OS-SIS-ICD. The results of the addData method (in the navOut argument) may contain any number of GalFNavAlm, GalFNavEph, GalFNavHealth or GalFNavTimeOffset objects, according to what data is fed to the method and what data is requested via the validity and type filters (see PNBNavDataFactory).

Note
Currently validity is not checked in any way in this class.
This class does not enforce sequential messages when assembling almanac or ephemeris data.

Definition at line 62 of file PNBGalFNavDataFactory.hpp.

#include <PNBGalFNavDataFactory.hpp>

Inheritance diagram for gnsstk::PNBGalFNavDataFactory:
Inheritance graph
[legend]

Public Member Functions

bool addData (const PackedNavBitsPtr &navIn, NavDataPtrList &navOut, double cadence=-1) override
 
bool processAlm (unsigned pageType, const PackedNavBitsPtr &navIn, NavDataPtrList &navOut)
 
bool processAlmOrb (const std::vector< PackedNavBitsPtr > &almPage, GalFNavAlm *alm, GalFNavHealth *hp1, int ptA, int ptB, int asiSVID, int asbSVID, int asidAhalf, int asbdAhalf, int asiEcc, int asbEcc, int asiw, int asbw, int asidi, int asbdi, int asiOMEGAdot, int asbOMEGAdot, int asiM0, int asbM0, int asiaf0, int asbaf0, int asiaf1, int asbaf1, int asiE5ahs, int asbE5ahs)
 
bool processEph (unsigned pageType, const PackedNavBitsPtr &navIn, NavDataPtrList &navOut)
 
void resetState () override
 
- Public Member Functions inherited from gnsstk::PNBNavDataFactory
 PNBNavDataFactory ()
 
virtual void setControl (const FactoryControl &ctrl)
 
virtual void setTypeFilter (const NavMessageTypeSet &nmts)
 
virtual void setValidityFilter (NavValidityType nvt)
 

Protected Attributes

std::map< NavSatelliteID, std::vector< PackedNavBitsPtr > > almAcc
 
std::map< NavSatelliteID, std::vector< PackedNavBitsPtr > > ephAcc
 
- Protected Attributes inherited from gnsstk::PNBNavDataFactory
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...
 

Member Function Documentation

◆ addData()

bool gnsstk::PNBGalFNavDataFactory::addData ( const PackedNavBitsPtr navIn,
NavDataPtrList navOut,
double  cadence = -1 
)
overridevirtual

Process a PackedNavBits object, producing NavData objects as appropriate.

Parameters
[in]navInThe PackedNavBits data to process.
[out]navOutAny resulting NavData objects that were completed, usually as a result of adding navIn to the set of data.
[in]cadenceThis value is ignored in this class.
Returns
false on error.
Todo:
implement validity checks if there are any.
Note
While the ICD doesn't label page type 1 as being part of the ephemeris, there is data in page type 1 that is required to construct the ephemeris.

Implements gnsstk::PNBNavDataFactory.

Definition at line 57 of file PNBGalFNavDataFactory.cpp.

◆ processAlm()

bool gnsstk::PNBGalFNavDataFactory::processAlm ( unsigned  pageType,
const PackedNavBitsPtr navIn,
NavDataPtrList navOut 
)

Process page types 5-6. When a complete almanac of page types 5,6 and consistent IODa are accumulated in almAcc, that almanac is placed in navOut, along with health information offset object, if such processing is enabled.

Parameters
[in]pageTypeThe page type (5-6) pertaining to navIn.
[in]navInThe as-broadcast almanac bits.
[out]navOutIf an almanac is completed and the data is requested, this will contain a GalFNavAlm object, and/or if health data is requested, this will contain a GalFNavHealth object
Returns
false on error.

Definition at line 366 of file PNBGalFNavDataFactory.cpp.

◆ processAlmOrb()

bool gnsstk::PNBGalFNavDataFactory::processAlmOrb ( const std::vector< PackedNavBitsPtr > &  almPage,
GalFNavAlm alm,
GalFNavHealth hp1,
int  ptA,
int  ptB,
int  asiSVID,
int  asbSVID,
int  asidAhalf,
int  asbdAhalf,
int  asiEcc,
int  asbEcc,
int  asiw,
int  asbw,
int  asidi,
int  asbdi,
int  asiOMEGAdot,
int  asbOMEGAdot,
int  asiM0,
int  asbM0,
int  asiaf0,
int  asbaf0,
int  asiaf1,
int  asbaf1,
int  asiE5ahs,
int  asbE5ahs 
)

Decode an almanac and/or health from a vector of Galileo almanac words.

Parameters
[in]almWordAn vector of size 4 of Galileo word types 7-10.
[in,out]almThe pre-allocated almanac object to store the decoded data in.
[in,out]hp1The pre-allocated health object to store E5b health status data in.
[in,out]hp2The pre-allocated health object to store E1B health status data in.
[in]wtAThe index into almWord of the first word type of the pair of word types being decoded to make an almanac.
[in]wtBThe index into almWord of the second word type of the pair of word types being decoded to make an almanac.
[in]asiWNaThe index into almWord of the word type that contains the WNa value.
[in]asit0aThe index into almWord of the word type that contains the t0a value.
[in]asidAhalfThe index into almWord of the word type that contains the delta A**1/2 value.
[in]asbdAhalfThe first bit of the word type that contains the delta A**1/2 value.
[in]asiEccThe index into almWord of the word type that contains the eccentricity value.
[in]asbEccThe first bit of the word type that contains the eccentricity value.
[in]asiwThe index into almWord of the word type that contains the argument of perigee.
[in]asbwThe first bit of the word type that contains the argument of perigee.
[in]asidiThe index into almWord of the word type that contains the delta inclination.
[in]asbdiThe first bit of the word type that contains the delta inclination value.
[in]asiOMEGA0The index into almWord of the word type that contains the right ascension reference value.
[in]asbOMEGA0The first bit of the word type that contains the right ascension reference value.
[in]asiOMEGAdotThe index into almWord of the word type that contains the rate of right ascension value.
[in]asbOMEGAdotThe first bit of the word type that contains the rate of right ascension value.
[in]asiM0The index into almWord of the word type that contains the mean anomaly reference value.
[in]asbM0The first bit of the word type that contains the mean anomaly reference value.
[in]asiaf0The index into almWord of the word type that contains the clock bias value.
[in]asbaf0The first bit of the word type that contains the clock bias value.
[in]asiaf1The index into almWord of the word type that contains the clock drift value.
[in]asbaf1The first bit of the word type that contains the clock drift value.
[in]asiE5bhsThe index into almWord of the word type that contains the E5b health status value.
[in]asbE5bhsThe first bit of the word type that contains the E5b health status value.
[in]asiE1BhsThe index into almWord of the word type that contains the E1B health status value.
[in]asbE1BhsThe first bit of the word type that contains the E1B health status value.
Note
alm, hp1 and hp2 need only have been created, typically using std::make_shared, prior to calling this method.
Returns
true if an almanac was decoded, false if the specified almanac contained a zero SVID.
Todo:
figure out what DVS and SISA should be here.

Definition at line 514 of file PNBGalFNavDataFactory.cpp.

◆ processEph()

bool gnsstk::PNBGalFNavDataFactory::processEph ( unsigned  pageType,
const PackedNavBitsPtr navIn,
NavDataPtrList navOut 
)

Process page types 1-4. When a complete ephemeris of page types 1,2,3,4 and consistent IODnav are accumulated in ephAcc, that ephemeris is placed in navOut, along with a GST-UTC and GST-GPS time offset object and health information object, if such processing is enabled.

Parameters
[in]pageTypeThe page type (1-4) pertaining to navIn.
[in]navInThe as-broadcast ephemeris bits.
[out]navOutIf an ephemeris is completed, this will contain a GalFNavEph object. If navIn contains page type 1 and health data is requested, navOut will contain a GalFNavHealth object. If navIn contains page type 4 and time offset data is requested, navOut will contain two GalFNavTimeOffset objects.
Returns
false on error.

Definition at line 118 of file PNBGalFNavDataFactory.cpp.

◆ resetState()

void gnsstk::PNBGalFNavDataFactory::resetState ( )
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 618 of file PNBGalFNavDataFactory.cpp.

Member Data Documentation

◆ almAcc

std::map<NavSatelliteID, std::vector<PackedNavBitsPtr> > gnsstk::PNBGalFNavDataFactory::almAcc
protected

Map transmitting satellite ID to a vector of PackedNavBits for accumulating almanac data, where index 0 is page type 5 and so on.

Definition at line 210 of file PNBGalFNavDataFactory.hpp.

◆ ephAcc

std::map<NavSatelliteID, std::vector<PackedNavBitsPtr> > gnsstk::PNBGalFNavDataFactory::ephAcc
protected

Map satellite ID to a vector of PackedNavBits for accumulating ephemeris data, where index 0 is page type 1 and so on.

Definition at line 213 of file PNBGalFNavDataFactory.hpp.


The documentation for this class was generated from the following files:


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