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

Detailed Description

This class provides a factory that processes PackedNavBits data containing Galileo I/NAV data as defined in Galileo OS-SIS-ICD. The results of the addData method (in the navOut argument) may contain any number of GalINavAlm, GalINavEph, GalINavHealth or GalINavTimeOffset 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 PNBGalINavDataFactory.hpp.

#include <PNBGalINavDataFactory.hpp>

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

Public Member Functions

bool addData (const PackedNavBitsPtr &navIn, NavDataPtrList &navOut, double cadence=-1) override
 
bool processAlm (unsigned wordType, const PackedNavBitsPtr &navIn, NavDataPtrList &navOut)
 
bool processAlmOrb (const std::vector< PackedNavBitsPtr > &almWord, GalINavAlm *alm, GalINavHealth *hp1, GalINavHealth *hp2, int wtA, int wtB, int asiWNa, int asit0a, int asiSVID, int asbSVID, int asidAhalf, int asbdAhalf, int asiEcc, int asbEcc, int asiw, int asbw, int asidi, int asbdi, int asiOMEGA0, int asbOMEGA0, int asiOMEGAdot, int asbOMEGAdot, int asiM0, int asbM0, int asiaf0, int asbaf0, int asiaf1, int asbaf1, int asiE5bhs, int asbE5bhs, int asiE1Bhs, int asbE1Bhs)
 
bool processEph (unsigned wordType, const PackedNavBitsPtr &navIn, NavDataPtrList &navOut)
 
bool processOffset (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::PNBGalINavDataFactory::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 word type 5 as being part of the ephemeris, there is data in word type 5 that is required to construct the ephemeris.

Implements gnsstk::PNBNavDataFactory.

Definition at line 56 of file PNBGalINavDataFactory.cpp.

◆ processAlm()

bool gnsstk::PNBGalINavDataFactory::processAlm ( unsigned  wordType,
const PackedNavBitsPtr navIn,
NavDataPtrList navOut 
)

Process word types 7-10. When a complete almanac of word types 7,8,9,10 and consistent IODa are accumulated in almAcc, that almanac is placed in navOut, along with a GST-GPS time offset object, if such processing is enabled.

Parameters
[in]wordTypeThe word type (7-10) pertaining to navIn.
[in]navInThe as-broadcast almanac bits.
[out]navOutIf an almanac is completed and the data is requested, this will contain a GalINavAlm object.
Returns
false on error.
Todo:
Matthew Koenn suggested effectively caching results for almAcc look-ups. Probably can't take the time to dig into it right now, but wanted to leave a reference to the comment here. https://sgl-git.arlut.utexas.edu/sgl-tks/gnsstk/-/merge_requests/523#note_524670

Definition at line 346 of file PNBGalINavDataFactory.cpp.

◆ processAlmOrb()

bool gnsstk::PNBGalINavDataFactory::processAlmOrb ( const std::vector< PackedNavBitsPtr > &  almWord,
GalINavAlm alm,
GalINavHealth hp1,
GalINavHealth hp2,
int  wtA,
int  wtB,
int  asiWNa,
int  asit0a,
int  asiSVID,
int  asbSVID,
int  asidAhalf,
int  asbdAhalf,
int  asiEcc,
int  asbEcc,
int  asiw,
int  asbw,
int  asidi,
int  asbdi,
int  asiOMEGA0,
int  asbOMEGA0,
int  asiOMEGAdot,
int  asbOMEGAdot,
int  asiM0,
int  asbM0,
int  asiaf0,
int  asbaf0,
int  asiaf1,
int  asbaf1,
int  asiE5bhs,
int  asbE5bhs,
int  asiE1Bhs,
int  asbE1Bhs 
)

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.
Todo:
figure out what DVS and SISA should be here.

Definition at line 524 of file PNBGalINavDataFactory.cpp.

◆ processEph()

bool gnsstk::PNBGalINavDataFactory::processEph ( unsigned  wordType,
const PackedNavBitsPtr navIn,
NavDataPtrList navOut 
)

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

Parameters
[in]wordTypeThe word type (1-5) pertaining to navIn.
[in]navInThe as-broadcast ephemeris bits.
[out]navOutIf an ephemeris is completed, this will contain a GalINavEph object.
Returns
false on error.
Todo:
Word type 5 is not officially part of the ephemeris and doesn't contain an IODnav field, so how do we make sure that our word type 5 is usable with the ephemeris?

Definition at line 124 of file PNBGalINavDataFactory.cpp.

◆ processOffset()

bool gnsstk::PNBGalINavDataFactory::processOffset ( const PackedNavBitsPtr navIn,
NavDataPtrList navOut 
)

Process word type 6. This includes GST-UTC time offset data.

Parameters
[in]navInThe PackedNavBits data containing word type 6.
[out]navOutThe GalINavTimeOffset object generated from navIn.
Returns
true if successful.

Definition at line 613 of file PNBGalINavDataFactory.cpp.

◆ resetState()

void gnsstk::PNBGalINavDataFactory::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 686 of file PNBGalINavDataFactory.cpp.

Member Data Documentation

◆ almAcc

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

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

Definition at line 214 of file PNBGalINavDataFactory.hpp.

◆ ephAcc

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

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

Definition at line 217 of file PNBGalINavDataFactory.hpp.


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


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