source: ntrip/trunk/BNC/src/PPP/pppObsPool.cpp@ 11047

Last change on this file since 11047 was 11047, checked in by stuerze, 8 hours ago

updates regarding RTCM-SSR and some ovarall improvements

  • Property svn:keywords set to Author Date Id Rev URL;svn:eol-style=native
  • Property svn:mime-type set to text/plain
File size: 5.4 KB
Line 
1/* -------------------------------------------------------------------------
2 * BKG NTRIP Client
3 * -------------------------------------------------------------------------
4 *
5 * Class: t_pppObsPool
6 *
7 * Purpose: Buffer with observations
8 *
9 * Author: L. Mervart
10 *
11 * Created: 29-Jul-2014
12 *
13 * Changes:
14 *
15 * -----------------------------------------------------------------------*/
16
17#include <iomanip>
18#include "pppObsPool.h"
19#include "pppClient.h"
20
21using namespace BNC_PPP;
22using namespace std;
23
24// Constructor
25/////////////////////////////////////////////////////////////////////////////
26t_pppObsPool::t_epoch::t_epoch(const bncTime& epoTime, vector<t_pppSatObs*>& obsVector,
27 bool pseudoObsIono) {
28 _epoTime = epoTime;
29 _pseudoObsIono = pseudoObsIono;
30 for (unsigned ii = 0; ii < obsVector.size(); ii++) {
31 _obsVector.push_back(obsVector[ii]);
32 }
33 obsVector.clear();
34}
35
36// Destructor
37/////////////////////////////////////////////////////////////////////////////
38t_pppObsPool::t_epoch::~t_epoch() {
39 for (unsigned ii = 0; ii < _obsVector.size(); ii++) {
40 delete _obsVector[ii];
41 }
42}
43
44// Constructor
45/////////////////////////////////////////////////////////////////////////////
46t_pppObsPool::t_pppObsPool() {
47 for (unsigned ii = 0; ii <= t_prn::MAXPRN; ii++) {
48 _satCodeBiases[ii] = 0;
49 }
50 for (unsigned ii = 0; ii <= t_prn::MAXPRN; ii++) {
51 _satPhaseBiases[ii] = 0;
52 }
53 for (unsigned ii = 0; ii <= t_prn::MAXPRN; ii++) {
54 _satAntennas[ii] = 0;
55 }
56 _vTec = 0;
57 _metaData = 0;
58}
59
60// Destructor
61/////////////////////////////////////////////////////////////////////////////
62t_pppObsPool::~t_pppObsPool() {
63 for (unsigned ii = 0; ii <= t_prn::MAXPRN; ii++) {
64 delete _satCodeBiases[ii];
65 }
66 for (unsigned ii = 0; ii <= t_prn::MAXPRN; ii++) {
67 delete _satPhaseBiases[ii];
68 }
69 for (unsigned ii = 0; ii <= t_prn::MAXPRN; ii++) {
70 delete _satAntennas[ii];
71 }
72 delete _vTec;
73 delete _metaData;
74 while (_epochs.size() > 0) {
75 delete _epochs.front();
76 _epochs.pop_front();
77 }
78}
79
80//
81/////////////////////////////////////////////////////////////////////////////
82void t_pppObsPool::putCodeBias(t_satCodeBias* satCodeBias) {
83 int iPrn = satCodeBias->_prn.toInt();
84 if (iPrn == 0) { // satellite number out of range
85 delete satCodeBias;
86 return;
87 }
88 delete _satCodeBiases[iPrn];
89 _satCodeBiases[iPrn] = satCodeBias;
90 if (OPT->_logMode > t_pppOptions::normal) {
91 LOG << "codeBias " << string(satCodeBias->_time) << ' ' << satCodeBias->_prn.toString();
92 for (const auto& bias : satCodeBias->_bias) {
93 LOG << " " << bias._rnxType2ch << ' ' << setw(7) << setprecision(3) << bias._value;
94 }
95 LOG << endl;
96 }
97}
98
99//
100/////////////////////////////////////////////////////////////////////////////
101void t_pppObsPool::putPhaseBias(t_satPhaseBias* satPhaseBias) {
102 int iPrn = satPhaseBias->_prn.toInt();
103 if (iPrn == 0) { // satellite number out of range
104 delete satPhaseBias;
105 return;
106 }
107 delete _satPhaseBiases[iPrn];
108 _satPhaseBiases[iPrn] = satPhaseBias;
109 if (OPT->_logMode > t_pppOptions::normal) {
110 LOG.setf(ios::fixed);
111 LOG << "phaseBias " << string(satPhaseBias->_time) << ' ' << satPhaseBias->_prn.toString()
112 << ' ' << setw(7) << setprecision(2) << satPhaseBias->_yaw * 180.0 / M_PI
113 << ' ' << setw(7) << setprecision(3) << satPhaseBias->_yawRate * 180.0 / M_PI;
114 for (const auto& bias : satPhaseBias->_bias) {
115 LOG << " " << bias._rnxType2ch << ' ' << setw(2) << bias._jumpCounter;
116 if (bias._fixIndicator) {
117 LOG << " x ";
118 }
119 else {
120 LOG << " . ";
121 }
122 LOG << setw(6) << setprecision(3) << bias._value;
123 }
124 LOG << endl;
125 }
126}
127
128//
129/////////////////////////////////////////////////////////////////////////////
130void t_pppObsPool::putSatAntenna(t_satAntenna* satAntenna) {
131 int iPrn = satAntenna->_prn.toInt();
132 if (iPrn == 0) { // satellite number out of range
133 delete satAntenna;
134 return;
135 }
136 delete _satAntennas[iPrn];
137 _satAntennas[iPrn] = satAntenna;
138}
139
140//
141/////////////////////////////////////////////////////////////////////////////
142void t_pppObsPool::clearCodeBiases(char sys) {
143 for (unsigned iPrn = 1; iPrn <= t_prn::MAXPRN; ++iPrn) {
144 t_prn prn; prn.set(iPrn);
145 if (prn.system() == sys) {
146 delete _satCodeBiases[iPrn];
147 _satCodeBiases[iPrn] = 0;
148 }
149 }
150}
151
152//
153/////////////////////////////////////////////////////////////////////////////
154void t_pppObsPool::clearPhaseBiases(char sys) {
155 for (unsigned iPrn = 1; iPrn <= t_prn::MAXPRN; ++iPrn) {
156 t_prn prn; prn.set(iPrn);
157 if (prn.system() == sys) {
158 delete _satPhaseBiases[iPrn];
159 _satPhaseBiases[iPrn] = 0;
160 }
161 }
162}
163
164//
165/////////////////////////////////////////////////////////////////////////////
166void t_pppObsPool::putTec(t_vTec* vTec) {
167 delete _vTec;
168 _vTec = new t_vTec(*vTec);
169 delete vTec;
170}
171
172//
173/////////////////////////////////////////////////////////////////////////////
174void t_pppObsPool::putMetaData(t_metaData* metaData) {
175 delete _metaData;
176 _metaData = new t_metaData(*metaData);
177 delete metaData;
178}
179
180//
181/////////////////////////////////////////////////////////////////////////////
182void t_pppObsPool::putEpoch(const bncTime& epoTime, vector<t_pppSatObs*>& obsVector,
183 bool pseudoObsIono) {
184 const unsigned MAXSIZE = 2;
185 _epochs.push_back(new t_epoch(epoTime, obsVector, pseudoObsIono));
186
187 if (_epochs.size() > MAXSIZE) {
188 delete _epochs.front();
189 _epochs.pop_front();
190 }
191}
Note: See TracBrowser for help on using the repository browser.