Go to the documentation of this file.
58 PNBGLOFNavDataFactory ::
59 PNBGLOFNavDataFactory()
74 DEBUGTRACE(
"fail bits=" << navIn->getNumBits() <<
" nav="
82 unsigned long stringID = navIn->asUnsignedLong(
85 bool checkParity =
false, expParity =
false;
127 catch (std::exception& exc)
131 cerr << exc.what() << endl;
137 cerr <<
"Unknown exception" << endl;
148 navIn->getobsID(), navIn->getNavID());
149 if ((stringID < 1) || (stringID > 4))
155 NavDataPtr p2 = std::make_shared<GLOFNavISC>();
157 isc->
timeStamp = navIn->getTransmitTime();
161 navOut.push_back(p2);
177 ephAcc[key][stringID-1] = navIn;
182 std::vector<PackedNavBitsPtr> &ephS(
ephAcc[key]);
183 ephS[stringID-1] = navIn;
191 (ephS[
str2]->getTransmitTime()-ephS[
str1]->getTransmitTime() != 2) ||
192 (ephS[
str3]->getTransmitTime()-ephS[
str2]->getTransmitTime() != 2) ||
193 (ephS[
str4]->getTransmitTime()-ephS[
str3]->getTransmitTime() != 2))
201 NavDataPtr p1 = std::make_shared<GLOFNavHealth>();
202 p1->timeStamp = navIn->getTransmitTime();
208 navOut.push_back(p1);
214 NavDataPtr p0 = std::make_shared<GLOFNavEph>();
223 unsigned long tk30s = tk & 0x01;
226 unsigned long tk1m = tk & 0x3f;
229 unsigned long tk1h = tk & 0x1f;
235 eph->
xmit2 = ephS[
str2]->getTransmitTime();
236 eph->
xmit3 = ephS[
str3]->getTransmitTime();
237 eph->
xmit4 = ephS[
str4]->getTransmitTime();
261 unsigned tbFactor = 0;
304 if (toe.
sod >= 10800)
314 navOut.push_back(p0);
334 SatID xmitSat(navIn->getsatSys());
337 NavSatelliteID key(0, xmitSat, navIn->getobsID(), navIn->getNavID());
339 if ((stringID < 6) || (stringID > 15))
343 if ((stringID > 13) && (
getFrameNum(navIn->getTransmitTime()) == 5))
363 almAcc[key][stringID-6] = navIn;
369 unsigned almIdx = (stringID & ~1) - 6;
370 std::vector<PackedNavBitsPtr> &almS(
almAcc[key]);
371 almS[stringID-6] = navIn;
380 std::vector<PackedNavBitsPtr> &almS(
almAcc[key]);
386 if (!almS[almIdx] || !almS[almIdx+1] ||
387 (almS[almIdx]->getNumBits() != 96) ||
388 (almS[almIdx+1]->getNumBits() != 96) ||
389 (almS[almIdx+1]->getTransmitTime() - almS[almIdx]->getTransmitTime()
418 SatID xmitSat(almS[almIdx]->getsatSys());
421 almS[almIdx]->getNavID());
424 NavDataPtr p1 = std::make_shared<GLOFNavHealth>();
425 p1->timeStamp = almS[almIdx]->getTransmitTime();
431 navOut.push_back(p1);
438 NavDataPtr p0 = std::make_shared<GLOFNavAlm>();
440 alm->
timeStamp = almS[almIdx]->getTransmitTime();
441 alm->
xmit2 = almS[almIdx+1]->getTransmitTime();
477 navOut.push_back(p0);
479 almAcc[key][almIdx].reset();
480 almAcc[key][almIdx+1].reset();
490 navIn->getobsID(), navIn->getNavID());
493 NavDataPtr p1 = std::make_shared<GLOFNavHealth>();
494 p1->timeStamp = navIn->getTransmitTime();
498 hea->
ln = navIn->asBool(
tsbln);
499 navOut.push_back(p1);
515 for (
const auto& i :
almAcc)
517 for (
unsigned j = 0; j < i.second.size(); j += 2)
529 NavDataPtr p0 = std::make_shared<GLOFNavTimeOffset>();
530 p0->timeStamp = navIn->getTransmitTime();
557 navOut.push_back(p0);
575 navIn->getobsID(), navIn->getNavID());
582 p0->timeStamp = navIn->getTransmitTime();
585 navOut.push_back(p0);
597 unsigned long SOD = (
unsigned long) dSOD;
600 unsigned long frameCount = SOD / 30;
601 unsigned long frameNumber = (frameCount % 5) + 1;
616 PNBGLOFNavDataFactory::TimeMeta ::
619 NavDataPtr p0 = std::make_shared<GLOFNavUT1TimeOffset>();
std::shared_ptr< NavData > NavDataPtr
Factories instantiate these in response to find() requests.
@ esiP
Satellite operation mode.
@ ISC
Inter-signal corrections.
@ esiP2
t_b odds or evens.
double deltaTnA
Correction to mean value of Draconian period (Delta T_n^A).
Class used to identify/categorize navigation message data.
CommonTime xmit3
Transmit time for string 3.
std::shared_ptr< PackedNavBits > PackedNavBitsPtr
Managed pointer for passing PackedNavBits around.
CommonTime almDOY
Used to set the reference almanac time.
@ asbM
Sat type and signal.
SVHealth health
SV health status.
const Epoch BEGINNING_OF_TIME(CommonTime::BEGINNING_OF_TIME)
Earliest representable Epoch.
@ asbtau
rough time correction
static bool validSize(const PackedNavBitsPtr &navIn)
Return true if the PNB is 85 or 96 bits.
double lambdanA
Longitude of ascending node (lambda_n^A).
unsigned slot
Slot number (n).
double B1
Time bias in seconds.
unsigned KP
Leap second indicator.
CommonTime Toa
Reference time for almanac.
double B2
Time drift in s/s.
unsigned dayCount
Days since Jan 1 of most recent leap year (N_T).
Triple pos
Satellite position at tb in km.
@ Health
SV health status information message.
std::list< NavDataPtr > NavDataPtrList
double eccnA
Eccentricity (epsilon_n^A).
std::string asString(IonexStoreStrategy e)
Convert a IonexStoreStrategy to a whitespace-free string name.
ValidType< bool > Cn
The C_n health bit in strings 6,8,10,12,14.
double deltatLS
Current or past leap second count (UTC only).
static const GNSSTK_EXPORT CommonTime BEGINNING_OF_TIME
earliest representable CommonTime
bool processTim
If true, time offset data will be output by addData.
GLOFNavPCode opStatus
Operational status flag.
NavMessageID signal
Source signal identification for this navigation message data.
std::map< NavSatelliteID, std::vector< PackedNavBitsPtr > > almAcc
CommonTime xmit4
Transmit time for string 4.
@ tnbtaucM
tau_c bits for GLONASS-M
bool processAlm
If true, almanac data will be output by addData.
void resetState() override
double omeganA
Argument of perigee (omega_n^A).
Triple vel
Satellite velocity at tb in km/s.
bool processISC
If true, inter-signal correction data will be output by addData.
bool processTimeUT1(const PackedNavBitsPtr &navIn, NavDataPtrList &navOut)
@ esiP3
4 or 5 satellites in alm.
BasicTimeSystemConverter btsc
Used to convert time stamps to and from GLONASS.
double tauDelta
Inter-frequency bias.
double deltaTdotnA
Time derivative of deltaT (Delta T'_n^A).
double tauc
Non-integer correction between UTC(SU) and GLONASS.
@ Healthy
Satellite is in a healthy and useable state.
@ tsctaucM
tau_c scale for GLONASS-M
std::map< NavSatelliteID, std::vector< PackedNavBitsPtr > > ephAcc
bool processEph
If true, ephemeris data will be output by addData.
@ InvalidOnly
Only load/find nav messages that fail validity checks.
@ esiP1
Adjacent t_b interval flag.
@ esiM
GLONASS or GLONASS-M.
unsigned P4
Flag 1=ephemeris present/uploaded. 0=nope.
@ ValidOnly
Only load/find nav messages that pass validity checks.
unsigned aod
Age of data in days (E_n).
double taunA
Time offset to GLONASS time (tau_n^A).
unsigned P1
Flag for interval between adjacent t_b.
ValidType< uint8_t > healthBits
The 3-bit B_n value.
bool processTime(const PackedNavBitsPtr &navIn, NavDataPtrList &navOut)
bool healthBits
Health flag (C_n, 1 = operable).
bool lhealth
Health flag? Different from B_n and C_n?
unsigned accIndex
User accuracy index (F_T).
@ GLO
GLONASS system time (aka UTC(SU))
unsigned P2
Flag of oddness (=1) or evenness (=0) of t_b.
CommonTime xmit2
Transmit time for string 2 (eph) or odd string.
@ TimeOffset
Message containing information about time system offsets.
CommonTime ref
Reference time (t_k) for this ephemeris.
#define GNSSTK_ASSERT(CONDITION)
Provide an "ASSERT" type macro.
unsigned NT
Ephemeris days since leap year.
bool processHea
If true, health data will be output by addData.
double clkBias
Satellite clock bias in sec (tau_n).
@ fsbStrNum
String number start bit.
unsigned NA
Almanac days since leap year.
int freqnA
Frequency offset (H_n^A).
unsigned interval
P1 interval (minutes, see PNBGLOFNavDataFactory).
@ Ephemeris
Precision orbits for the transmitting SV.
unsigned P3
Flag 1=5 almanac sats in frame, 0=4 almanac sats.
@ esitk
Time ref'd to frame start.
std::map< NavSatelliteID, TimeMeta > timeAcc
Triple acc
Satellite acceleration at tb in km/s**2.
#define DEBUGTRACE_FUNCTION()
GLOFNavSatType satType
Satellite type (M_n: GLONASS or GLONASS-M).
unsigned tb
Epoch index with Moscow day.
double a0
Bias coefficient of source time scale.
bool changeTimeSystem(TimeSystem timeSystem, TimeSystemConverter *conv)
uint8_t healthBits
The 3-bit B_n value (look at bit 2 not 0 or 1).
double freqBias
Satellite relative frequency bias (gamma_n).
double tLambdanA
Time of ascending node crossing (t_lambda_n^A).
double deltainA
Correction to mean inclination (Delta i_n^A).
@ Unhealthy
Satellite is unhealthy and should not be used.
bool getOffset(TimeSystem fromSys, TimeSystem toSys, const CommonTime &t, double &offs) override
CommonTime effTime
Effectivity time (wnLSF,dn).
void set_valid(const bool &v) noexcept
CommonTime refTime
Reference time for computation.
unsigned getFrameNum(const CommonTime &xmitTime)
@ esiP4
Ephemeris available or no.
GLOFNavSatType
Values for GLONASS FDMA nav message, Word M.
bool processAlmOrb(const NavSatelliteID &key, unsigned almIdx, NavDataPtrList &navOut)
bool addData(const PackedNavBitsPtr &navIn, NavDataPtrList &navOut, double cadence=-1) override
@ Almanac
Low-precision orbits for other than the transmitting SV.
ValidType< bool > ln
The l_n health bit in strings 3,5,7,9,11,13,15.
NavValidityType navValidity
Determines how the factory should filter added data.
gnsstk
Author(s):
autogenerated on Wed Oct 25 2023 02:40:40