1 //==============================================================================
2 //
3 //  This file is part of GPSTk, the GPS Toolkit.
4 //
5 //  The GPSTk 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 GPSTk 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 GPSTk; 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-2020, The Board of Regents of The University of Texas System
22 //
23 //==============================================================================
24 
25 //==============================================================================
26 //
27 //  This software was developed by Applied Research Laboratories at the
28 //  University of Texas at Austin, under contract to an agency or agencies
29 //  within the U.S. Department of Defense. The U.S. Government retains all
30 //  rights to use, duplicate, distribute, disclose, or release this software.
31 //
32 //  Pursuant to DoD Directive 523024
33 //
34 //  DISTRIBUTION STATEMENT A: This software has been approved for public
35 //                            release, distribution is unlimited.
36 //
37 //==============================================================================
38 
39 /// @file BDSEphemerisStore.cpp
40 /// Class for storing and/or computing position, velocity, and clock data using
41 /// tables of <SatID, <time, BDSEphemeris> >. Inherits OrbitEphStore, which includes
42 /// initial and final times and search methods. BDSEphemeris inherits OrbitEph and
43 /// adds health and accuracy information, which this class makes use of.
44 
45 #include <iostream>
46 #include <fstream>
47 #include <iomanip>
48 
49 #include "BDSEphemerisStore.hpp"
50 #include "BDSWeekSecond.hpp"
51 
52 using namespace std;
53 using namespace gpstk::StringUtils;
54 
55 namespace gpstk
56 {
57    //-----------------------------------------------------------------------------
58    // See notes in the .hpp. This function is designed to be called AFTER all elements
59    // are loaded. It can then make adjustments to time relationships based on
60    // inter-comparisons between sets of elements that cannot be performed until the
61    // ordering has been determined.
rationalize(void)62    void BDSEphemerisStore::rationalize(void)
63    {
64    }
65 
66    //-----------------------------------------------------------------------------
67    // Add all ephemerides to an existing list<BDSEphemeris> for given satellite
68    // If sat.id is -1 (the default), all ephemerides are added.
69    // @return the number of ephemerides added.
addToList(list<BDSEphemeris> & bdslist,SatID sat) const70    int BDSEphemerisStore::addToList(list<BDSEphemeris>& bdslist, SatID sat) const
71    {
72       // get the list from OrbitEphStore
73       list<OrbitEph*> oelst;
74       OrbitEphStore::addToList(oelst,SatID(-1,SatelliteSystem::BeiDou));
75 
76       int n(0);
77       list<OrbitEph*>::const_iterator it;
78       for(it = oelst.begin(); it != oelst.end(); ++it) {
79          OrbitEph *ptr = *it;
80          BDSEphemeris *bdsptr = dynamic_cast<BDSEphemeris*>(ptr);
81          BDSEphemeris bdseph(*bdsptr);
82          bdslist.push_back(bdseph);
83          n++;
84       }
85 
86       return n;
87    }
88 
89 } // namespace
90