PNBBDSD2NavDataFactory.hpp
Go to the documentation of this file.
1 //==============================================================================
2 //
3 // This file is part of GNSSTk, the ARL:UT GNSS Toolkit.
4 //
5 // The GNSSTk is free software; you can redistribute it and/or modify
6 // it under the terms of the GNU Lesser General Public License as published
7 // by the Free Software Foundation; either version 3.0 of the License, or
8 // any later version.
9 //
10 // The GNSSTk is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU Lesser General Public License for more details.
14 //
15 // You should have received a copy of the GNU Lesser General Public
16 // License along with GNSSTk; if not, write to the Free Software Foundation,
17 // Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
18 //
19 // This software was developed by Applied Research Laboratories at the
20 // University of Texas at Austin.
21 // Copyright 2004-2022, The Board of Regents of The University of Texas System
22 //
23 //==============================================================================
24 
25 
26 //==============================================================================
27 //
28 // This software was developed by Applied Research Laboratories at the
29 // University of Texas at Austin, under contract to an agency or agencies
30 // within the U.S. Department of Defense. The U.S. Government retains all
31 // rights to use, duplicate, distribute, disclose, or release this software.
32 //
33 // Pursuant to DoD Directive 523024
34 //
35 // DISTRIBUTION STATEMENT A: This software has been approved for public
36 // release, distribution is unlimited.
37 //
38 //==============================================================================
39 #ifndef GNSSTK_PNBBDSD2NAVDATAFACTORY_HPP
40 #define GNSSTK_PNBBDSD2NAVDATAFACTORY_HPP
41 
42 #include "PNBNavDataFactory.hpp"
43 #include "BDSD2NavAlm.hpp"
44 #include "BDSWeekSecond.hpp"
45 
46 namespace gnsstk
47 {
49 
50 
86  {
87  public:
96  bool addData(const PackedNavBitsPtr& navIn, NavDataPtrList& navOut,
97  double cadence = -1)
98  override;
99 
107  bool processAlm(unsigned pnum, const PackedNavBitsPtr& navIn,
108  NavDataPtrList& navOut);
109 
121  bool processEph(unsigned long pgid,
122  const PackedNavBitsPtr& navIn, NavDataPtrList& navOut);
123 
131  bool processSF5Pg35(const PackedNavBitsPtr& navIn,NavDataPtrList& navOut);
132 
141  bool processSF5Pg36(const PackedNavBitsPtr& navIn,NavDataPtrList& navOut);
142 
152  bool processSF5Pg101(const PackedNavBitsPtr& navIn,
153  NavDataPtrList& navOut);
154 
161  bool processSF5Pg102(const PackedNavBitsPtr& navIn,
162  NavDataPtrList& navOut);
163 
174  bool processSF5Pg116(const PackedNavBitsPtr& navIn,
175  NavDataPtrList& navOut);
176 
182  static bool isAlmDefault(const PackedNavBitsPtr& navIn);
183 
190  void resetState() override;
191 
194  void dumpState(std::ostream& s) const;
195 
197  inline bool filterTimeOffset(double a0, double a1)
198  { return (factControl.bdsTimeZZfilt && (a0 == 0.0) && (a1 == 0.0)); }
199 
200  protected:
202  class AmEpID
203  {
204  public:
206  AmEpID();
207 
213  bool isExpanded(const CommonTime& t) const;
214 
219  void setValues(const BDSWeekSecond& t, uint8_t id);
220 
221  protected:
224  uint8_t amEpID;
225  };
227  typedef std::shared_ptr<BDSD2NavAlm> AlmPtr;
229  typedef std::list<AlmPtr> AlmPtrList;
232  std::map<unsigned, BDSWeekSecond> fullWNaMap;
237  std::map<NavSatelliteID, AlmPtrList> almAcc;
242  std::map<NavSatelliteID, AmEpID> amEpIDMap;
245  std::map<NavSatelliteID, std::vector<PackedNavBitsPtr> > ephAcc;
250  std::map<NavSatelliteID, uint16_t> heaAcc;
251 
271  void makeHealth(const PackedNavBitsPtr& navIn, NavDataPtrList& navOut,
272  unsigned long subjID,
273  unsigned startBit1, unsigned numBits1,
274  unsigned startBit2=0, unsigned numBits2=0);
275 
285  void finishAlm(bool fromWNa, const NavSatelliteID& key,
286  NavDataPtrList& navOut);
287 
301  bool finishAlm(AlmPtr& alm, bool fromWNa, const NavSatelliteID& key,
302  NavDataPtrList& navOut);
303  }; // class PNBBDSD2NavDataFactory
304 
306 
307 } // namespace gnsstk
308 
309 #endif // GNSSTK_PNBBDSD2NAVDATAFACTORY_HPP
gnsstk::PackedNavBitsPtr
std::shared_ptr< PackedNavBits > PackedNavBitsPtr
Managed pointer for passing PackedNavBits around.
Definition: PackedNavBits.hpp:66
gnsstk::PNBBDSD2NavDataFactory::processSF5Pg102
bool processSF5Pg102(const PackedNavBitsPtr &navIn, NavDataPtrList &navOut)
Definition: PNBBDSD2NavDataFactory.cpp:730
gnsstk::PNBBDSD2NavDataFactory::processSF5Pg35
bool processSF5Pg35(const PackedNavBitsPtr &navIn, NavDataPtrList &navOut)
Definition: PNBBDSD2NavDataFactory.cpp:558
gnsstk::PNBBDSD2NavDataFactory::AmEpID::mfStart
CommonTime mfStart
Transmit time of 1st bit of the superframe.
Definition: PNBBDSD2NavDataFactory.hpp:222
gnsstk::PNBBDSD2NavDataFactory::amEpIDMap
std::map< NavSatelliteID, AmEpID > amEpIDMap
Definition: PNBBDSD2NavDataFactory.hpp:242
gnsstk::PNBBDSD2NavDataFactory::fullWNaMap
std::map< unsigned, BDSWeekSecond > fullWNaMap
Definition: PNBBDSD2NavDataFactory.hpp:232
BDSD2NavAlm.hpp
gnsstk::NavSatelliteID
Definition: NavSatelliteID.hpp:57
gnsstk::PNBBDSD2NavDataFactory::AmEpID::AmEpID
AmEpID()
Set the time system to Any to avoid exceptions.
Definition: PNBBDSD2NavDataFactory.cpp:1012
gnsstk::NavDataPtrList
std::list< NavDataPtr > NavDataPtrList
Definition: NavData.hpp:75
gnsstk::PNBBDSD2NavDataFactory::AlmPtr
std::shared_ptr< BDSD2NavAlm > AlmPtr
Alias for almanac objects.
Definition: PNBBDSD2NavDataFactory.hpp:227
gnsstk::PNBBDSD2NavDataFactory::filterTimeOffset
bool filterTimeOffset(double a0, double a1)
Return true if a0 and a1 are zero and double 0 filtering is enabled.
Definition: PNBBDSD2NavDataFactory.hpp:197
gnsstk::PNBNavDataFactory::factControl
FactoryControl factControl
Configuration for the behavior of this factory.
Definition: PNBNavDataFactory.hpp:118
gnsstk::PNBNavDataFactory::processAlm
bool processAlm
If true, almanac data will be output by addData.
Definition: PNBNavDataFactory.hpp:126
gnsstk::PNBBDSD2NavDataFactory::almAcc
std::map< NavSatelliteID, AlmPtrList > almAcc
Definition: PNBBDSD2NavDataFactory.hpp:237
gnsstk
For Sinex::InputHistory.
Definition: BasicFramework.cpp:50
gnsstk::PNBBDSD2NavDataFactory::ephAcc
std::map< NavSatelliteID, std::vector< PackedNavBitsPtr > > ephAcc
Definition: PNBBDSD2NavDataFactory.hpp:245
gnsstk::PNBBDSD2NavDataFactory::isAlmDefault
static bool isAlmDefault(const PackedNavBitsPtr &navIn)
Definition: PNBBDSD2NavDataFactory.cpp:863
gnsstk::PNBBDSD2NavDataFactory::processSF5Pg116
bool processSF5Pg116(const PackedNavBitsPtr &navIn, NavDataPtrList &navOut)
Definition: PNBBDSD2NavDataFactory.cpp:776
gnsstk::PNBBDSD2NavDataFactory::AmEpID
Store transmit time and corresponding AmEpID for amEpIDMap.
Definition: PNBBDSD2NavDataFactory.hpp:202
gnsstk::PNBBDSD2NavDataFactory::makeHealth
void makeHealth(const PackedNavBitsPtr &navIn, NavDataPtrList &navOut, unsigned long subjID, unsigned startBit1, unsigned numBits1, unsigned startBit2=0, unsigned numBits2=0)
Definition: PNBBDSD2NavDataFactory.cpp:832
gnsstk::PNBBDSD2NavDataFactory::finishAlm
void finishAlm(bool fromWNa, const NavSatelliteID &key, NavDataPtrList &navOut)
Definition: PNBBDSD2NavDataFactory.cpp:889
PNBNavDataFactory.hpp
gnsstk::PNBNavDataFactory::processEph
bool processEph
If true, ephemeris data will be output by addData.
Definition: PNBNavDataFactory.hpp:124
gnsstk::PNBBDSD2NavDataFactory::dumpState
void dumpState(std::ostream &s) const
Definition: PNBBDSD2NavDataFactory.cpp:976
gnsstk::CommonTime
Definition: CommonTime.hpp:84
gnsstk::PNBBDSD2NavDataFactory
Definition: PNBBDSD2NavDataFactory.hpp:85
gnsstk::PNBBDSD2NavDataFactory::heaAcc
std::map< NavSatelliteID, uint16_t > heaAcc
Definition: PNBBDSD2NavDataFactory.hpp:250
gnsstk::PNBBDSD2NavDataFactory::AlmPtrList
std::list< AlmPtr > AlmPtrList
Alias for list of almanac objects.
Definition: PNBBDSD2NavDataFactory.hpp:229
gnsstk::PNBBDSD2NavDataFactory::resetState
void resetState() override
Definition: PNBBDSD2NavDataFactory.cpp:880
gnsstk::PNBBDSD2NavDataFactory::addData
bool addData(const PackedNavBitsPtr &navIn, NavDataPtrList &navOut, double cadence=-1) override
Definition: PNBBDSD2NavDataFactory.cpp:71
gnsstk::PNBBDSD2NavDataFactory::AmEpID::isExpanded
bool isExpanded(const CommonTime &t) const
Definition: PNBBDSD2NavDataFactory.cpp:1023
gnsstk::PNBBDSD2NavDataFactory::AmEpID::setValues
void setValues(const BDSWeekSecond &t, uint8_t id)
Definition: PNBBDSD2NavDataFactory.cpp:1032
BDSWeekSecond.hpp
gnsstk::BDSWeekSecond
Definition: BDSWeekSecond.hpp:56
gnsstk::PNBBDSD2NavDataFactory::processSF5Pg101
bool processSF5Pg101(const PackedNavBitsPtr &navIn, NavDataPtrList &navOut)
Definition: PNBBDSD2NavDataFactory.cpp:656
gnsstk::PNBBDSD2NavDataFactory::AmEpID::mfEnd
CommonTime mfEnd
Transmit time of 1st bit of next superframe.
Definition: PNBBDSD2NavDataFactory.hpp:223
gnsstk::PNBBDSD2NavDataFactory::AmEpID::amEpID
uint8_t amEpID
The two-bit AmEpID value.
Definition: PNBBDSD2NavDataFactory.hpp:224
gnsstk::PNBBDSD2NavDataFactory::processSF5Pg36
bool processSF5Pg36(const PackedNavBitsPtr &navIn, NavDataPtrList &navOut)
Definition: PNBBDSD2NavDataFactory.cpp:597
gnsstk::FactoryControl::bdsTimeZZfilt
bool bdsTimeZZfilt
Definition: FactoryControl.hpp:62
gnsstk::PNBNavDataFactory
Definition: PNBNavDataFactory.hpp:61


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