MRTKLIB 0.7.14
Modernized GNSS Positioning Library
Loading...
Searching...
No Matches
mrtk_nav.h
Go to the documentation of this file.
1/*------------------------------------------------------------------------------
2 * mrtk_nav.h : navigation data type definitions and functions
3 *
4 * Copyright (C) 2026 H.SHIONO (MRTKLIB Project)
5 * Copyright (C) 2023-2025 Cabinet Office, Japan
6 * Copyright (C) 2024-2025 Lighthouse Technology & Consulting Co. Ltd.
7 * Copyright (C) 2023-2025 Japan Aerospace Exploration Agency
8 * Copyright (C) 2023-2025 TOSHIBA ELECTRONIC TECHNOLOGIES CORPORATION
9 * Copyright (C) 2015- Mitsubishi Electric Corp.
10 * Copyright (C) 2014 Geospatial Information Authority of Japan
11 * Copyright (C) 2014 T.SUZUKI
12 * Copyright (C) 2007-2023 T.TAKASU
13 *
14 * SPDX-License-Identifier: BSD-2-Clause
15 *----------------------------------------------------------------------------*/
16/**
17 * @file mrtk_nav.h
18 * @brief MRTKLIB Navigation Module — Navigation data types and satellite/nav
19 * utility functions.
20 *
21 * This header provides the core navigation data structures extracted from
22 * rtklib.h with zero algorithmic changes. It includes pcv_t, peph_t, pclk_t,
23 * TEC/SBAS/SSR types, the central nav_t aggregation struct, and satellite
24 * number/system conversion functions.
25 *
26 * @note Functions declared here are implemented in mrtk_nav.c.
27 */
28#ifndef MRTK_NAV_H
29#define MRTK_NAV_H
30
31#ifdef __cplusplus
32extern "C" {
33#endif
34
35#include "mrtklib/mrtk_eph.h"
37#include "mrtklib/mrtk_obs.h"
38#include "mrtklib/mrtk_peph.h"
39#include "mrtklib/mrtk_time.h"
40
41/*============================================================================
42 * Antenna Parameter Types
43 *===========================================================================*/
44
45typedef struct { /* antenna parameter type */
46 int sat; /* satellite number (0:receiver) */
47 char type[MAXANT]; /* antenna type */
48 char code[MAXANT]; /* serial number or satellite code */
49 gtime_t ts, te; /* valid time start and end */
50 double off[NFREQPCV][3]; /* phase center offset e/n/u or x/y/z (m) */
51 double var[NFREQPCV][19]; /* phase center variation (m) */
52 /* el=90,85,...,0 or nadir=0,1,2,3,... (deg) */
53} pcv_t;
54
55typedef struct { /* antenna parameters type */
56 int n, nmax; /* number of data/allocated */
57 pcv_t* pcv; /* antenna parameters data */
58} pcvs_t;
59
60/*============================================================================
61 * Precise Ephemeris / Clock Types
62 *===========================================================================*/
63
64typedef struct { /* precise ephemeris type */
65 gtime_t time; /* time (GPST) */
66 int index; /* ephemeris index for multiple files */
67 double pos[MAXSAT][4]; /* satellite position/clock (ecef) (m|s) */
68 float std[MAXSAT][4]; /* satellite position/clock std (m|s) */
69 double vel[MAXSAT][4]; /* satellite velocity/clk-rate (m/s|s/s) */
70 float vst[MAXSAT][4]; /* satellite velocity/clk-rate std (m/s|s/s) */
71 float cov[MAXSAT][3]; /* satellite position covariance (m^2) */
72 float vco[MAXSAT][3]; /* satellite velocity covariance (m^2) */
73} peph_t;
74
75typedef struct { /* precise clock type */
76 gtime_t time; /* time (GPST) */
77 int index; /* clock index for multiple files */
78 double clk[MAXSAT][1]; /* satellite clock (s) */
79 float std[MAXSAT][1]; /* satellite clock std (s) */
80} pclk_t;
81
82/*============================================================================
83 * TEC Grid Type
84 *===========================================================================*/
85
86typedef struct { /* TEC grid type */
87 gtime_t time; /* epoch time (GPST) */
88 int ndata[3]; /* TEC grid data size {nlat,nlon,nhgt} */
89 double rb; /* earth radius (km) */
90 double lats[3]; /* latitude start/interval (deg) */
91 double lons[3]; /* longitude start/interval (deg) */
92 double hgts[3]; /* heights start/interval (km) */
93 double* data; /* TEC grid data (tecu) */
94 float* rms; /* RMS values (tecu) */
95} tec_t;
96
97/*============================================================================
98 * SBAS Types
99 *===========================================================================*/
100
101typedef struct { /* SBAS message type */
102 int week, tow; /* receiption time */
103 uint8_t prn, rcv; /* SBAS satellite PRN,receiver number */
104 uint8_t msg[29]; /* SBAS message (226bit) padded by 0 */
105} sbsmsg_t;
106
107typedef struct { /* SBAS messages type */
108 int n, nmax; /* number of SBAS messages/allocated */
109 sbsmsg_t* msgs; /* SBAS messages */
110} sbs_t;
111
112typedef struct { /* SBAS fast correction type */
113 gtime_t t0; /* time of applicability (TOF) */
114 double prc; /* pseudorange correction (PRC) (m) */
115 double rrc; /* range-rate correction (RRC) (m/s) */
116 double dt; /* range-rate correction delta-time (s) */
117 int iodf; /* IODF (issue of date fast corr) */
118 int16_t udre; /* UDRE+1 */
119 int16_t ai; /* degradation factor indicator */
120} sbsfcorr_t;
121
122typedef struct { /* SBAS long term satellite error correction type */
123 gtime_t t0; /* correction time */
124 int iode; /* IODE (issue of date ephemeris) */
125 double dpos[3]; /* delta position (m) (ecef) */
126 double dvel[3]; /* delta velocity (m/s) (ecef) */
127 double daf0, daf1; /* delta clock-offset/drift (s,s/s) */
128} sbslcorr_t;
129
130typedef struct { /* SBAS satellite correction type */
131 int sat; /* satellite number */
132 sbsfcorr_t fcorr; /* fast correction */
133 sbslcorr_t lcorr; /* long term correction */
134} sbssatp_t;
135
136typedef struct { /* SBAS satellite corrections type */
137 int iodp; /* IODP (issue of date mask) */
138 int nsat; /* number of satellites */
139 int tlat; /* system latency (s) */
140 sbssatp_t sat[MAXSAT]; /* satellite correction */
141} sbssat_t;
142
143typedef struct { /* SBAS ionospheric correction type */
144 gtime_t t0; /* correction time */
145 int16_t lat, lon; /* latitude/longitude (deg) */
146 int16_t give; /* GIVI+1 */
147 float delay; /* vertical delay estimate (m) */
148} sbsigp_t;
149
150typedef struct { /* IGP band type */
151 int16_t x; /* longitude/latitude (deg) */
152 const int16_t* y; /* latitudes/longitudes (deg) */
153 uint8_t bits; /* IGP mask start bit */
154 uint8_t bite; /* IGP mask end bit */
156
157typedef struct { /* SBAS ionospheric corrections type */
158 int iodi; /* IODI (issue of date ionos corr) */
159 int nigp; /* number of igps */
160 sbsigp_t igp[MAXNIGP]; /* ionospheric correction */
161} sbsion_t;
162
163/*============================================================================
164 * DGPS / SSR / OSB Types
165 *===========================================================================*/
166
167typedef struct { /* DGPS/GNSS correction type */
168 gtime_t t0; /* correction time */
169 double prc; /* pseudorange correction (PRC) (m) */
170 double rrc; /* range rate correction (RRC) (m/s) */
171 int iod; /* issue of data (IOD) */
172 double udre; /* UDRE */
173} dgps_t;
174
175typedef struct { /* SSR correction type */
176 gtime_t t0[6]; /* epoch time (GPST) {eph,clk,hrclk,ura,bias,pbias} */
177 double udi[6]; /* SSR update interval (s) */
178 int iod[6]; /* iod ssr {eph,clk,hrclk,ura,bias,pbias} */
179 int iode; /* issue of data */
180 int iodcrc; /* issue of data crc for beidou/sbas */
181 int ura; /* URA indicator */
182 int refd; /* sat ref datum (0:ITRF,1:regional) */
183 double deph[3]; /* delta orbit {radial,along,cross} (m) */
184 double ddeph[3]; /* dot delta orbit {radial,along,cross} (m/s) */
185 double dclk[3]; /* delta clock {c0,c1,c2} (m,m/s,m/s^2) */
186 double hrclk; /* high-rate clock corection (m) */
187 float cbias[MAXCODE]; /* code biases (m) */
188 double pbias[MAXCODE]; /* phase biases (m) */
189 float stdpb[MAXCODE]; /* std-dev of phase biases (m) */
190 int vcbias[MAXCODE]; /* code biases valid flag (0:invalid, 1:valid) */
191 int vpbias[MAXCODE]; /* phase biases valid flag (0:invalid, 1:valid) */
192 int discnt[MAXCODE]; /* phase biases discontinuity counter */
193 double yaw_ang, yaw_rate; /* yaw angle and yaw rate (deg,deg/s) */
194 uint8_t update; /* update flag (0:no update,1:update) */
195 int vendor; /* vendor type(0:L6(MADOCA-PPP),1:RTCM3(JAXA-MADOCA)) */
196} ssr_t;
197
198typedef struct { /* stec data type */
199 gtime_t gt[2]; /* update time {satellite,station} */
200 char staname[10]; /* selected station */
201 double scb[MAXSAT][MAXCODE]; /* satellite code biases */
202 double spb[MAXSAT][MAXCODE]; /* satellite phase biases */
203 double rsyscb[MAXBSNXSYS][MAXCODE]; /* system code biases of each station */
204 double rsatcb[MAXSAT][MAXCODE]; /* satellite code biases of each station */
205 int vscb[MAXSAT][MAXCODE]; /* valid flag(0:invlalid,1:valid) */
206 int vspb[MAXSAT][MAXCODE]; /* valid flag(0:invlalid,1:valid) */
207 int vrsyscb[MAXBSNXSYS][MAXCODE]; /* valid flag(0:invlalid,1:valid) */
208 int vrsatcb[MAXSAT][MAXCODE]; /* valid flag(0:invlalid,1:valid) */
209} osb_t;
210
211/*============================================================================
212 * MADOCA-PPP L6D Ionospheric Correction Types
213 *===========================================================================*/
214
215typedef struct { /* MADOCA-PPP L6D STEC polynomial type */
216 gtime_t t0; /* correction time */
217 int sqi; /* SSR STEC quality indicator */
218 double coef[6]; /* STEC poly.coef. {C00,C01,C10,C11,C02,C20} */
220
221typedef struct { /* MADOCA-PPP L6D area type */
222 int avalid; /* 0:invalid, 1:valid */
223 int sid; /* shape ID {rectangle, circle} */
224 int type; /* STEC correction type */
225 double ref[2]; /* reference point {Lat., Lon.} */
226 double span[2]; /* rect.{Lat.,Lon.}, span{Effective range, N/A} */
227 miono_sat_t sat[MAXSAT]; /* satellite STEC polynomial coefficients */
229
230typedef struct { /* MADOCA-PPP L6D region type */
231 int rvalid; /* 0:invalid, 1:valid */
232 int ralert; /* region alert flag */
233 int narea; /* number of areas */
236
237typedef struct { /* PPP ionospheric correction data type */
238 gtime_t time; /* update time (GPST) */
239 gtime_t t0[MAXSAT]; /* correction time */
240 double dly[MAXSAT]; /* L1 slant delay (m) */
241 double std[MAXSAT]; /* L1 slant delay std (m) */
243
244typedef struct { /* PPP ionospheric correction type */
245 pppiono_corr_t corr; /* ionospheric correction data */
246 miono_region_t re[MIONO_MAX_RID]; /* MADOCA-PPP L6D regions */
247 int rid; /* MADOCA-PPP L6D region id */
248 int anum; /* MADOCA-PPP L6D area number */
249 int valid; /* PPP iono correction flag (0:invalid, 1:valid) */
250} pppiono_t;
251
252/*============================================================================
253 * Station Correction Types
254 *===========================================================================*/
255
256typedef struct { /* site type */
257 char name[8]; /* site name */
258 double ecef[3]; /* site position(ecef-x,y,z) [m] */
259} spos_t;
260
261typedef struct { /* ionospheric data type */
262 gtime_t time; /* time (GPST) */
263 unsigned char sat; /* satellite number */
264 double ion; /* slant ionos delay (m) */
265 double std; /* std-dev (m) */
266 double azel[2]; /* estimate azimuth/elevation (rad) */
267 unsigned char qflag; /* Q flag */
268 double ipp[3]; /* ionospheric pierce point(x,y,z) [m] */
269} ion_t;
270
271typedef struct { /* trop data type */
272 gtime_t time; /* time (GPST) */
273 double trp[3]; /* zenith tropos delay/gradient (m) */
274 double std[3]; /* std-dev (m) */
275 unsigned char qflag; /* Q flag */
276} trp_t;
277
278typedef struct { /* ppp corrections type */
279 spos_t site; /* site data */
280 ion_t iond[MAXSAT]; /* ionospheric data */
281} siteion_t;
282
283typedef struct { /* station stat corrections */
284 spos_t site; /* site data */
285 trp_t trpd; /* tropospheric data */
286} sitetrp_t;
287
288typedef struct { /* station stat corrections */
289 gtime_t time[MAXSITES]; /* time (GPST) */
290 int nsi, nst; /* number of stat corrections stations */
291 siteion_t sion[MAXSITES]; /* ionospheric corrections sites */
292 sitetrp_t strp[MAXSITES]; /* tropospheric corrections sites */
293} stat_t;
294
295typedef struct { /* single station stat corrections */
296 gtime_t time; /* time (GPST) */
297 siteion_t sion; /* ionospheric corrections site */
298 sitetrp_t strp; /* tropospheric corrections site */
299} sstat_t;
300
301/*============================================================================
302 * Local Combination Types
303 *===========================================================================*/
304
305typedef struct { /* local combination options */
306 gtime_t ts; /* start time */
307 gtime_t te; /* stop time */
308 int ni; /* number of iteration */
309 double maxres[MAX_REJ_SITES]; /* max residual */
310 double eratio; /* residual error ratio */
311 char* gridfile; /* input grid setting file name */
312 char* stafile; /* input station setting file name */
313 char* istfile; /* input stream setting file name (only lclcmbrt) */
314 char* infile; /* input file name */
315 char* outpath; /* output file path */
316 char* outlog; /* output log file name */
317 char* clogfile; /* output command log file name */
318} lclopt_t;
319
320typedef struct { /* block info type */
321 int btype; /* block type (0:grid,1:station) */
322 int bn; /* block number */
323 double bs; /* block size */
324 int gpitch; /* grid pitch (0:16grid,1:64grid) */
325 unsigned int mask[2]; /* grid mask */
326 int n; /* number of valid grid/station */
327 double bpos[3]; /* block base position {lat,lon,hgt} (rad,m) */
328 double grid[MAXTRPSTA][3]; /* grid/station position {lat,lon,hgt} (rad,m) */
329 int gp[MAXTRPSTA]; /* valid grid point index */
330} blkinf_t;
331
332typedef struct { /* block type */
333 double idist, tdist; /* distance (km) for interpolation threshold */
334 int extp; /* flag enable extrapolation check on planer fitting mode */
335 int interp; /* interpolation mode (0:planer fitting,1:weighted average of distance)*/
336 int inum, tnum; /* number of ionospheric/tropospheric correction data */
337 blkinf_t tblkinf[MAXBLK]; /* tropospheric block info */
338 blkinf_t iblkinf[MAXBLK]; /* ionospheric block info */
339 sitetrp_t tstat[MAXBLK][MAXTRPSTA]; /* tropospheric block correction data */
340 siteion_t istat[MAXBLK][MAXTRPSTA]; /* ionospheric block correction data */
341 int outin, outtn; /* ionospheric/trop output control */
342} lclblock_t;
343
344/*============================================================================
345 * ISB (Inter-System Bias) Types
346 *===========================================================================*/
347
348#define ISBOPT_OFF 0 /* ISB option: correction off */
349#define ISBOPT_TABLE 1 /* ISB option: table file */
350#define MAXRECTYP 100 /* max number of receiver types */
351#define PHASE_CYCLE (-0.25) /* default L2C 1/4 cycle phase shift */
352
353typedef struct { /* ISB data type */
354 char sta_name[20]; /* station/receiver name */
355 char sta_name_base[20]; /* base station/receiver name */
356 double gsb[NSYS][NFREQ][2]; /* ISB [sys][freq][0:phase,1:code] (m) */
357} isb_t;
358
359typedef struct { /* L2C phase shift table type */
360 int n; /* number of receiver types */
361 char rectyp[MAXRECTYP][MAXANT]; /* receiver type names */
362 double bias[MAXRECTYP]; /* phase shift bias (cycle) */
363} sft_t;
364
365/*============================================================================
366 * Station Parameter Type
367 *===========================================================================*/
368
369typedef struct { /* station parameter type */
370 char name[MAXANT]; /* marker name */
371 char marker[MAXANT]; /* marker number */
372 char antdes[MAXANT]; /* antenna descriptor */
373 char antsno[MAXANT]; /* antenna serial number */
374 char rectype[MAXANT]; /* receiver type descriptor */
375 char recver[MAXANT]; /* receiver firmware version */
376 char recsno[MAXANT]; /* receiver serial number */
377 int antsetup; /* antenna setup id */
378 int itrf; /* ITRF realization year */
379 int deltype; /* antenna delta type (0:enu,1:xyz) */
380 double pos[3]; /* station position (ecef) (m) */
381 double del[3]; /* antenna position delta (e/n/u or x/y/z) (m) */
382 double hgt; /* antenna height (m) */
383 int glo_cp_align; /* GLONASS code-phase alignment (0:no,1:yes) */
384 double glo_cp_bias[4]; /* GLONASS code-phase biases {1C,1P,2C,2P} (m) */
385 double isb[NSYS][NFREQ][2]; /* ISB corrections [sys][freq][0:phase,1:code] (m) */
386} sta_t;
387
388/*============================================================================
389 * Navigation Data Type (central aggregation)
390 *===========================================================================*/
391
392typedef struct nav_s { /* navigation data type */
393 int n, nmax; /* number of broadcast ephemeris */
394 int ng, ngmax; /* number of glonass ephemeris */
395 int ns, nsmax; /* number of sbas ephemeris */
396 int ne, nemax; /* number of precise ephemeris */
397 int nc, ncmax; /* number of precise clock */
398 int na, namax; /* number of almanac data */
399 int nt, ntmax; /* number of tec grid data */
400 eph_t* eph; /* GPS/QZS/GAL/BDS/IRN ephemeris */
401 eph_t* eph_prev; /* previous-IODE fallback (2*MAXSAT or NULL).
402 * When set, seleph() searches this array
403 * after eph[] for the requested IODE.
404 * Used by cssr2rtcm3 to avoid losing the
405 * old IODE when broadcast eph overwrites
406 * faster than CSSR SSR transitions. */
407 geph_t* geph; /* GLONASS ephemeris */
408 seph_t* seph; /* SBAS ephemeris */
409 peph_t* peph; /* precise ephemeris */
410 pclk_t* pclk; /* precise clock */
411 alm_t* alm; /* almanac data */
412 tec_t* tec; /* tec grid data */
413 erp_t erp; /* earth rotation parameters */
414 double utc_gps[8]; /* GPS delta-UTC parameters {A0,A1,Tot,WNt,dt_LS,WN_LSF,DN,dt_LSF} */
415 double utc_glo[8]; /* GLONASS UTC time parameters {tau_C,tau_GPS} */
416 double utc_gal[8]; /* Galileo UTC parameters */
417 double utc_qzs[8]; /* QZS UTC parameters */
418 double utc_cmp[8]; /* BeiDou UTC parameters */
419 double utc_irn[9]; /* IRNSS UTC parameters {A0,A1,Tot,...,dt_LSF,A2} */
420 double utc_sbs[4]; /* SBAS UTC parameters */
421 double ion_gps[8]; /* GPS iono model parameters {a0,a1,a2,a3,b0,b1,b2,b3} */
422 double ion_gal[4]; /* Galileo iono model parameters {ai0,ai1,ai2,0} */
423 double ion_qzs[8]; /* QZSS iono model parameters {a0,a1,a2,a3,b0,b1,b2,b3} */
424 double ion_cmp[8]; /* BeiDou iono model parameters {a0,a1,a2,a3,b0,b1,b2,b3} */
425 double ion_irn[8]; /* IRNSS iono model parameters {a0,a1,a2,a3,b0,b1,b2,b3} */
426 int glo_fcn[32]; /* GLONASS FCN + 8 */
427 double cbias[MAXSAT][3]; /* satellite DCB (0:P1-P2,1:P1-C1,2:P2-C2) (m) */
428 double rbias[MAXRCV][2][3]; /* receiver DCB (0:P1-P2,1:P1-C1,2:P2-C2) (m) */
429 double wlbias[MAXSAT]; /* wide-lane bias (cycle) */
430 pcv_t pcvs[MAXSAT]; /* satellite antenna pcv */
431 sbssat_t sbssat; /* SBAS satellite corrections */
432 sbsion_t sbsion[MAXBAND + 1]; /* SBAS ionosphere corrections */
433 dgps_t dgps[MAXSAT]; /* DGPS corrections */
434 ssr_t ssr_ch[SSR_CH_NUM][MAXSAT]; /* SSR corrections (per channel) */
435 int facility[SSR_CH_NUM]; /* L6 facility ID per channel */
436 int filreset; /* filter reset flag (facility change) */
437 int invtrop; /* inverse troposphere flag (0:estimate, 1:SSR trop valid) */
438 pppiono_t* pppiono; /* PPP ionospheric corrections (MADOCA-PPP L6D) (heap) */
439 void* clas_ctx; /* CLAS CSSR correction context (NULL if unused) */
440 stat_t stat; /* stat corrections */
441 osb_t osb; /* Observable-specific Signal Bias data */
442 char biapath[MAXSTRPATH]; /* bias sinex file path */
443 char fcbpath[MAXSTRPATH]; /* fcb file path */
444 char pr_biapath[MAXSTRPATH]; /* previous bias sinex file path */
445 char pr_fcbpath[MAXSTRPATH]; /* previous fcb file path */
446
447 /* ISB (Inter-System Bias) data */
448 isb_t* isb; /* ISB data array */
449 int ni, nimax; /* number of ISB data / allocated */
450 sft_t sfts; /* L2C phase shift table */
451 sta_t stas[MAXRCV]; /* station info with ISB corrections */
453
454/*============================================================================
455 * Satellite Number / System Functions
456 *===========================================================================*/
457
458/**
459 * @brief Convert satellite system+prn/slot number to satellite number.
460 * @param[in] sys Satellite system (SYS_GPS, SYS_GLO, ...)
461 * @param[in] prn Satellite prn/slot number
462 * @return Satellite number (0: error)
463 */
464int satno(int sys, int prn);
465
466/**
467 * @brief Convert satellite number to satellite system.
468 * @param[in] sat Satellite number (1-MAXSAT)
469 * @param[in,out] prn Satellite prn/slot number (NULL: no output)
470 * @return Satellite system (SYS_GPS, SYS_GLO, ...)
471 */
472int satsys(int sat, int* prn);
473
474/**
475 * @brief Convert satellite id to satellite number.
476 * @param[in] id Satellite id (nn, Gnn, Rnn, Enn, Jnn, Cnn, Inn or Snn)
477 * @return Satellite number (0: error)
478 */
479int satid2no(const char* id);
480
481/**
482 * @brief Convert satellite number to satellite id.
483 * @param[in] sat Satellite number
484 * @param[out] id Satellite id (Gnn, Rnn, Enn, Jnn, Cnn, Inn or nnn)
485 */
486void satno2id(int sat, char* id);
487
488/**
489 * @brief Convert satellite and obs code to carrier frequency.
490 * @param[in] sat Satellite number
491 * @param[in] code Obs code (CODE_???)
492 * @param[in] nav Navigation data for GLONASS (NULL: not used)
493 * @return Carrier frequency (Hz) (0.0: error)
494 */
495double sat2freq(int sat, uint8_t code, const nav_t* nav);
496
497/**
498 * @brief Distinguish BDS-2 from BDS-3.
499 * @param[in] sat Satellite number
500 * @param[out] prn PRN number (NULL: not output)
501 * @return Satellite system (SYS_CMP for BDS-3, SYS_BD2 for BDS-2)
502 */
503int satsys_bd2(int sat, int* prn);
504
505/**
506 * @brief Set the BDS-2 satellites in BeiDou PRN 1-18.
507 *
508 * Since the BeiDou PRN reassignment (2026-04-10 to 04-21) BDS-3 satellites are
509 * also on PRN 1-18. A PRN 1-18 is BDS-2 only when listed here; PRN >= 19 is
510 * always BDS-3. The setting is process-global and affects satsys_bd2(),
511 * satno(SYS_BD2, prn) and all their callers, including RINEX reading.
512 * @param[in] str Satellite list, e.g. "C09,C10" or "C01-C18" ("" or NULL: no BDS-2)
513 * @return Number of satellites set (-1: invalid list; no BDS-2 is set)
514 */
515int set_bds2prn(const char* str);
516
517/**
518 * @brief Test whether a BeiDou PRN is BDS-2 (see set_bds2prn()).
519 * @param[in] prn BeiDou PRN
520 * @return 1: BDS-2, 0: BDS-3 or out of range
521 */
522int is_bds2prn(int prn);
523
524/**
525 * @brief Set the BDS-3 IGSO satellites (excluded as PPP-AR reference satellite).
526 * @param[in] str Satellite list, e.g. "C06-C08" or "C38,C39,C40" ("" or NULL: C06-C08)
527 * @return Number of satellites set (-1: invalid list; the default C06-C08 is set)
528 */
529int set_bds3igso(const char* str);
530
531/**
532 * @brief Test whether a BeiDou PRN is listed as BDS-3 IGSO (see set_bds3igso()).
533 * @param[in] prn BeiDou PRN
534 * @return 1: listed, 0: not listed or out of range
535 */
536int is_bds3igso(int prn);
537
538/**
539 * @brief BeiDou generation of a PRN.
540 * @param[in] prn BeiDou PRN
541 * @return BDSGEN_2, BDSGEN_3, or 0 (invalid PRN)
542 */
543int bds_gen(int prn);
544
545/**
546 * @brief Convert frequency index to frequency number using obsdef table.
547 * @param[in] sys Satellite system (SYS_???)
548 * @param[in] freq_idx Frequency index (0,1,2,...)
549 * @return Frequency number (1,2,5,...) (0: error)
550 */
551int freq_idx2freq_num(int sys, int freq_idx);
552
553/**
554 * @brief Convert frequency number to frequency index using obsdef table.
555 * @param[in] sys Satellite system (SYS_???)
556 * @param[in] freq_num Frequency number (1,2,5,...)
557 * @return Frequency index (0,1,2,...) (-1: error)
558 */
559int freq_num2freq_idx(int sys, int freq_num);
560
561/**
562 * @brief Convert frequency number to frequency in Hz.
563 * @param[in] sys Satellite system (SYS_???)
564 * @param[in] freq_num Frequency number (1,2,5,...)
565 * @param[in] fcn GLONASS frequency channel number (-7..6)
566 * @return Frequency (Hz) (0.0: error)
567 */
568double freq_num2freq(int sys, int freq_num, int fcn);
569
570/**
571 * @brief Convert frequency number to antenna PCV index.
572 * @param[in] sys Satellite system (SYS_???)
573 * @param[in] freq_num Frequency number (1,2,5,...)
574 * @return Antenna PCV index (0..NFREQPCV-1) (NFREQPCV: error)
575 */
576int freq_num2ant_idx(int sys, int freq_num);
577
578/**
579 * @brief Convert frequency index to antenna PCV index.
580 * @param[in] sys Satellite system (SYS_???)
581 * @param[in] freq_idx Frequency index (0,1,2,...)
582 * @return Antenna PCV index (0..NFREQPCV-1) (NFREQPCV: error)
583 */
584int freq_idx2ant_idx(int sys, int freq_idx);
585
586/**
587 * @brief Rearrange obsdef table for a satellite system by frequency numbers.
588 * @param[in] sys Satellite system (SYS_???)
589 * @param[in] freq_nums Array of frequency numbers [MAXFREQ] (0=unused)
590 */
591void set_obsdef(int sys, const int* freq_nums);
592
593/**
594 * @brief Reset all obsdef tables to their pristine default frequency layout.
595 * @note #186: restores the full multi-band tables so a repeated/changed signal
596 * selection (e.g. an rtkrcv restart, or switching to correction=igs which
597 * skips apply_pppsig()) does not inherit a previously trimmed layout.
598 */
599void reset_obsdef(void);
600
601/**
602 * @brief Apply PPP signal selection options to obsdef tables.
603 * @param[in] pppsig Signal selection array [5]: GPS,QZS,GAL,BDS2,BDS3
604 */
605void apply_pppsig(const int* pppsig);
606
607/**
608 * @brief Apply the upstream claslib PPP-RTK observation slot layout.
609 */
611
612/*============================================================================
613 * Navigation Data I/O Functions
614 *===========================================================================*/
615
616/**
617 * @brief Unique ephemerides in navigation data.
618 * @param[in,out] nav Navigation data
619 */
620void uniqnav(nav_t* nav);
621
622/**
623 * @brief Read navigation data from file.
624 * @param[in] file File path
625 * @param[out] nav Navigation data
626 * @return Status (1:ok, 0:no file)
627 */
628int readnav(const char* file, nav_t* nav);
629
630/**
631 * @brief Save navigation data to file.
632 * @param[in] file File path
633 * @param[in] nav Navigation data
634 * @return Status (1:ok, 0:file open error)
635 */
636int savenav(const char* file, const nav_t* nav);
637
638/**
639 * @brief Free navigation data memory.
640 * @param[in,out] nav Navigation data
641 * @param[in] opt Option (0x01:eph, 0x02:geph, 0x04:seph,
642 * 0x08:peph, 0x10:pclk, 0x20:alm, 0x40:tec)
643 */
644void freenav(nav_t* nav, int opt);
645
646/*============================================================================
647 * Ephemeris and Clock Functions (nav_t-dependent)
648 *===========================================================================*/
649
650/**
651 * @brief Compute satellite position, velocity and clock.
652 * @param[in] time Time (GPST)
653 * @param[in] teph Time to select ephemeris (GPST)
654 * @param[in] sat Satellite number
655 * @param[in] ephopt Ephemeris option (EPHOPT_???)
656 * @param[in] nav Navigation data
657 * @param[out] rs Sat position and velocity (ecef) {x,y,z,vx,vy,vz} (m|m/s)
658 * @param[out] dts Sat clock {bias,drift} (s|s/s)
659 * @param[out] var Sat position and clock error variance (m^2)
660 * @param[out] svh Sat health flag (-1:correction not available)
661 * @return Status (1:ok, 0:error)
662 */
663int satpos(gtime_t time, gtime_t teph, int sat, int ephopt, const nav_t* nav, double* rs, double* dts, double* var,
664 int* svh);
665
666/**
667 * @brief Compute satellite positions, velocities and clocks.
668 * @param[in] teph Time to select ephemeris (GPST)
669 * @param[in] obs Observation data
670 * @param[in] n Number of observation data
671 * @param[in] nav Navigation data
672 * @param[in] ephopt Ephemeris option (EPHOPT_???)
673 * @param[out] rs Satellite positions and velocities (ecef)
674 * @param[out] dts Satellite clocks
675 * @param[out] var Sat position and clock error variances (m^2)
676 * @param[out] svh Sat health flag (-1:correction not available)
677 */
678void satposs(gtime_t teph, const obsd_t* obs, int n, const nav_t* nav, int ephopt, double* rs, double* dts, double* var,
679 int* svh);
680
681/**
682 * @brief Compute satellite position/clock with precise ephemeris/clock.
683 * @param[in] time Time (GPST)
684 * @param[in] sat Satellite number
685 * @param[in] nav Navigation data
686 * @param[in] opt Sat position option (0:center of mass, 1:antenna phase center)
687 * @param[out] rs Sat position and velocity (ecef) {x,y,z,vx,vy,vz} (m|m/s)
688 * @param[out] dts Sat clock {bias,drift} (s|s/s)
689 * @param[out] var Sat position and clock error variance (m^2) (NULL: no output)
690 * @return Status (1:ok, 0:error or data outage)
691 */
692int peph2pos(gtime_t time, int sat, const nav_t* nav, int opt, double* rs, double* dts, double* var);
693
694/**
695 * @brief Compute satellite antenna phase center offset in ecef.
696 * @param[in] time Time (GPST)
697 * @param[in] rs Satellite position and velocity (ecef) {x,y,z,vx,vy,vz} (m|m/s)
698 * @param[in] sat Satellite number
699 * @param[in] nav Navigation data
700 * @param[out] dant Satellite antenna phase center offset (ecef) {dx,dy,dz} (m)
701 */
702void satantoff(gtime_t time, const double* rs, int sat, const nav_t* nav, double* dant);
703
704/**
705 * @brief Read sp3 precise ephemeris file.
706 * @param[in] file SP3 precise ephemeris file (wild-card * expanded)
707 * @param[in,out] nav Navigation data
708 * @param[in] opt Options (1:only observed + 2:only predicted + 4:not combined)
709 */
710void readsp3(const char* file, nav_t* nav, int opt);
711
712/**
713 * @brief Read satellite antenna parameters.
714 * @param[in] file Antenna parameter file
715 * @param[in] time Time (GPST)
716 * @param[in,out] nav Navigation data
717 * @return Status (1:ok, 0:error)
718 */
719int readsap(const char* file, gtime_t time, nav_t* nav);
720
721/**
722 * @brief Read differential code bias (DCB) parameters.
723 * @param[in] file DCB parameters file (wild-card * expanded)
724 * @param[in,out] nav Navigation data
725 * @param[in] sta Station info data to import receiver DCB (NULL: no use)
726 * @return Status (1:ok, 0:error)
727 */
728int readdcb(const char* file, nav_t* nav, const sta_t* sta);
729
730/*============================================================================
731 * Satellite Exclusion
732 *===========================================================================*/
733
734/* Forward declaration to avoid circular dependency with mrtk_opt.h */
735struct prcopt_t;
736
737/**
738 * @brief Test excluded satellite.
739 * @param[in] sat Satellite number
740 * @param[in] var Variance of ephemeris (m^2)
741 * @param[in] svh SV health flag (-1: correction not available)
742 * @param[in] opt Processing options (NULL: not used)
743 * @return Status (1:excluded, 0:not excluded)
744 */
745int satexclude(int sat, double var, int svh, const struct prcopt_t* opt);
746
747#ifdef __cplusplus
748}
749#endif
750
751#endif /* MRTK_NAV_H */
#define MAXSAT
Definition mrtk_coords.c:45
MRTKLIB Broadcast Ephemeris Module — Satellite orbit/clock types and Kepler/GLONASS/SBAS orbit comput...
struct nav_s nav_t
Definition mrtk_eph.h:40
MRTKLIB Foundation — Common types, standard includes, and system constants (MAXSAT,...
#define MAXSTRPATH
#define NSYS
#define MAXRCV
#define MAXCODE
#define MAXANT
#define MAXBAND
#define MAXNIGP
#define MAXSITES
#define MAXTRPSTA
#define MIONO_MAX_ANUM
#define NFREQPCV
#define MAXBLK
#define MIONO_MAX_RID
#define SSR_CH_NUM
#define MAX_REJ_SITES
#define MAXBSNXSYS
int savenav(const char *file, const nav_t *nav)
Save navigation data to file.
Definition mrtk_nav.c:1058
void readsp3(const char *file, nav_t *nav, int opt)
Read sp3 precise ephemeris file.
Definition mrtk_peph.c:450
void satno2id(int sat, char *id)
Convert satellite number to satellite id.
Definition mrtk_nav.c:817
void apply_pppsig(const int *pppsig)
Apply PPP signal selection options to obsdef tables.
Definition mrtk_nav.c:539
int readnav(const char *file, nav_t *nav)
Read navigation data from file.
Definition mrtk_nav.c:985
int satsys(int sat, int *prn)
Convert satellite number to satellite system.
Definition mrtk_nav.c:117
void apply_claslib_ppprtk_obsdef(void)
Apply the upstream claslib PPP-RTK observation slot layout.
Definition mrtk_nav.c:635
int bds_gen(int prn)
BeiDou generation of a PRN.
Definition mrtk_nav.c:273
int freq_idx2ant_idx(int sys, int freq_idx)
Convert frequency index to antenna PCV index.
Definition mrtk_nav.c:743
int set_bds2prn(const char *str)
Set the BDS-2 satellites in BeiDou PRN 1-18.
Definition mrtk_nav.c:231
void set_obsdef(int sys, const int *freq_nums)
Rearrange obsdef table for a satellite system by frequency numbers.
Definition mrtk_nav.c:502
int readdcb(const char *file, nav_t *nav, const sta_t *sta)
Read differential code bias (DCB) parameters.
Definition mrtk_peph.c:583
int satpos(gtime_t time, gtime_t teph, int sat, int ephopt, const nav_t *nav, double *rs, double *dts, double *var, int *svh)
Compute satellite position, velocity and clock.
Definition mrtk_eph.c:891
int is_bds3igso(int prn)
Test whether a BeiDou PRN is listed as BDS-3 IGSO (see set_bds3igso()).
Definition mrtk_nav.c:267
int satno(int sys, int prn)
Convert satellite system+prn/slot number to satellite number.
Definition mrtk_nav.c:58
int set_bds3igso(const char *str)
Set the BDS-3 IGSO satellites (excluded as PPP-AR reference satellite).
Definition mrtk_nav.c:251
#define MAXRECTYP
Definition mrtk_nav.h:350
void uniqnav(nav_t *nav)
Unique ephemerides in navigation data.
Definition mrtk_nav.c:971
int freq_num2ant_idx(int sys, int freq_num)
Convert frequency number to antenna PCV index.
Definition mrtk_nav.c:710
int satid2no(const char *id)
Convert satellite id to satellite number.
Definition mrtk_nav.c:753
void satposs(gtime_t teph, const obsd_t *obs, int n, const nav_t *nav, int ephopt, double *rs, double *dts, double *var, int *svh)
Compute satellite positions, velocities and clocks.
Definition mrtk_eph.c:940
int satsys_bd2(int sat, int *prn)
Distinguish BDS-2 from BDS-3.
Definition mrtk_nav.c:159
double freq_num2freq(int sys, int freq_num, int fcn)
Convert frequency number to frequency in Hz.
Definition mrtk_nav.c:680
int satexclude(int sat, double var, int svh, const struct prcopt_t *opt)
Test excluded satellite.
Definition mrtk_nav.c:1169
void freenav(nav_t *nav, int opt)
Free navigation data memory.
Definition mrtk_nav.c:1118
int peph2pos(gtime_t time, int sat, const nav_t *nav, int opt, double *rs, double *dts, double *var)
Compute satellite position/clock with precise ephemeris/clock.
Definition mrtk_peph.c:864
int is_bds2prn(int prn)
Test whether a BeiDou PRN is BDS-2 (see set_bds2prn()).
Definition mrtk_nav.c:249
int readsap(const char *file, gtime_t time, nav_t *nav)
Read satellite antenna parameters.
Definition mrtk_peph.c:508
int freq_num2freq_idx(int sys, int freq_num)
Convert frequency number to frequency index using obsdef table.
Definition mrtk_nav.c:661
int freq_idx2freq_num(int sys, int freq_idx)
Convert frequency index to frequency number using obsdef table.
Definition mrtk_nav.c:649
void reset_obsdef(void)
Reset all obsdef tables to their pristine default frequency layout.
Definition mrtk_nav.c:483
void satantoff(gtime_t time, const double *rs, int sat, const nav_t *nav, double *dant)
Compute satellite antenna phase center offset in ecef.
Definition mrtk_peph.c:785
double sat2freq(int sat, uint8_t code, const nav_t *nav)
Convert satellite and obs code to carrier frequency.
Definition mrtk_obs.c:244
MRTKLIB Observation Module — Observation data types and utility functions.
MRTKLIB Precise Ephemeris Module — Earth rotation parameter types and ERP I/O functions.
MRTKLIB Time Module — GNSS time types and conversion functions.
GPS/GAL/QZS/BDS/IRN almanac type.
Definition mrtk_eph.h:49
double bpos[3]
Definition mrtk_nav.h:327
unsigned int mask[2]
Definition mrtk_nav.h:325
double bs
Definition mrtk_nav.h:323
int btype
Definition mrtk_nav.h:321
int gpitch
Definition mrtk_nav.h:324
double grid[MAXTRPSTA][3]
Definition mrtk_nav.h:328
int gp[MAXTRPSTA]
Definition mrtk_nav.h:329
gtime_t t0
Definition mrtk_nav.h:168
double prc
Definition mrtk_nav.h:169
int iod
Definition mrtk_nav.h:171
double rrc
Definition mrtk_nav.h:170
double udre
Definition mrtk_nav.h:172
GPS/GAL/QZS/BDS/IRN broadcast ephemeris type.
Definition mrtk_eph.h:77
ERP (earth rotation parameter) type.
Definition mrtk_peph.h:59
GLONASS broadcast ephemeris type.
Definition mrtk_eph.h:111
GNSS time representation.
Definition mrtk_time.h:49
unsigned char qflag
Definition mrtk_nav.h:267
gtime_t time
Definition mrtk_nav.h:262
double ipp[3]
Definition mrtk_nav.h:268
double ion
Definition mrtk_nav.h:264
unsigned char sat
Definition mrtk_nav.h:263
double std
Definition mrtk_nav.h:265
double azel[2]
Definition mrtk_nav.h:266
char sta_name[20]
Definition mrtk_nav.h:354
double gsb[NSYS][5][2]
Definition mrtk_nav.h:356
char sta_name_base[20]
Definition mrtk_nav.h:355
sitetrp_t tstat[MAXBLK][MAXTRPSTA]
Definition mrtk_nav.h:339
blkinf_t iblkinf[MAXBLK]
Definition mrtk_nav.h:338
siteion_t istat[MAXBLK][MAXTRPSTA]
Definition mrtk_nav.h:340
double idist
Definition mrtk_nav.h:333
blkinf_t tblkinf[MAXBLK]
Definition mrtk_nav.h:337
double tdist
Definition mrtk_nav.h:333
gtime_t ts
Definition mrtk_nav.h:306
char * infile
Definition mrtk_nav.h:314
double eratio
Definition mrtk_nav.h:310
char * outlog
Definition mrtk_nav.h:316
gtime_t te
Definition mrtk_nav.h:307
char * clogfile
Definition mrtk_nav.h:317
char * stafile
Definition mrtk_nav.h:312
char * outpath
Definition mrtk_nav.h:315
double maxres[MAX_REJ_SITES]
Definition mrtk_nav.h:309
char * istfile
Definition mrtk_nav.h:313
char * gridfile
Definition mrtk_nav.h:311
double span[2]
Definition mrtk_nav.h:226
miono_sat_t sat[MAXSAT]
Definition mrtk_nav.h:227
double ref[2]
Definition mrtk_nav.h:225
miono_area_t area[MIONO_MAX_ANUM]
Definition mrtk_nav.h:234
gtime_t t0
Definition mrtk_nav.h:216
double coef[6]
Definition mrtk_nav.h:218
int filreset
Definition mrtk_nav.h:436
int nt
Definition mrtk_nav.h:399
double rbias[MAXRCV][2][3]
Definition mrtk_nav.h:428
char fcbpath[MAXSTRPATH]
Definition mrtk_nav.h:443
tec_t * tec
Definition mrtk_nav.h:412
eph_t * eph_prev
Definition mrtk_nav.h:401
double wlbias[MAXSAT]
Definition mrtk_nav.h:429
pppiono_t * pppiono
Definition mrtk_nav.h:438
sta_t stas[MAXRCV]
Definition mrtk_nav.h:451
int ng
Definition mrtk_nav.h:394
int glo_fcn[32]
Definition mrtk_nav.h:426
int ni
Definition mrtk_nav.h:449
int nemax
Definition mrtk_nav.h:396
isb_t * isb
Definition mrtk_nav.h:448
sbssat_t sbssat
Definition mrtk_nav.h:431
sft_t sfts
Definition mrtk_nav.h:450
double utc_glo[8]
Definition mrtk_nav.h:415
double utc_qzs[8]
Definition mrtk_nav.h:417
seph_t * seph
Definition mrtk_nav.h:408
double ion_irn[8]
Definition mrtk_nav.h:425
int invtrop
Definition mrtk_nav.h:437
int na
Definition mrtk_nav.h:398
erp_t erp
Definition mrtk_nav.h:413
double utc_gal[8]
Definition mrtk_nav.h:416
void * clas_ctx
Definition mrtk_nav.h:439
double utc_gps[8]
Definition mrtk_nav.h:414
geph_t * geph
Definition mrtk_nav.h:407
double utc_cmp[8]
Definition mrtk_nav.h:418
double utc_sbs[4]
Definition mrtk_nav.h:420
double ion_cmp[8]
Definition mrtk_nav.h:424
dgps_t dgps[MAXSAT]
Definition mrtk_nav.h:433
sbsion_t sbsion[MAXBAND+1]
Definition mrtk_nav.h:432
int ntmax
Definition mrtk_nav.h:399
double cbias[MAXSAT][3]
Definition mrtk_nav.h:427
pclk_t * pclk
Definition mrtk_nav.h:410
int nimax
Definition mrtk_nav.h:449
pcv_t pcvs[MAXSAT]
Definition mrtk_nav.h:430
char pr_biapath[MAXSTRPATH]
Definition mrtk_nav.h:444
char biapath[MAXSTRPATH]
Definition mrtk_nav.h:442
peph_t * peph
Definition mrtk_nav.h:409
stat_t stat
Definition mrtk_nav.h:440
alm_t * alm
Definition mrtk_nav.h:411
double ion_gal[4]
Definition mrtk_nav.h:422
ssr_t ssr_ch[SSR_CH_NUM][MAXSAT]
Definition mrtk_nav.h:434
double utc_irn[9]
Definition mrtk_nav.h:419
int ncmax
Definition mrtk_nav.h:397
eph_t * eph
Definition mrtk_nav.h:400
int namax
Definition mrtk_nav.h:398
int nc
Definition mrtk_nav.h:397
int nsmax
Definition mrtk_nav.h:395
double ion_gps[8]
Definition mrtk_nav.h:421
int ngmax
Definition mrtk_nav.h:394
int nmax
Definition mrtk_nav.h:393
int ns
Definition mrtk_nav.h:395
int n
Definition mrtk_nav.h:393
osb_t osb
Definition mrtk_nav.h:441
double ion_qzs[8]
Definition mrtk_nav.h:423
int facility[SSR_CH_NUM]
Definition mrtk_nav.h:435
char pr_fcbpath[MAXSTRPATH]
Definition mrtk_nav.h:445
int ne
Definition mrtk_nav.h:396
Observation data record.
Definition mrtk_obs.h:44
gtime_t gt[2]
Definition mrtk_nav.h:199
char staname[10]
Definition mrtk_nav.h:200
double rsyscb[MAXBSNXSYS][MAXCODE]
Definition mrtk_nav.h:203
double scb[MAXSAT][MAXCODE]
Definition mrtk_nav.h:201
int vrsatcb[MAXSAT][MAXCODE]
Definition mrtk_nav.h:208
int vspb[MAXSAT][MAXCODE]
Definition mrtk_nav.h:206
int vscb[MAXSAT][MAXCODE]
Definition mrtk_nav.h:205
int vrsyscb[MAXBSNXSYS][MAXCODE]
Definition mrtk_nav.h:207
double spb[MAXSAT][MAXCODE]
Definition mrtk_nav.h:202
double rsatcb[MAXSAT][MAXCODE]
Definition mrtk_nav.h:204
int index
Definition mrtk_nav.h:77
double clk[MAXSAT][1]
Definition mrtk_nav.h:78
gtime_t time
Definition mrtk_nav.h:76
float std[MAXSAT][1]
Definition mrtk_nav.h:79
double var[NFREQPCV][19]
Definition mrtk_nav.h:51
gtime_t te
Definition mrtk_nav.h:49
gtime_t ts
Definition mrtk_nav.h:49
char type[MAXANT]
Definition mrtk_nav.h:47
double off[NFREQPCV][3]
Definition mrtk_nav.h:50
char code[MAXANT]
Definition mrtk_nav.h:48
int sat
Definition mrtk_nav.h:46
pcv_t * pcv
Definition mrtk_nav.h:57
int n
Definition mrtk_nav.h:56
int nmax
Definition mrtk_nav.h:56
float std[MAXSAT][4]
Definition mrtk_nav.h:68
double pos[MAXSAT][4]
Definition mrtk_nav.h:67
float vco[MAXSAT][3]
Definition mrtk_nav.h:72
double vel[MAXSAT][4]
Definition mrtk_nav.h:69
gtime_t time
Definition mrtk_nav.h:65
float cov[MAXSAT][3]
Definition mrtk_nav.h:71
int index
Definition mrtk_nav.h:66
float vst[MAXSAT][4]
Definition mrtk_nav.h:70
gtime_t time
Definition mrtk_nav.h:238
double std[MAXSAT]
Definition mrtk_nav.h:241
gtime_t t0[MAXSAT]
Definition mrtk_nav.h:239
double dly[MAXSAT]
Definition mrtk_nav.h:240
miono_region_t re[MIONO_MAX_RID]
Definition mrtk_nav.h:246
int valid
Definition mrtk_nav.h:249
pppiono_corr_t corr
Definition mrtk_nav.h:245
int nmax
Definition mrtk_nav.h:108
sbsmsg_t * msgs
Definition mrtk_nav.h:109
int n
Definition mrtk_nav.h:108
int16_t udre
Definition mrtk_nav.h:118
int16_t ai
Definition mrtk_nav.h:119
gtime_t t0
Definition mrtk_nav.h:113
double rrc
Definition mrtk_nav.h:115
double prc
Definition mrtk_nav.h:114
double dt
Definition mrtk_nav.h:116
int16_t lon
Definition mrtk_nav.h:145
float delay
Definition mrtk_nav.h:147
int16_t lat
Definition mrtk_nav.h:145
int16_t give
Definition mrtk_nav.h:146
gtime_t t0
Definition mrtk_nav.h:144
uint8_t bits
Definition mrtk_nav.h:153
int16_t x
Definition mrtk_nav.h:151
uint8_t bite
Definition mrtk_nav.h:154
const int16_t * y
Definition mrtk_nav.h:152
sbsigp_t igp[MAXNIGP]
Definition mrtk_nav.h:160
int nigp
Definition mrtk_nav.h:159
int iodi
Definition mrtk_nav.h:158
double dpos[3]
Definition mrtk_nav.h:125
double daf0
Definition mrtk_nav.h:127
double daf1
Definition mrtk_nav.h:127
gtime_t t0
Definition mrtk_nav.h:123
double dvel[3]
Definition mrtk_nav.h:126
int tow
Definition mrtk_nav.h:102
uint8_t msg[29]
Definition mrtk_nav.h:104
uint8_t prn
Definition mrtk_nav.h:103
uint8_t rcv
Definition mrtk_nav.h:103
int week
Definition mrtk_nav.h:102
sbssatp_t sat[MAXSAT]
Definition mrtk_nav.h:140
int tlat
Definition mrtk_nav.h:139
int iodp
Definition mrtk_nav.h:137
int nsat
Definition mrtk_nav.h:138
sbslcorr_t lcorr
Definition mrtk_nav.h:133
sbsfcorr_t fcorr
Definition mrtk_nav.h:132
SBAS ephemeris type.
Definition mrtk_eph.h:130
char rectyp[100][MAXANT]
Definition mrtk_nav.h:361
int n
Definition mrtk_nav.h:360
double bias[100]
Definition mrtk_nav.h:362
ion_t iond[MAXSAT]
Definition mrtk_nav.h:280
spos_t site
Definition mrtk_nav.h:279
trp_t trpd
Definition mrtk_nav.h:285
spos_t site
Definition mrtk_nav.h:284
double ecef[3]
Definition mrtk_nav.h:258
char name[8]
Definition mrtk_nav.h:257
double dclk[3]
Definition mrtk_nav.h:185
double ddeph[3]
Definition mrtk_nav.h:184
double hrclk
Definition mrtk_nav.h:186
gtime_t t0[6]
Definition mrtk_nav.h:176
int iod[6]
Definition mrtk_nav.h:178
uint8_t update
Definition mrtk_nav.h:194
int vpbias[MAXCODE]
Definition mrtk_nav.h:191
float stdpb[MAXCODE]
Definition mrtk_nav.h:189
double yaw_ang
Definition mrtk_nav.h:193
int iode
Definition mrtk_nav.h:179
double deph[3]
Definition mrtk_nav.h:183
int refd
Definition mrtk_nav.h:182
int vcbias[MAXCODE]
Definition mrtk_nav.h:190
double pbias[MAXCODE]
Definition mrtk_nav.h:188
float cbias[MAXCODE]
Definition mrtk_nav.h:187
int iodcrc
Definition mrtk_nav.h:180
double udi[6]
Definition mrtk_nav.h:177
int ura
Definition mrtk_nav.h:181
int vendor
Definition mrtk_nav.h:195
double yaw_rate
Definition mrtk_nav.h:193
int discnt[MAXCODE]
Definition mrtk_nav.h:192
siteion_t sion
Definition mrtk_nav.h:297
gtime_t time
Definition mrtk_nav.h:296
sitetrp_t strp
Definition mrtk_nav.h:298
int itrf
Definition mrtk_nav.h:378
double pos[3]
Definition mrtk_nav.h:380
char antsno[MAXANT]
Definition mrtk_nav.h:373
char recsno[MAXANT]
Definition mrtk_nav.h:376
int deltype
Definition mrtk_nav.h:379
char recver[MAXANT]
Definition mrtk_nav.h:375
double hgt
Definition mrtk_nav.h:382
double del[3]
Definition mrtk_nav.h:381
double isb[NSYS][5][2]
Definition mrtk_nav.h:385
char rectype[MAXANT]
Definition mrtk_nav.h:374
char name[MAXANT]
Definition mrtk_nav.h:370
int antsetup
Definition mrtk_nav.h:377
double glo_cp_bias[4]
Definition mrtk_nav.h:384
int glo_cp_align
Definition mrtk_nav.h:383
char marker[MAXANT]
Definition mrtk_nav.h:371
char antdes[MAXANT]
Definition mrtk_nav.h:372
siteion_t sion[MAXSITES]
Definition mrtk_nav.h:291
int nst
Definition mrtk_nav.h:290
sitetrp_t strp[MAXSITES]
Definition mrtk_nav.h:292
int nsi
Definition mrtk_nav.h:290
gtime_t time[MAXSITES]
Definition mrtk_nav.h:289
gtime_t time
Definition mrtk_nav.h:87
float * rms
Definition mrtk_nav.h:94
double hgts[3]
Definition mrtk_nav.h:92
int ndata[3]
Definition mrtk_nav.h:88
double lats[3]
Definition mrtk_nav.h:90
double rb
Definition mrtk_nav.h:89
double lons[3]
Definition mrtk_nav.h:91
double * data
Definition mrtk_nav.h:93
double std[3]
Definition mrtk_nav.h:274
double trp[3]
Definition mrtk_nav.h:273
gtime_t time
Definition mrtk_nav.h:272
unsigned char qflag
Definition mrtk_nav.h:275