source: ntrip/trunk/GnssCenter/thrift/test_rtnet/rtnet_data.thrift@ 4938

Last change on this file since 4938 was 4938, checked in by mervart, 11 years ago
File size: 12.1 KB
Line 
1namespace cpp com.gpssolutions.rtnet
2namespace java com.gpssolutions.rtnet
3namespace perl gpss
4
5struct PosNEU {
6 1: double n, // north (meters)
7 2: double e, // east (meters)
8 3: double u // up (meters)
9}
10
11struct PosXYZ {
12 1: double x, // x (meters)
13 2: double y, // y (meters)
14 3: double z // z (meters)
15}
16
17struct StationInfo {
18 1: string ID,
19 2: PosNEU sigma0,
20 3: PosNEU sigmaNoise,
21 4: PosXYZ xyz,
22}
23
24struct StationAuxInfo {
25 1: string ID,
26 2: string receiverID,
27 3: string antennaID,
28 4: PosNEU eccentricity,
29}
30
31enum ConstellationType {
32 GPS = 1,
33 GLONASS = 2,
34 SBAS = 3,
35 GALILEO = 4,
36 QZSS = 5,
37 COMPASS = 6,
38}
39
40// consider adding health flags
41struct SatelliteXYZ {
42 1: byte ID,
43 2: ConstellationType constellation,
44 3: PosXYZ xyz,
45// 4: double lon, // SC: Not needed
46// 5: double lat, // SC: Not needed
47 6: bool used, // was satellite used in processing anywhere?
48}
49
50enum FrequencyType {
51 // GPS phase
52 Gp1=1,
53 Gp2=2,
54 Gp5=3,
55 GpIF=4,
56 GpGF=5,
57 GpWL=6,
58 GpMW=7,
59
60 // Galileo phase
61 Ep1=8,
62 Ep5=9,
63 Ep6=10,
64 Ep7=11,
65 Ep8=12,
66 EpIF=13,
67 EpGF=14,
68 EpWL=15,
69 EpMW=16,
70
71 // GLONASS phase
72 Rp1=17,
73 Rp2=18,
74 RpIF=19,
75 RpGF=20,
76 RpWL=21,
77 RpMW=22,
78
79 // GPS code
80 Gc1=23,
81 Gc2=24,
82 Gc5=25,
83 GcIF=26,
84 GcGF=27,
85
86 // Galileo code
87 Ec1=28,
88 Ec5=29,
89 Ec6=30,
90 Ec7=31,
91 Ec8=32,
92 EcIF=33,
93 EcGF=34,
94
95 // GLONASS code
96 Rc1=35,
97 Rc2=36,
98 RcIF=37,
99 RcGF=38,
100
101 // GPS doppler
102 Gd1=39,
103 Gd2=40,
104}
105
106struct ZDAmb {
107 1: byte satelliteID,
108 2: ConstellationType constellation,
109 3: string stationID,
110 4: FrequencyType frequency,
111 5: bool constrainedFlag,
112 6: i16 duration,
113 7: bool hasObsFlag,
114 10: bool isNewAmb,
115 11: bool isResetAmbL1p,
116 12: bool isResetAmbClock,
117 8: optional double azimuth,
118 9: optional double elevation,
119}
120
121enum AmbresStatus
122{
123 AmbFloat = 1,
124 AmbFixed = 2,
125 AmbDumped = 3
126}
127
128struct DDAmbres
129{
130 1: byte satelliteID,
131 2: ConstellationType constellation,
132 3: AmbresStatus statusFlag,
133 4: bool hasObsFlag,
134}
135
136struct DDAmbresBaseline
137{
138 1: string stationID_1,
139 2: string stationID_2,
140 3: bool redundant,
141 4: optional list<DDAmbres> wideLaneStatisticList,
142 5: optional list<DDAmbres> narrowLaneStatisticList,
143 6: optional list<DDAmbres> l1StatisticList,
144 7: optional list<DDAmbres> l2StatisticList,
145}
146
147/*struct DDAmbresStatistic {
148 1: list<DDAmbresBaseline> baselineList
149}*/
150
151/**
152 * Stores information about rtnet job.
153 * For now, it only stores the rtnet job's name (should be unique).
154 * Eventually, may store other useful information such as the
155 * input file contents, the name of who started the job, etc.
156 */
157struct RtnetInformation {
158 1: string jobName
159}
160
161// Data needed for plots
162
163struct SatelliteClock {
164 1: byte satelliteID,
165 2: ConstellationType constellation,
166 3: double clock, // satellite clock estimate (s)
167 4: double clock_err, // satellite clock error (s)
168}
169
170struct DGPSCorr {
171 1: byte satelliteID,
172 2: ConstellationType constellation,
173 5: double fkpN, // FKP non-dispersive correction, N-S gradient
174 6: double fkpE, // FKP non-dispersive correction, E-W gradient
175 10: i16 nsdfix, // number of stations with fixed ZD ambiguity
176 11: i16 nsta, // number of stations
177 12: i16 cjumpCnt, // correction jump counter
178 13: double deltaMW, // MW bias
179 14: double deltaP3, // P3 bias
180 15: double te0, // vertical TEC
181 16: double teN, // vertical TEC, N-S gradient
182 17: double teE, // vertical TEC, E-W gradient
183 18: double teNN, // vertical TEC, gradient, 2nd order
184 19: double teEE, // vertical TEC, gradient, 2nd order
185 20: double teNE, // vertical TEC, gradient, 2nd order
186 }
187
188enum SolutionQuality {
189 NoData=0, // No data for receiver for the epoch. In network mode, may also mean
190 // unable to create a baseline to a fixed station.
191 LowNsv=1, // Not enough SVs or solution has very high formal error
192 NoCorrection=2, // Have a solution but no correction values (legacy from P4)
193 HighRMS=3, // Have a solution with correction values, but the RMS is high
194 LowRMS=4, // Have a solution with correction values with a good RMS
195}
196
197struct StationPosition {
198 1: double x, // x position (m) (a-priori + estimate)
199 2: double xe, // x error (m)
200 3: double y, // y position (m) (a-priori + estimate)
201 4: double ye, // y error (m)
202 5: double z, // z position (m) (a-priori + estimate)
203 6: double ze, // z error (m)
204 7: double eh, // ellipsoid height (m)
205 8: double ehe, // ellipsoid height error (m)
206 9: double dn, // north position (m)
207 10: double dne, // north position error (m)
208 11: double de, // east position (m)
209 12: double dee, // east position error (m)
210 13: double dh, // height position (m)
211 14: double dhe, // height position error (m)
212 15: double GDOP, // (m)
213 16: double PDOP, // (m)
214 17: byte nsv_gps_used, // number of GPS satellites used in position calculation
215 18: byte nsv_glonass_used, // number of GLONASS satellites used in position calculation
216 20: byte nsv_galileo_used, // number of Galileo satellites used in position calculation
217 21: byte nsv_qzss_used, // number of QZSS satellites used in position calculation
218 19: SolutionQuality qFlag, // flag used to estimate quality of solution
219}
220
221struct SatelliteEleAzi {
222 1: byte ID, // satellite PRN/slot number
223 2: ConstellationType constellation,
224 3: double elevation, // elevation in degrees
225 4: double azimuth // azimuth in degrees
226}
227
228enum LinearCombination {
229 L1 = 1,
230 L2 = 2,
231 L3 = 3,
232 L1L2 = 4,
233 IF = 5,
234 GF = 6,
235 MW = 7,
236 MWIF = 8,
237 PL = 9, // (P1+L1)/2 (ionospheric-free)
238 WL = 10,
239}
240
241enum ProcessedLC {
242 Gp1, Gp2, Gp5, GpIF, GpGF, GpWL, GpMW, // GPS Phase
243 Ep1, Ep5, Ep6, Ep7, Ep8, EpIF, EpGF, EpWL, EpMW, // Galileo Phase
244 Rp1, Rp2, RpIF, RpGF, RpWL, RpMW, // Glonass Phase
245 Gc1, Gc2, Gc5, GcIF, GcGF, // GPS Code
246 Ec1, Ec5, Ec6, Ec7, Ec8, EcIF, EcGF, // Galileo Code
247 Rc1, Rc2, RcIF, RcGF, // Glonass Code
248 Gd1, Gd2, // GPS Doppler
249 GpPL, // GPS (P1+L1)/2
250 RpPL, // GLONASS (P1+L1)/2
251 invalidLC
252}
253
254struct ObservationMarkCount {
255 1: byte n_mark_none, // 0 (not marked)
256 2: byte n_mark_mis, // 1 (missing marked -- if processing dual-frequency data, marked if one frequency is missing)
257 3: byte n_mark_ele, // 2 (elevation marked)
258 4: byte n_mark_cor, // 3 (DGPS correction marked)
259 5: byte n_mark_orb, // 4 (orbit marked)
260 6: byte n_mark_unp, // 5 (unpaired observable between LC1 and LC2)
261 7: byte n_mark_ca, // 6 (CA marked)
262 8: byte n_mark_out, // 7 (outlier)
263 9: byte n_mark_crx, // 8 (SATCRUX marked)
264 10: byte n_mark_iod, // 9 (not used by current version of rtnet)
265 11: byte n_mark_dcb, // 10 (satellite DCB marked)
266 12: byte n_mark_few, // 11 (not used by current version of rtnet)
267 13: byte n_mark_blu, // 12 (blunder marked -- something to do with outlier detection. Perhaps if set, internal logic error in rtnet?)
268 14: byte n_mark_ban, // 13 (not enough satellites for Bancroft solution)
269 15: byte n_mark_l1m, // 14 (L1 missing)
270 16: byte n_mark_l1i, // 15 (not used by current version of rtnet)
271 17: byte n_mark_ion, // 16 (ionospheric delay marked)
272 18: byte n_mark_trp, // 17 (troposphere marked)
273 19: byte n_mark_glo, // 18 (GLONASS phase marked because channel number is unknown)
274 20: byte n_mark_exc, // 19 (satellite excluded from processing by user or because satellite is unhealthy)
275 21: byte n_mark_hlt, // 20 (not used by current version of rtnet)
276 22: byte n_mark_old, // 21 (marked because orbit is too old)
277 23: byte n_mark_rho, // 22 (computing range to satellite failed--solution did not converge)
278 24: byte n_mark_oth, // 23 (other marked)
279}
280
281struct SvResidualInfo {
282 1: byte ID, // satellite PRN/slot number
283 2: ConstellationType constellation,
284 3: double residual, // meters
285}
286
287struct ResidualInfo {
288 1: ProcessedLC lc,
289 2: double meanResid,
290 3: double pv,
291 4: list<SvResidualInfo> svResid,
292}
293
294struct StationResults {
295 1: string stationName,
296 2: LinearCombination lc, // linear combination of solution
297 // number of observations
298 3: byte n_p1, // # of P1 observations
299 4: byte n_l1, // # of L1 observations
300 5: byte n_p2, // # of P2 observations
301 6: byte n_l2, // # of L2 observations
302 7: byte n_g1, // # of G1 observations (GLONASS P1)
303 8: byte n_g2, // # of G2 observations (GLONASS P2)
304 9: list<SatelliteEleAzi> svPosList, // list of satellites used in calculation
305 10: double rcv_clk, // receiver clock (m)
306 11: double rcv_clke, // receiver clock error (m)
307 12: double GDOP, // GDOP obtained with satellites used in processing
308 13: double PDOP, // PDOP obtained with satellites used in processing
309 24: byte nsv_gps_used, // number of GPS satellites used in processing
310 25: byte nsv_glonass_used, // number of GLONASS satellites used in processing
311 26: byte nsv_galileo_used, // number of Galileo satellites used in processing
312 27: byte nsv_qzss_used, // number of QZSS satellites used in processing
313 // number of observations for each mark (including mark_none, ie, not marked)
314 14: ObservationMarkCount n_mark_p1,
315 15: ObservationMarkCount n_mark_l1,
316 16: ObservationMarkCount n_mark_p2,
317 17: ObservationMarkCount n_mark_l2,
318 18: ObservationMarkCount n_mark_l3,
319 // station position and estimates
320 19: optional StationPosition filtered_result, // primary position solution (optional because station could be fixed)
321 20: optional StationPosition se_result, // single epoch result
322 // troposphere data
323 21: optional double ztd, // zenith delay (m)
324 22: optional double ztde, // zenith delay error (m)
325 23: list<ResidualInfo> residList, // residual information for each LC
326}
327// satellite elevation and azimuth (list)
328
329enum MissingEpochData
330{
331 NoError = 0, // solution was generated
332 MissingAllStationObservation = 1, // no station observations available
333 MissingOrbit = 2, // no orbit information available
334 MissingCorrection = 3, // correction is unavailable
335 KalmanFilterFailed = 4, // Kalman filter step failed
336}
337
338enum MissingStationData
339{
340 NoError = 0, // station could be processed
341 StationFixed = 1, // no position result because station is fixed
342 MissingStationObservation = 2, // no observations available for station
343 TooFewBancroft = 3, // not enough satellites to generate Bancroft solution
344 MissingStationInfo = 4, // station missing from coordinate file
345 MissingAntennaInfo = 5, // station's antenna not present in ATX file
346 // (if this is an immediate error by rtnet, this flag isn't needed)
347 StationUserMarked = 6, // station was removed from processing by user
348}
349
350struct RtnetEpoch {
351 1: i16 mjlDay, // MJL day of epoch
352 2: i32 msecDay, // time of day (msec)
353 3: list<StationResults> stationResultList, // set for each linear combination
354 4: MissingEpochData missing, // set to NoError if data is present,
355 // otherwise solution could not be generated because of specified reason
356 5: map<string,MissingStationData> dataAvailableList, // flag for each station in STALIST
357 6: i32 processTime, // process time (dt), msec
358 7: i32 compTime, // computation time (dt_proc), msec
359 8: i32 latency, // latency, msec
360}
361
362// Needed for plots
363//Per station data:
364//X Troposphere: quality flag, ztda, ztd, ztde
365//X Number of observations per station (ie, # P1, # L1, # L2, # G1, etc)
366//X GDOP, PDOP, # sv_used
367//X mres, pv, res_code_flag
368//X x, xi, xe, y, yi, ye, z, zi, ze, dn, dne, de, dee, dh, dhe
369//X receiver clk, clki, clke
370//List of satellites used
371//# new ambiguities, # clock resets, # L1 ambiguity resets
372
373//# of each mark flag for P1, L1 and L2
374//-- so perhaps 10 mark 0s for P1, 2 mark 3s for P1, 10 mark 0s for L1, etc.
375
376// other ideas:
377// Send basic input file information or entire input file.
378// Send current file used for orbits (or host/port if using external orbits).
379
380
381//----
382//Data latency per epoch. Processing time per step.
383//slant delay (maybe same as mres) (per station, per satellite, per LC, per epoch)
384
Note: See TracBrowser for help on using the repository browser.