source: ntrip/trunk/BNC/src/satObs.h@ 6823

Last change on this file since 6823 was 6812, checked in by stoecker, 10 years ago

integrate RTCM3 parsing into BNC and directly fill target structures, add doxygen documentation

File size: 4.7 KB
Line 
1#ifndef SATOBS_H
2#define SATOBS_H
3
4#include <string>
5#include <vector>
6#include <newmat.h>
7
8#include <QtCore>
9
10#include "bncconst.h"
11#include "bnctime.h"
12#include "t_prn.h"
13
14class t_frqObs {
15 public:
16 t_frqObs() {
17 _code = 0.0;
18 _codeValid = false;
19 _phase = 0.0;
20 _phaseValid = false;
21 _doppler = 0.0;
22 _dopplerValid = false;
23 _snr = 0.0;
24 _snrValid = false;
25 _slip = false;
26 _slipCounter = 0;
27 _biasJumpCounter = 0;
28 }
29 std::string _rnxType2ch;
30 double _code;
31 bool _codeValid;
32 double _phase;
33 bool _phaseValid;
34 double _doppler;
35 bool _dopplerValid;
36 double _snr;
37 bool _snrValid;
38 bool _slip;
39 int _slipCounter;
40 int _biasJumpCounter;
41};
42
43class t_satObs {
44 public:
45 t_satObs() {}
46 t_satObs(const t_satObs& old) { // copy constructor (deep copy)
47 _staID = old._staID;
48 _prn = old._prn;
49 _time = old._time;
50 for (unsigned ii = 0; ii < old._obs.size(); ii++) {
51 _obs.push_back(new t_frqObs(*old._obs[ii]));
52 }
53 }
54 /**
55 * Destructor of satellite measurement storage class
56 */
57 ~t_satObs()
58 {
59 clear();
60 }
61
62 /**
63 * Cleanup function resets all elements to initial state.
64 */
65 inline void clear(void)
66 {
67 for (unsigned ii = 0; ii < _obs.size(); ii++)
68 delete _obs[ii];
69 _obs.clear();
70 _obs.resize(0);
71 _time.reset();
72 _prn.clear();
73 _staID.clear();
74 }
75
76 std::string _staID;
77 t_prn _prn;
78 bncTime _time;
79 std::vector<t_frqObs*> _obs;
80};
81
82class t_orbCorr {
83 public:
84 t_orbCorr();
85 static void writeEpoch(std::ostream* out, const QList<t_orbCorr>& corrList);
86 static void readEpoch(const std::string& epoLine, std::istream& in, QList<t_orbCorr>& corrList);
87 std::string _staID;
88 t_prn _prn;
89 unsigned short _iod;
90 bncTime _time;
91 unsigned int _updateInt;
92 char _system;
93 ColumnVector _xr;
94 ColumnVector _dotXr;
95};
96
97class t_clkCorr {
98 public:
99 t_clkCorr();
100 static void writeEpoch(std::ostream* out, const QList<t_clkCorr>& corrList);
101 static void readEpoch(const std::string& epoLine, std::istream& in, QList<t_clkCorr>& corrList);
102 std::string _staID;
103 t_prn _prn;
104 unsigned short _iod;
105 bncTime _time;
106 unsigned int _updateInt;
107 double _dClk;
108 double _dotDClk;
109 double _dotDotDClk;
110};
111
112class t_frqCodeBias {
113 public:
114 t_frqCodeBias() {
115 _value = 0.0;
116 }
117 std::string _rnxType2ch;
118 double _value;
119};
120
121class t_satCodeBias {
122 public:
123 static void writeEpoch(std::ostream* out, const QList<t_satCodeBias>& biasList);
124 static void readEpoch(const std::string& epoLine, std::istream& in, QList<t_satCodeBias>& biasList);
125 std::string _staID;
126 t_prn _prn;
127 bncTime _time;
128 unsigned int _updateInt;
129 std::vector<t_frqCodeBias> _bias;
130};
131
132class t_frqPhaseBias {
133 public:
134 t_frqPhaseBias() {
135 _value = 0.0;
136 _fixIndicator = 0;
137 _fixWideLaneIndicator = 0;
138 _jumpCounter = 0;
139 }
140 std::string _rnxType2ch;
141 double _value;
142 int _fixIndicator;
143 int _fixWideLaneIndicator;
144 int _jumpCounter;
145};
146
147class t_satPhaseBias {
148 public:
149 t_satPhaseBias() {
150 _updateInt = 0;
151 _yawDeg = 0.0;
152 _yawDegRate = 0.0;
153 }
154 static void writeEpoch(std::ostream* out, const QList<t_satPhaseBias>& biasList);
155 static void readEpoch(const std::string& epoLine, std::istream& in, QList<t_satPhaseBias>& biasList);
156 std::string _staID;
157 t_prn _prn;
158 bncTime _time;
159 unsigned int _updateInt;
160 double _yawDeg;
161 double _yawDegRate;
162 std::vector<t_frqPhaseBias> _bias;
163};
164
165class t_vTecLayer {
166 public:
167 double _height;
168 Matrix _C;
169 Matrix _S;
170};
171
172class t_vTec {
173 public:
174 static void write(std::ostream* out, const t_vTec& vTec);
175 static void read(const std::string& epoLine, std::istream& in, t_vTec& vTec);
176 std::string _staID;
177 bncTime _time;
178 unsigned int _updateInt;
179 std::vector<t_vTecLayer> _layers;
180};
181
182class t_corrSSR {
183 public:
184 enum e_type {clkCorr, orbCorr, codeBias, phaseBias, vTec, unknown};
185 static e_type readEpoLine(const std::string& line, bncTime& epoTime,
186 unsigned int& updateInt, int& numEntries, std::string& staID);
187};
188
189#endif
Note: See TracBrowser for help on using the repository browser.